跳到主要内容

多语言 RAG 检索鸿沟:为什么跨语言查询会悄无声息地破坏你的向量搜索

· 阅读需 14 分钟
Tian Pan
Software Engineer

一个团队构建了一个 RAG 系统。英语检索召回率达到了 94%。他们发布了产品。三个月后,来自法国和德国用户的支持工单堆积如山——聊天机器人不断返回无关结果或根本没有结果。工程师们查看他们的监控仪表盘。整体召回率:91%。看起来一切正常。

语料库是英语。嵌入模型(Embedding model)仅支持英语。用户则不然。每一个法语查询都被嵌入到一个向量空间中,而这个空间的设计初衷从未考虑过与它所检索的英语文档共享坐标。余弦相似度并不低——但它们在几何上毫无意义。而且因为聚合指标掩盖了分布问题,在用户大声抱怨之前,这个问题是不可见的。

这就是多语言 RAG 检索差距,也是服务于非英语受众的生产级 AI 系统中最常见的静默失败模式之一。

为什么单语言嵌入在跨语言场景下会失效

嵌入模型学习在多维向量空间中将语义相似的文本放置在彼此靠近的位置。该空间的几何结构——哪些方向代表什么含义,概念之间的距离有多远——完全由训练数据决定。在英语上训练,模型就会构建出一套英语的几何结构。

当你针对法语训练一个单独的嵌入模型时,它会构建一套法语的几何结构。两者的维度并不对应。英语中 "bank"(金融机构)的向量可能指向空间的第 42 个方向。而法语中 "banque" 的向量可能指向第 189 个方向。计算这两个向量之间的余弦相似度并不能衡量语义重叠——它衡量的是两个在无关坐标系中任意取向的轴之间的角度。

这不是一个质量规模(scale-of-quality)的问题。你无法通过使用更大的英语嵌入模型、增加更多英语训练数据或针对特定领域内容进行微调来解决它。向量空间在结构上是不对齐的。由单语言英语模型嵌入的法语查询会生成一个向量,你的检索系统会自信但错误地将其与英语文档嵌入进行比较。

实际后果是:一个讲法语的用户针对英语医学语料库询问 "quels sont les risques du diabète de type 2?"(2 型糖尿病的风险有哪些?),可能会检索到关于糖尿病风险因素的文档——也可能检索到完全无关的关于金融风险的文档,因为法语的嵌入恰好位于英语金融内容集群的附近。系统不会抛出错误。它会返回具有高相似度分数的结果并继续运行。

两种主要的补救策略

当你意识到存在跨语言不匹配问题时,存在两类解决方案:让检索系统原生理解多种语言,或者先将所有内容翻译成统一的语言。

跨语言嵌入模型

对于服务于多种语言的系统,最简洁的解决方案是将单语言嵌入替换为专门训练的模型,以便在单个共享向量空间中对齐多种语言。核心架构要求是,无论 "bank" 和 "banque" 来自哪种语言,都应该落在向量空间的大致相同区域。

LaBSE(语言无关的 BERT 句子嵌入)是首批大规模实现这一目标的模型之一,它通过在平行文本数据上进行翻译排名任务的训练,支持 100 多种语言。其核心见解是结合使用多语言掩码语言建模(masked language modeling)和翻译语言建模——模型在此过程中观察跨语言的对应句对,并学习对齐它们的表示。在涵盖 112 种语言的 Tatoeba 检索基准测试中,LaBSE 达到了 83.7% 的 P@1 检索准确率,而早期方法仅为 65.5%。与之前的基准相比,它减少了大约 80% 的训练数据需求。LaBSE 专门针对寻找翻译对进行了优化,这使得它在双语语料挖掘(bitext mining)方面表现出色,但在通用的语义相似度任务上表现稍弱。

mE5(多语言 E5)采取了更通用的方法:在 10 亿个多语言文本对上进行训练,并结合了难负样本(hard negatives)和来自交叉编码器重排序器(cross-encoder rerankers)的知识蒸馏。其大型变体(large variant)在涵盖 16 种语言的 MIRACL 多语言检索基准测试中达到了 94.6% 的 Recall@100,以及 66.5 的 nDCG@10——显著高于早期模型如 mDPR(41.5 nDCG@10)。其指令型变体(instruct variant)增加了 50 万个由 GPT 生成的、涵盖 93 种语言的合成训练样本,进一步提升了对不常用语言和检索任务类型的零样本泛化能力。

BGE-M3(2024 年)是目前大多数生产用例的领先模型。它的显著特点是在单个模型中结合了三种检索模式:稠密检索(通过 CLS 标记实现的语义向量)、多向量检索(类似 ColBERT 的逐标记表示)和稀疏检索(类似于 BM25 的学习词权重)。它支持 100 多种语言,上下文窗口高达 8192 个标记(token),在 MTEB 多语言排行榜上取得了约 63.0 的分数。在 MLDR 长文档检索基准测试中,其稀疏检索模式的得分比单纯的稠密检索高出约 10 个 nDCG@10 分点;混合组合(稠密 + 稀疏)则带来了额外的增益。实际意义在于:即使你最初只使用稠密组件,BGE-M3 也为你提供了一条通往混合检索的路径,而无需更换嵌入模型。

作为参考,目前 MTEB 多语言排行榜上的顶级选手(2026 年初)包括 NVIDIA Llama-Embed-Nemotron-8B(完全免费、开放权重)、Cohere embed-v4 得分为 65.2、OpenAI text-embedding-3-large 得分为 64.6,以及 BGE-M3 得分为 63.0。

检索路径中的翻译方法

如果你只有一两个语言对、较小的语料库,或者不希望替换现有的单语言嵌入(embedding)流水线,那么基于翻译的方法值得考虑。

查询翻译(在嵌入之前将用户的查询翻译成语料库的语言)是阻力最小的选择。你的嵌入模型和索引保持不变。根据所使用的机器翻译(MT)模型,每个查询的延迟成本在 15–40 ms 之间。其关键的失效模式是领域特定术语:例如将 "quantum tunneling"(量子隧穿)错误地翻译为 "quantum digging"(量子挖掘),这会无声无息地破坏这些查询的检索,且没有任何错误信号——系统只是返回了错误的结果。一种缓解措施是根据置信度分数(COMET 评分是实际的标准)来控制翻译:如果翻译模型报告低置信度,则回退到使用跨语言模型对原始查询进行嵌入。

语料库翻译(离线将所有文档翻译成每种支持的语言)通常比查询翻译能产生更好的检索质量,因为较长的文档包含更多机器翻译模型可以利用的上下文。其代价是基础设施复杂度的成倍增加:一个 10 种语言的语料库需要每份文档的 9 个翻译副本,此外每次语料库更新时 w 均需要运行重新翻译流水线。

混合架构——多语言密集嵌入加上翻译查询的稀疏检索——可以让你同时获得两者的召回优势,而无需完全转向其中一种。查询翻译用于 BM25 式的词法匹配;跨语言嵌入用于语义匹配;最后合并评分。对于既需要高召回率又需要低延迟的生产系统,这正日益成为一种主流的架构模式。

生产环境中的隐性退化问题

跨语言检索失败最危险的特性在于它们不会产生任何错误。嵌入函数正常运行,向量数据库返回结果,大语言模型(LLM)生成响应。每个组件都报告成功。然而,非英语用户接收到的响应却是基于无关或空洞上下文生成的。

聚合指标(Aggregate metrics)在这里是敌人。一个整体检索准确率为 92% 的系统,可能在英语上表现为 97%,在西班牙语上表现为 89%,而在韩语上仅为 71%。聚合数字看起来不错,但韩语用户的体验却是崩溃的。

除了核心的嵌入问题,几种额外的生产失效模式也会加剧这一问题:

  • 翻译错误传播:当流水线中包含查询翻译时,单个机器翻译错误就可能导致该查询的检索完全落空。与嵌入失效(会产生低相关性结果)不同,糟糕的翻译可能会产生看起来合理但错误的匹配——检索系统会自信地返回错误的文档。
  • 模型更新退化:升级嵌入模型通常会提高整体性能,但会导致特定语言的表现退化。一个将英语 nDCG@10 提升 3 个点的模型,可能会让韩语的 nDCG@10 降低 5 个点。如果没有语言维度的跟踪,你就会发布这个带有退化的版本。
  • 生成质量下降:即使跨语言检索部分奏效(返回了一些相关文档),LLM 在根据非英语上下文生成答案时,表现往往较差。混合语言上下文(英语查询 + 德语检索文档)会导致性能进一步下降。检索差距会复合演变为生成差距。

在用户报告问题之前进行分语言评估

解决方案是从构建系统之初就按语言拆解评估指标,而不是在第一次线上问题反馈之后。

构建一个检索评估数据集,其中包括每种支持语言的查询以及已知的相关文档。分别为每种语言计算 nDCG@10、MRR 和 Recall@k。监控每种语言的退化情况,而不是看整体。当任何单一语言的指标在模型版本更迭或索引更新之间下降超过 3 个点时,自动触发告警。

实用的核对清单:

  • 查询语言分布:在实际查询日志中加入语言识别(language identification)。了解用户实际使用的查询语言,并构建反映该分布的评估集。
  • 跨语言对覆盖率:对于用户查询的每种语言以及语料库中的每种语言,至少拥有一组基准真值(ground-truth)相关性判定样本。即使每个语言对只有 100 个查询-文档对,也足以捕捉到严重的性能退化。
  • 翻译质量监控:如果你正在使用查询翻译,请将 COMET 分数作为一项运营指标进行跟踪。某种语言的平均翻译置信度突然下降,通常预示着机器翻译模型出现了问题或出现了新的领域漂移。
  • 拆解后的仪表盘:永远不要只向负责检索质量的团队展示聚合后的召回率。聚合数据恰恰会在你需要准确信号时向你“撒谎”。

The MIRACL benchmark(18 种语言、5 人年的标注工作量、72.6 万条相关性判定)和 MMTEB 排行榜(250 多种语言、500 多个评估任务)是离线评估的金标准。在决定切换到生产环境之前,它们提供了对比嵌入模型的具体数据。

如何选择不同的方法

决策树其实比选项数量所显示的要简单:

在以下情况下使用多语言嵌入 (BGE-M3 或 mE5-large):

  • 你正在支持 3 种以上的语言
  • 你的语料库持续增长(翻译流水线的成本会迅速上升)
  • 延迟预算允许 15–25ms 的嵌入时间
  • 你希望对没有明确设计的语言实现零样本 (zero-shot) 覆盖

在以下情况下使用基于翻译的方法:

  • 你只有 1–2 个语言对
  • 你的语料库小且稳定(翻译一次,索引,搞定)
  • 你已经拥有一个高性能的单语言嵌入流水线
  • 领域非常专业,以至于你希望机器翻译 (MT) 输出经过人工审核

在以下情况下使用混合模式 (跨语言稠密 + 翻译查询稀疏):

  • 你既需要高召回率,又需要对精确匹配查询的容错能力
  • 每个查询的延迟预算允许 20–40ms
  • 你希望针对嵌入对齐失败和精确术语不匹配建立深度防御

关于模型大小和延迟:BGE-base 和 e5-base 变体的端到端运行时间为 79–82ms,准确率约为其 Large 版本的 83–85%。MiniLM 风格的小模型可以降至 15ms 以下,但会损失 5–8% 的准确率 —— 这对许多应用来说是可以接受的,但应针对每种语言而非总体进行验证。基于 Llama 的嵌入模型 (Nemotron-8B) 提供最高的准确率,但需要批处理基础设施才能保持在 25ms 以下。

做出这一决定的正确时机是在你设计检索流水线时,而不是在法国用户提交工单时。对于纯英语系统,单语言英语嵌入是正确的默认选择。对于任何跨越语言边界的系统 —— 即使你目前 95% 的用户都说英语 —— 那 5% 的情况正是你的检索最容易失败的地方,而且这种失败在最终爆发前通常是隐形的。

关于依然面临的难题

跨语言检索在 2024–2025 年有了显著提升,但仍有一些问题确实难以解决:

低资源语言即使在最先进的多语言模型上表现仍然显著滞后。BGE-M3 支持 100 多种语言,但它在训练数据稀疏的语言(许多非洲和东南亚语言)上的表现远低于其在高资源语言上的表现。MMTEB 正在积极扩大覆盖范围,但评估差距反映了真实的训练数据差距。

多模态跨语言检索 —— 即根据多语言文本查询检索图像或结构化文档 —— 仍然是一个活跃的研究领域。目前的多模态大模型 (VLMs) 即使在视觉内容与语言无关的情况下,在处理非英语提示词时也会表现出明显的性能下降。

此外,RAG 的生成环节仍然是一个与检索独立的问题。即使是完美的跨语言检索,也不能保证生成最终响应的 LLM 能很好地处理非英语上下文。检索质量是必要条件,但并非充分条件。

对于大多数生产系统,短期内的正确路径是:部署 BGE-M3 或 mE5-large,从第一天起就针对每种语言部署检索指标监控,并将跨语言生成质量视为一个具有独立监控的评估环节。检索层面的差距可以通过现有工具解决。而那种“直到太晚才被察觉”的失败模式才是真正的问题 —— 解决它靠的是仪表盘 (Dashboards),而不是模型。

References:Let's stay in touch and Follow me for more thoughts and updates