本文来源公众号“Coggle数据科学”,仅用于学术分享,侵权删,干货满满。
原文链接:RAG编码模型对比:谁与OpenAI最为相似?
在设计检索增强型生成(RAG)系统时,选择嵌入模型是一个关键步骤。鉴于可选模型很多,识别相似模型可以帮助进行模型选择。
Beyond Benchmarks: Evaluating Embedding Model Similarity for Retrieval Augmented Generation Systems
https://ceur-ws.org/Vol-3784/short4.pdf
论文评估了RAG系统中嵌入模型的相似性。评估分为两个方面:首先,使用中心化核对齐(Centered Kernel Alignment)在成对级别上比较嵌入;其次,由于这对RAG系统特别相关,评估这些模型之间检索结果的相似性,使用Jaccard相似度和排名相似度。
作者比较了不同家族的嵌入模型,包括专有模型,在流行的基准信息检索(BEIR)的五个数据集上进行。通过实验,作者识别出了与模型家族相对应的模型集群。
为什么说编码模型是RAG的核心?
检索增强型生成(RAG)是一种新兴的范式,它通过为大型语言模型(LLMs)提供外部非参数知识源(例如文档语料库)来帮助减轻事实幻觉和过时训练数据的问题。
RAG框架的核心是检索步骤,即从文档语料库中检索出与输入查询或提示相关的一小部分候选文档。这个检索过程,被称为密集检索,依赖于文本嵌入。通常,这些嵌入的生成是分配给LLM的,由于该领域的快速发展,有多种选择。
因此从可用选项中选择最合适的嵌入模型成为RAG系统开发中的关键方面。目前指导这一选择的信息主要限于架构细节(由于封闭模型的普遍性,这些细节有时也很稀缺)和性能基准测试,如大规模文本嵌入基准(MTEB)。
如何比较编码模型的「相似度」?
接下来介绍评估嵌入模型相似性的两种方法。第一种方法直接比较模型生成的文本块的嵌入。第二种方法特别针对RAG(检索增强型生成)环境,评估给定查询的检索结果的相似性。
嵌入相似性
选择中心核对齐(Centered Kernel Alignment, CKA)和线性核作为我们的相似性度量。这个度量在两个步骤中计算两组嵌入之间的相似性。
首先,对于一组嵌入,使用核函数计算该集合内所有条目的成对相似性分数。因此,结果相似性矩阵的第k行包含了嵌入k与所有其他嵌入(包括它自己)之间的相似性分数。
CKA是一种无监督的度量方法,可以处理不同模型生成的嵌入,即使它们的维度不完全相同。
检索结果相似性
当使用不同的嵌入模型时,对于给定查询检索到的文本块的相似性。虽然成对比较嵌入可以提供模型学习到的表示的相似性见解,但这不足以量化当这些嵌入模型被用于特定任务时结果的相似性。
首先,对于给定的数据集,使用每个嵌入模型为查询和文档块生成嵌入。然后,对于特定查询,根据余弦相似性检索最相似的𝑘个嵌入。为一对模型导出检索到的块集合C和C'。为了测量这些集合的相似性,可使用Jaccard相似系数。
实验与结果
实验设置
-
实验数据集
作者从BEIR基准测试中选择了五个公开可用的数据集。考虑到为大型数据集生成嵌入是一个耗时的过程,尤其是对于大量模型,作者选择了基准测试中较小的五个数据集。这种方法允许作者比较由多种模型生成的嵌入,同时也允许跨数据集评估嵌入相似性。
数据集的概览显示在表1中。对于每个数据集,作者将文档分割成文本块,每个块包含256个令牌。
-
实验模型
-
选择了两个来自OpenAI的高性能专有模型(text-embedding-3-large和-small)和一个来自Cohere的模型(Cohere embedenglish-v3.0)
-
选择SFR-Embedding-Mistral(Mistral)作为实验时排行榜上表现最好的模型
-
实验结果
(1)家族内和跨家族集群
使用CKA直接比较嵌入显示大多数模型之间的相似性很高,尽管存在一些差异。这些分数允许我们识别某些模型集群。
从跨家族的角度来看,我们观察到bge和gte模型之间的相似性很高。对于这两个家族中的一些模型,有趣的是,最高的相似性分数与具有匹配嵌入维度的跨家族对应模型相关,而不是与同一家族中的模型相关。
gte-small与bge-small的相似性最高,gte-base与bge-base的相似性最高。另一方面,gte-large与bge-base的相似性略高于bge-large,因此与嵌入维度较低的模型相似性更高。另一个跨家族集群由三个总体上CKA分数最高的模型组成,即UAE、mxbai和bge-large。
图3展示了NFCorpus上Jaccard相似性随k值的演变。第一个图表显示了bge-large与所有其他模型之间的Jaccard分数,而第二个图表展示了gte-large的分数。对于极低的k值,我们观察到几乎所有模型都出现了一些高峰,随后相似性显著下降。当然,对于较大的k值,分数趋于一致。
从实际角度来看,小k值的检索相似性最感兴趣。作者特别关注了top-10的Jaccard相似性。图4-6显示了跨数据集的模型间的top-10 Jaccard相似性。一个显著的发现是,即使是最相似的模型,报告的Jaccard相似性也仅高于0.6,大多数低于0.5。
(2)开源
CKA分数表明,OpenAI的模型(text-embedding-3-large/-small)生成的嵌入与Mistral生成的嵌入高度相似,而Cohere模型(embed-english-v3.0)与e5-large-v2显示出高相似性。
对于Cohere模型,虽然Mistral在所有数据集上对于较大的k值仍然是与OpenAI模型最相似的模型,但并没有一个一致的最相似模型对应于Cohere。
在更仔细地查看top-10相似性时,Mistral仍然在很大程度上表现出与OpenAI模型的最高相似性,特别是与text-embedding-3-large。对于text-embedding-3-small,所有数据集上的分数与其他模型相当接近。
实验结果分析
-
对于小k值,检索相似性变化较大,这在实际应用中最为重要。即使CKA分数很高,top-10检索的低Jaccard相似性分数表明检索到的文本块重叠很少。
-
即使直接比较时嵌入看起来相当相似,检索性能仍可能有很大差异,对于常用于RAG系统的k值最不稳定,并且也依赖于数据集。小k值检索的块重叠最少,导致呈现给LLM作为额外上下文的数据差异很大。
-
尽管模型通常与同一家族的模型最相似,但跨家族集群确实存在。最突出的是bge-large-en-v1.5、UAE-Large-V1和mxbai-embed-large-v1。
-
SFR-Embedding-Mistral作为与OpenAI嵌入模型最相似的模型,但对于较大的数据集,top-10的Jaccard相似性显示检索到的文本块重叠很低。此外,对于Cohere的嵌入模型,作者无法找到一个最相似的模型。
THE END !
文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。