探索BGE-M3和Splade:两种用于生成稀疏嵌入的机器学习模型

在我的上一篇文章中,我们探讨了信息检索技术从简单的关键词匹配到复杂上下文理解的演变,并引入了学习得到的稀疏嵌入的概念。这些巧妙的嵌入结合了密集检索和稀疏检索方法的优势。学习得到的稀疏嵌入解决了密集检索中普遍存在的跨域问题,并通过整合上下文信息增强了传统的稀疏方法。

鉴于学习得到的稀疏嵌入带来的诸多优势,你可能会好奇它们是由哪些模型生成的,以及它们是如何实现这一过程的。本文将聚焦于两种前沿的模型,它们用于构建这些嵌入:BGE-M3和Splade。我们将深入探讨它们的设计原理和背后的理念。

快速回顾向量嵌入

向量嵌入,或向量表示,是在高维向量空间中对对象、概念或实体的数值表示。每个实体通过一个由实数组成的向量表示,这些实数通常具有固定的长度,每个向量维度代表实体的一个独特属性或特征。通常有三种主要的嵌入类型:(传统的)稀疏嵌入、密集嵌入和“学习”稀疏嵌入。

传统的稀疏嵌入通常在语言处理中使用,具有高维度,其中许多维度包含零值。这些维度经常代表一个或多个语言中的不同令牌,非零值表示特定文档中该令牌的相对重要性。例如,由BM25算法生成的稀疏嵌入——通过添加术语频率饱和函数和长度规范化因子来改进TF-IDF方法——非常适合关键词匹配任务。

相比之下,密集嵌入具有较低的维度但信息丰富,所有维度都包含非零值。这些向量通常由BERT等模型生成,并用于语义搜索任务,在这些任务中,结果根据语义含义的接近程度而不是精确的关键词匹配进行排名。

“学习”得到的稀疏嵌入是一种高级的嵌入类型,它将传统稀疏嵌入的精确性与密集嵌入的语义丰富性结合起来。它们通过引入上下文信息来增强稀疏检索方法。像Splade和BGE-M3这样的机器学习模型生成学习得到的稀疏嵌入。它们能够学习到可能在文本中未明确出现的相关令牌的重要性,从而产生一个“学习”得到的稀疏表示,有效地捕捉到所有相关的关键字和类别。

查看这个分步指南,以获取有关使用向量数据库(如Milvus)执行稀疏或混合稀疏和密集向量搜索的更多信息。Enhancing Information Retrieval with Sparse Embeddings | Zilliz Learn - Zilliz blog

BERT:BGE-M3和Splade的基础模型

BGE-M3 和 Splade 模型都是基于BERT架构构建的。在深入探讨它们的功能之前,我们需要理解BERT的基础机制以及它是如何作为推进嵌入技术的基石的。让我们一起深入探索。

BERT,或双向编码表示从变换器,代表了自然语言处理(NLP)领域的一大飞跃。与传统模型仅按顺序处理文本(从左到右或从右到左)不同,BERT通过同时检查整个单词序列来捕获单词的上下文,而不仅仅是单向上下文。

BERT的核心在于其预训练过程,这不仅仅是一个例行程序,而是两种创新策略的结合:

掩码语言建模(MLM):这个任务随机隐藏输入的一部分令牌,并训练模型预测这些被隐藏的令牌。与以往的语言模型可能只理解单向上下文不同,BERT通过考虑整个句子的上下文(被隐藏的单词及其左右的单词)来填补空白。
下一个句子预测(NSP):在这个任务中,BERT学习预测一个句子是否逻辑上遵循另一个句子,这对于理解句子之间的关系至关重要,如段落结构中发现的那样。
BERT架构的一个核心特征是其自我注意力机制。transformer中的每个编码层使用自我注意力来评估解释特定单词时其他单词的重要性,从而在不同上下文中对单词意义有丰富的理解。

位置编码是另一个关键元素,它允许BERT理解单词的顺序,为原本位置无关的自我注意力过程添加了一种“序列”的概念。

BERT是如何工作的呢?

让我们请BERT将以下句子转化为嵌入表示。

用户查询:Milvus is a vector database built for scalable similarity search.

当我们向BERT提供查询时,过程如下展开:

分词:文本首先被分词为一系列单词片段。对于句子级别的任务,将[CLS]标记附加到输入的开头,而[SEP]标记被插入以分隔句子并指示句子的结束。
嵌入:每个标记通过使用类似于Word2Vec等模型的嵌入矩阵转换为向量。对这些标记嵌入添加位置嵌入以保留单词顺序的信息,而段落嵌入区分不同的句子。
编码器:这些向量通过多层编码器传递,每层由自我注意力机制和前馈神经网络组成。这些层迭代性地根据序列中所有其他标记提供的上下文来细化每个标记的表示。
输出:最终层输出一系列嵌入。通常,对于句子级别的任务,[CLS]标记的嵌入是整个输入的汇总表示。单个标记的嵌入用于细粒度任务,或者通过操作如最大或求和池化来形成单一的密集表示。
BERT生成的密集嵌入捕捉了单个单词的意义以及句子中单词之间的相互关系。这种方法在各种语言理解任务中证明了极大的成功,并在NLP基准测试中设立了新标准。

既然我们已经了解了BERT如何生成密集嵌入,让我们探索BGE-M3和Splade以及它们如何生成学习到的稀疏嵌入。

BGE-M3

BGE-M3是一种高级机器学习模型,它扩展了BERT的能力。它专注于通过多功能性、多语言性和多粒度增强文本表示。其设计不仅限于生成密集嵌入,还集成了生成学习到的稀疏嵌入的能力,这些嵌入在保持语义意义的同时兼顾词汇精确度,这一特性特别适用于获取微妙信息的检索,非常有用。

How does BGE-M3 work?

BGE-M3是如何工作来生成学习到的稀疏嵌入的?让我们使用上述的用户查询来说明这个过程。

生成这些学习到的稀疏嵌入始于与BERT相同的基础步骤——分词,并将输入文本编码为一系列上下文相关嵌入(H)。

然而,BGE-M3通过采用更精细的方法来捕捉每个词的重要性,从而创新了这一过程:

词重要性估算:与仅依赖[CLS]令牌表示(H[0])不同,BGE-M3对序列中每个令牌(H[i])的上下文相关嵌入进行评估。
线性变换:在编码器堆栈的输出后附加一个额外的线性层。该层计算每个令牌的重要性权重。通过将令牌嵌入通过这个线性层,BGE-M3得到一组权重(W_{lex})。
激活函数:应用了矩形线性单元(ReLU)激活函数到(W_{lex})和(H[i])的乘积上,以计算每个令牌的术语权重(w_{t})。使用ReLU确保术语权重为非负数,有助于嵌入的稀疏性。
学习稀疏嵌入:输出结果是一个稀疏嵌入,其中每个令牌与一个权重值关联,表明其在整个输入文本中的重要性。
这种表示增强了模型对语言细微差别的理解,并根据语义和词汇元素的双重重要性定制嵌入,适用于诸如大型数据库中的搜索和检索等任务。这是在处理和理解大量文本数据时更精确和高效机制的显著步骤。

SPLADE

SPLADE代表了生成学习到的稀疏嵌入的一种进化,基于BERT的基本架构,通过独特的策略来优化嵌入的稀疏性。为了理解这种策略,我们有必要回顾BERT训练机制的核心,即掩码语言模型(Masked Language Modeling,MLM)。

MLM是一种强大的无监督学习任务,它会隐藏输入序列中的一部分令牌,迫使模型仅通过上下文推断出隐藏的单词。这种技术丰富了模型的语言理解和对语言结构的意识,因为它依赖于相邻的令牌来填充空白,以实现准确的预测。

在实际应用中,对于预训练过程中每个被遮蔽的槽位,模型利用BERT的上下文嵌入(H[i])输出一个概率分布(w_i),其中(w_{ij})表示特定BERT词汇表令牌占据遮蔽位置的可能性。这个输出向量(w_i),其长度与BERT庞大的词汇表大小(通常为30,522个单词)相匹配,是优化模型预测的关键学习信号。

注意:图中的概率值是虚构的,但您会明白其概念。

SPLADE在编码阶段利用了MLM的强大功能。在进行初步分词并将文本转换为BERT嵌入后,SPLADE在所有令牌位置上应用MLM,计算出每个令牌对应BERT词汇表中每个单词的概率。接着,SPLADE对每个词汇表中的单词在所有位置上的这些概率进行聚合,并通过实现对数饱和效应来应用正则化方法,以促进稀疏性。最终得到的权重反映了每个词汇表单词对输入令牌的相关性,从而生成了一个学习到的稀疏向量。

SPLADE嵌入技术的一个显著优势是其固有的术语扩展能力。它能够识别并包含原始文本中不存在的相关术语。例如,在提供的示例中,“exploration”和“created”这样的术语出现在稀疏向量中,尽管它们并未出现在最初的句子中。值得注意的是,对于一个简短的输入如“milvus is a vector database built for scalable similarity search”,SPLADE能够通过扩展上下文来包含118个令牌,显著增强了检索任务中的确切术语匹配能力,并提高了模型的精度。

这一复杂的过程表明,SPLADE如何扩展了传统的BERT嵌入,赋予它们更高的粒度和对于诸如搜索和检索任务的实用价值,在这些任务中,术语相关性的广度和具体性至关重要。

总结

在这篇博客中,我们探索了向量嵌入的复杂世界,从传统的稀疏和密集形式到创新的学习稀疏嵌入。我们还研究了两个机器学习模型——BGE-M3和Splade——以及它们如何工作以生成学习到的稀疏嵌入。

使用这些复杂嵌入来细化搜索和检索系统的可能性,为开发直观且响应迅速的平台开辟了新的可能性。请继续关注未来的帖子,展示这些技术的实际应用和案例研究,展示它们对信息检索标准的影响,承诺重新定义信息检索标准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值