RAG 换 embedding 模型后阈值失灵,合成查询探测让相似度分数可跨模型校准

Mapping Similarity Spaces across Embedding Models with Synthetic Query Probing

Marcin Rozmus, Peter van der Putten

Science

cs.CL

2026-08-06

不同 embedding 模型的相似度分数不在同一量纲,这篇提出合成查询探测,用保序回归等方法把分数分布对齐,给换模型和复用阈值搭出校准桥。

这篇在解决什么

用 RAG 的系统都靠相似度分数从知识库里捞内容。问题是不同 embedding 模型产出的分数根本不在一个量纲上:同一个 query-document 对,在 Amazon Titan 256 上可能是 0.4,在 OpenAI ada-002 上可能就是 0.83。这直接破坏了两件工程上常见的事——换模型时旧的召回阈值不能照搬,线上跑的「分数高于 0.7 才算相关」这类硬规则也跟着失效。此前这个问题很少有人系统研究,作者把它当成一个测量学缺口来补。

方法

核心思路是不去对齐 embedding 本身,而是对齐两个模型的相似度分数分布。为此需要大量已知相关程度的 query-chunk 对,作者提出合成查询探测(Synthetic Query Probing,简称 SQP):从每个文档块反推出问题,人为造出三档相关度,能直接从块里答出的 PARAPHRASE、主题相关但需要更多上下文的 RELEVANT、完全不相关的 IRRELEVANT。用 Claude Sonnet 4.6 每个语料抽 100 个块、每块每档生成 10 个问题,得到每个语料 3000 对样本,全程不需要人工标注。

有了这些对,就能学一个把模型 A 的分数映射成模型 B 分数的转换函数。作者比了三种:线性回归(OLS)、保序回归(isotonic,单调阶梯函数)、分位数映射(按累积分布查百分位)。

结果

分数分布的扭曲是系统性的。以 SciFact 为例,Titan 256 的 PARAPHRASE 均值 0.54、IRRELEVANT 均值 0.06,差距明显;而 ada-002 的 PARAPHRASE 均值 0.86、IRRELEVANT 均值 0.69,三档挤在一起,标准差只有 Titan 的二分之一到六分之一。

配置对最佳转换
Titan 512→1024(同族换维度)保序回归0.990
Titan 1024→ada-002(跨模型)保序回归0.945
ada-002→Titan 1024(反向)保序回归0.889

两个清晰结论:同族模型只换维度,映射接近无损、几乎与语料无关(R²≥0.97);跨模型映射则更噪、非线性、还依赖语料。而且方向不对称,从 ada 反推 Titan 的平均绝对误差是从 Titan 推 ada 的三到四倍。

阈值层面同样反直觉:SciFact 上要达到 0.95 精度,ada 只要阈值 0.718 就能拿到 1.000 召回,Titan 1024 要 0.063 才到 0.996;可换到企业语料,Titan 反而召回更高(0.76 对 0.69)。阈值主要跟着语料走,换语料带来的位移比换模型还大。

为什么重要

对任何在 RAG 里维护召回阈值、或打算换 embedding 模型的人来说,这篇给了两条可操作的提醒:同族升维度可以放心换,线性映射就够;跨模型换必须重新校准,且得用非线性方法,保序回归是首选。SQP 本身是个便宜的诊断工具,不依赖人工标注,可以反复跑,适合做模型迁移前的体检和语料漂移监控。

局限与存疑

作者自己列了几条:只测了两个语料、只覆盖四组 embedding 配置;合成查询可能引入偏差;实验假设 embedding 已归一化、阈值静态、单路检索无 rerank;转换函数是在全量数据上拟合的,没有留出测试集,能不能当成可复用的校准器还得打问号。读完还有一点:三档相关度是离散的,真实 RAG 里相关程度是连续的,这种分箱映射在边界附近表现如何没有讨论。

术语

原文与代码

社区讨论

相关论文

全部论文解读