news 2026/4/15 11:08:59

如何为你的 RAG 找到最佳的多语言嵌入模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何为你的 RAG 找到最佳的多语言嵌入模型

原文:towardsdatascience.com/how-to-find-the-best-multilingual-embedding-model-for-your-rag-40325c308ebb

嵌入是捕获词语或句子语义意义的向量表示。除了拥有高质量的数据外,选择一个好的嵌入模型是优化你的 RAG 应用最重要的且被低估的步骤。多语言模型尤其具有挑战性,因为大多数都是在英语数据上预训练的。正确的嵌入会产生巨大的差异——不要只是抓住你看到的第一个模型!

语义空间决定了词语和概念之间的关系。准确的语义空间可以提高检索性能。不准确的嵌入会导致无关的信息块或缺失信息。更好的模型可以直接提高你的 RAG 系统的能力。

在这篇文章中,我们将从 PDF 文档中创建问答数据集,以找到最适合我们任务和语言的模型。在 RAG 过程中,如果检索到预期的答案,这意味着嵌入模型在语义空间中将问题和答案定位得足够接近。

虽然我们专注于法语和意大利语,但这个过程可以适应任何语言,因为最佳的嵌入可能不同。

嵌入模型

嵌入模型主要有两种类型:静态和动态。静态嵌入如 word2vec 为每个词生成一个向量。这些向量通常通过平均组合来创建最终的嵌入。这些类型的嵌入现在在生产中很少使用,因为它们没有考虑一个词的意义如何随着周围词语的变化而变化。

动态嵌入基于 BERT 等 Transformer,通过自注意力层引入上下文感知,允许它们根据周围上下文来表示词语。

大多数当前的微调模型使用对比学习。模型在训练期间通过看到正负文本对来学习语义相似性。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/562feb5034ad0bdb4951e008cc3be2be.png

优化嵌入空间的过程。图片由作者提供。

在一个准确的语义空间中,意义相似的词语和短语彼此靠近,而相互矛盾的词语则相距甚远。下面,你可以看到使用bge-base-en-v1.5-angle嵌入的句子的二维 PCA。原始嵌入有 768 个维度,PCA 将其减少到 2 个维度。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b37911e731a4c969417adb672bce6dfa.png

示例:2D PCA of Sentence Embeddings。图片由作者提供。

该图展示了语义空间如何将具有相关意义的句子组织在一起。

注意到句子“那辆新的跑车太酷了!”和“I feel sick”,这两个句子中的“sick”一词具有积极和消极的含义,它们被放置得很远。嵌入模型理解单词的意义来自周围上下文。

在 RAG 过程中,检索机制使用语义相似性来识别接近用户查询的文档。因此,一个不准确的语义空间会导致无关文档出现在查询附近,从而导致答案不佳。

预训练的 transformers 范围广泛,为探索许多可能的文本嵌入模型创造了可能。确定特定需求的最佳模型并不容易。

大规模文本嵌入基准(Massive Text Embedding Benchmark)

<…/Images/cbfd20f1457d3871d1e543007fe973a5.png>

MTEB 中任务和数据集的概述。多语言数据集用紫色阴影标记。[3]

大规模文本嵌入基准(MTEB)在 8 个任务和 58 个数据集上评估嵌入模型。其中 10 个数据集是多语言的,覆盖 112 种语言。任务包括双语语料库挖掘、分类、聚类、成对分类、重排序、检索、语义文本相似度(STS)和摘要。

我们只关注检索任务,因为它对 RAG 来说是最相关的。为了评估它,每个数据集都有一个语料库、查询和查询-文档映射。查询和语料库被嵌入以使用余弦相似性找到相关文档。

模型性能通过 10 个位置的归一化折现累积增益(nDCG@10)来衡量。这个指标考虑了相关文档在排名中的位置。我们不会过多地详细介绍 nDCG,但如果您想了解更多,我们推荐这篇深入的文章Demystifying nDCG。

不幸的是,最初的 MTEB 检索数据集仅限于英语。最近,一些数据集被添加到了波兰语和瑞典语,但多语言支持仍然有限[2]。

<…/Images/771760c3116fcff9f7c78d1850bd2a62.png>

MTEB 排行榜 [1]

我们将评估 MTEB 排行榜上当前的前 5 个多语言嵌入模型,与基线 Sentence Transformers 模型进行比较。这项分析将揭示哪些模型在法语和意大利语检索方面表现最佳,但您也可以轻松地为任何语言定制评估。

首先,让我们看看一些关键模型属性:序列长度和嵌入维度。序列长度指的是模型一次可以处理的令牌的最大数量。任何超过上下文窗口的内容都会被截断。嵌入维度指的是向量的大小。更大的向量可以捕捉到句子中的更多意义,但可能不太节省存储空间。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/8bff598c4c1ce2c5e288d654f4d5de8f.png

嵌入模型规格比较。图片由作者提供。

Cohere-embed-multilingual-v3.0 & light-v3.0

Cohere 提供了一种专有嵌入模型,通过 API 以每 1000 万个令牌 0.10 美元的价格提供,这与 ada-002 的价格相同。除了嵌入外,该模型在检索时可以通过评估查询与文档主题的匹配度来将最相关的文档排在顶部。他们还实施了压缩感知训练以提高存储效率[4]。

多语言 Cohere 模型的轻量版嵌入维度仅为 384 [7]。

intfloat/multilingual-e5-large

E5 模型系列使用弱监督和 CCPair 数据集进行对比训练[5]。该数据集通过从包括 Reddit、StackExchange、Wikipedia、科学论文、Common Crawl 和新闻文章在内的各种来源提取文本对而创建。作者编制了包含一个查询q和相应的段落p的文本对,如下所示。

<…/Images/3143b770ac011e096d9d49a619e887fe.png>

CCPairs (Colossal Clean text Pairs) [5]

text-embedding-3-large

OpenAI 声称这是他们性能最出色的模型,其多语言性能优于ada-002。一个有趣的改进是增加了将嵌入维度从 3072 降低到任意低维度的可能性。虽然较低维度与准确性成本权衡相关,但使用较小的嵌入可以提供在内存和存储需求上的有益节省[6]。

sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2

我们将此模型视为基线,因为它是从 Hugging Face 下载量最大的 Sentence Transformers 模型之一。

<…/Images/71c18983475c9cd5e747c96de323e7b0.png>

sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 下载次数 [8]

它基于 SBERT 架构,该架构引入了三重网络结构的概念。网络接受三个输入——一个锚点、一个正例和一个负例。然后,它被训练,使得锚点在嵌入空间中比负例更接近正例。

生成 QA 对

为了尽可能减少语言之间的偏差,我们选择的文档是 2023 年欧洲学期国家报告中的法国和意大利报告[9]。它们具有相同数量的页面和非常相似的结构,是欧洲委员会的官方报告。

我们将语料库中的每个文本块作为上下文提供给 GPT-3.5-turbo,并提示它根据该上下文生成一个问题。当提示和期望的响应都在同一语言时,LLMs 通常响应更准确,因此我将提示翻译成了意大利语和法语。

prompt_it=""" Le informazioni sul contesto sono riportate di seguito. --------------------- {context_str} --------------------- Date le informazioni sul contesto e non le conoscenze pregresse. generare solo domande basate sulla domanda seguente. Siete un insegnante/professore. Il vostro compito è quello di impostare {num_questions_per_chunk} per un prossimo quiz. Le domande devono essere di natura diversa nel documento. Limitare le domande alle informazioni di contesto fornite. Le domande devono essere in italiano." """prompt_fr=""" Les informations contextuelles se trouvent ci-dessous. --------------------- {context_str} --------------------- Compte tenu des informations contextuelles et sans connaissances préalables, générer uniquement des questions basées sur la requête ci-dessous. Vous êtes enseignant/professeur. Votre tâche consiste à mettre en place {num_questions_per_chunk} pour un quiz à venir. Les questions doivent être de nature variée sur l'ensemble du document. Limitez les questions aux informations contextuelles fournies. Les questions doivent être en français." """

我们已经将文本分割成 1000 个字符的块,并将它们摄入节点中,因此现在我们直接创建数据集。

fr_dataset=generate_qa_embedding_pairs(llm=OpenAI(model="gpt-3.5-turbo"),nodes=fr_nodes,qa_generate_prompt_tmpl=prompt_fr)fr_dataset.save_json("fr_dataset.json")it_dataset=generate_qa_embedding_pairs(llm=OpenAI(model="gpt-3.5-turbo"),nodes=it_nodes,qa_generate_prompt_tmpl=prompt_it)it_dataset.save_json("it_dataset.json")

结果数据集有 4 个键:queries(查询)、corpus(语料库)、relevant_docs(相关文档)和 mode(模式)等于text。每个查询 ID 都有一个相关文档节点 ID。这是一个来自意大利数据集的查询及其对应的文本片段的示例。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/c17736c2e4a51deb6d27f0d28e6756f7.png

来自意大利数据集的第一个查询。图片由作者提供。

评估指标

我们将检索前 5 个文档,并使用命中率(Hit Rate)和 MRR 来评估它们的相关性。命中率检查预期的相关文档是否在前 5 个中。因此,整体值将是具有命中的查询比例。

MRR 是通过找到相关文档的排名的倒数(1/rank)来计算的。如果找不到相关文档,则该查询的 MRR 为 0。最终的 MRR 将是每个查询计算出的 MRR 值的平均值。

模型性能

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/2f4ace59d30a223d2e6f56eeea125d76.png

模型性能。图片由作者提供。

OpenAI 的最新模型取得了最高分,这是预期的,因为它也是 MTEB 基准测试上表现最好的多语言模型。第二名被 Cohere 的另一个专有系统获得。它们的正常版本和轻量版本在法语数据集上结果相似,但在意大利数据集上,正常版本的表现远超轻量版本。

我们还尝试将text-embedding-3-large的嵌入减少到 256,考虑到其小的维度,性能相当令人印象深刻。

OpenAI 的另一个嵌入模型ada-002的得分远低于其最新版本,这表明更新带来了令人印象深刻的改进。

Intfloat 的开源multilingual-e5-large是最好的开源模型,在意大利数据集上的得分比在法语数据集上高得多。

paraphrase-multilingual-MiniLM-L12-v2的结果令人失望。虽然它非常快,但我们希望它能有更好的性能。

结论

MTEB 排行榜为评估多语言模型提供了一个良好的初始基准。然而,为了提高检索效果,最好根据您的需求定制评估。

正如我们所见,模型性能在不同语言之间差异很大。这就是为什么拥有一个系统来快速评估使用自己的文档嵌入模型很重要的原因。

. . .

如果您喜欢这篇文章,请加入*文本生成** – 我们的时事通讯每周有两篇关于生成式 AI 和大型语言模型的最新见解的文章。*

您可以在GitHub上找到这个项目的完整代码。

您也可以在LinkedIn上找到我。

. . .

参考文献

  1. huggingface.co/spaces/mteb/leaderboard

  2. github.com/embeddings-benchmark/mteb?tab=readme-ov-file

  3. MTEB:大规模文本嵌入基准

  4. txt.cohere.com/introducing-embed-v3/

  5. huggingface.co/intfloat/multilingual-e5-large

  6. 新的和改进的嵌入模型

  7. huggingface.co/Cohere/Cohere-embed-multilingual-light-v3.0

  8. huggingface.co/sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2

  9. 2023 年欧洲学期国家报告

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 2:35:01

7个实用的数据挖掘模型和技巧,强烈推荐!

数据分析是通过分析原始数据提取有意义见解的过程&#xff0c;这一过程包括使用分析和统计工具对数据进行检查、清洗、转换和建模&#xff0c;最终提炼出有价值的信息。这些信息用于确定业务决策——比如何时推出营销活动最合适&#xff1f;哪些客户群体最可能购买新产品&#…

作者头像 李华
网站建设 2026/4/12 2:40:30

MyBatis框架的优缺点

MyBatis框架的优缺点 一、MyBatis的核心优点 MyBatis的成功在于它在SQL控制力和开发效率之间找到了一个极佳的平衡点。 优点具体说明与价值1. SQL与代码解耦&#xff0c;灵活可控核心优势。SQL被独立写在XML文件或注解中&#xff0c;与Java代码分离。 • 利于维护&#xff1…

作者头像 李华
网站建设 2026/4/14 12:37:31

微信小程序帅帅音乐播放器网站系统有论文

文章目录具体实现截图主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 本系统&#xff08;程序源码数据库调试部署讲解&#xff09;带文档1万…

作者头像 李华
网站建设 2026/4/12 4:53:51

彻底搞懂YOLOv2模型!

0 前言在上一篇文章中&#xff0c;我们学习了YOLOv1模型&#xff0c;YOLOv1将图像划分为7749个网格&#xff0c;每个网格只会预测两个预测框&#xff0c;而且这两个预测框预测的类别是共享的。虽然YOLOv1单阶段检测与两阶段相比是极具创新性的&#xff0c;但是其依然存在一些问…

作者头像 李华
网站建设 2026/4/12 18:49:19

零基础学网络安全 / 黑客:超详细入门教程,看完这一篇直接通关

一、什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…

作者头像 李华