BM25 与向量检索结果如何融合?

未标记

询问 AI

考查重点:候选去重与分数、排名融合。两路按同一块 ID 去重,用 RRF 融合排名;若加权原始分数须先校准量纲和方向,再重排

本题目录

参考答案

核心回答

BM25 与向量检索的原始分数含义和尺度不同,通常先分别召回,再以同一知识块 ID 合并,用 RRF 按排名融合;需要保留分数差异时,也可以在校准后加权。实现主线是:

  1. 两路使用一致的业务范围、权限和版本条件,各自返回候选、分数与排名。
  2. 按稳定的 chunk_id 对齐同一知识块,保留它在每一路的排名,避免重复文本占满候选池。
  3. 用融合规则计算统一排序。RRF 让在多路靠前的候选累积贡献,无需直接比较 BM25 分数和余弦相似度。
  4. 对融合后的候选按预算截取,再按需要交给 Reranker 精排,最后组装回答上下文。

例如用户查询带错误码的故障处理方法,关键词通道可以补充准确命中错误码的手册,向量通道可以补充不同措辞的处理说明。融合负责把这些候选排到一个列表里,是否真正改进回答还要用问题集评估。

RRF 具体怎么算

采用从 1 开始的排名,等权 RRF 可以写成:

融合分数(d) = 各路中 1 / (c + 该路排名(d)) 的总和

c 是正的平滑常数;某一路没有召回该候选,该路就不贡献分数。下面只做算术示例,取 c = 10:

  • A 在 BM25 第 1、向量第 10:1/11 + 1/20 ≈ 0.14091。
  • B 在两路都排第 2:1/12 + 1/12 ≈ 0.16667。
  • C 只在向量排第 1:1/11 ≈ 0.09091。

融合后是 B、A、C。它体现的是“多路共同靠前”能够累积优势,并不证明 B 在业务上一定比 A 正确。

c 控制排名差异的衰减:较小时更强调头部名次;较大时,前后名次贡献更接近。它不是两路各自的权重,也不是每路取多少候选的 Top-K。需要偏向某个通道时,可以显式设计通道权重;具体产品可能采用不同的加权公式、排名起点和默认值,接入时应按对应实现计算。

合并时保留什么,在哪里去重

先明确排序单元。如果两路都检索知识块,同一个 chunk_id 应归为一个候选,并保留 BM25 排名、向量排名及各自分数,再计算融合贡献。不能先把它当重复项删到只剩某一路,否则会丢掉共同命中的信息。不同索引中的 ID 若不一致,需要先映射到同一份文档版本与知识块。

相同知识块去重和近似文本去重也不同。不同文档可能包含近似内容,却有不同版本、适用对象或出处;不宜仅凭文字相似就合成一条。重排后还可以控制同一文档的片段数量,并在上下文构建时补充必要邻块,减少重复内容挤占预算。

各路召回数、融合后交给重排的数量、最终进入上下文的数量分别配置。融合前就把每路截得很小,可能让原本有用的候选没有机会参与比较;把全部候选都交给重排,则可能增加延迟与成本。

什么时候用分数加权

如果分数大小本身具有稳定的区分信息,可以先把两路分数变换到可比较的尺度,再计算类似下面的组合:

融合分数 = w × 词项分数 + (1 - w) × 向量分数

这里的“词项分数”和“向量分数”指变换后的值;若接口返回距离,还需先统一越大越相关的方向。简单 Min-Max 受候选中的极值影响,相同原始分数在不同查询下可能对应不同归一化值;候选分数全相等时也要单独处理。Qdrant 的 DBSF 则根据每次候选分布变换后合并,不等于任何输入都会被截到 0~1。

RRF 比较容易作为起点,但会丢弃原始分数差距;分数融合保留的信息更多,也更依赖校准。选择哪种、权重多少,应在独立评估问题上比较,不能把某个固定比例作为通用答案。

常见追问

融合后还要重排吗? 根据任务和预算决定。融合利用各路已经给出的排名或分数;Cross-Encoder 则把问题和候选正文一起读,重新判断相关性。两者作用不同,但重排只能处理进入其输入的候选。

一条通道超时怎么办? 可以按产品要求降级使用成功通道,同时记录缺失通道和耗时,避免把单路结果计成完整混合检索实验。权限等必要条件在降级时仍需保持。

怎样说明融合带来了收益? 对比候选召回、融合后排序和最终回答,具体见混合检索比单路检索在哪个环节获得收益。

对应教程

参考资料

  • 国内:JavaGuide:RAG 检索优化:借鉴混合检索的阶段候选预算,说明正文中召回、融合后重排与最终上下文数量应独立设置。
  • 国内:Datawhale:第八章 记忆与检索:扩展检索的合并实现展示怎样按知识块标识汇总多次召回;这里借鉴候选身份的组织方式,异构通道的分数融合另按 RRF 等规则处理。
  • 国内:Onefly / zero2Agent:RAG 与检索:参考精确术语与语义查询的不同收益,说明正文中融合应保留两路有效候选并按问题类型评估。
  • 国外:Microsoft:Hybrid search ranking:依据 RRF 计算过程,解释正文中排名贡献和平滑常数、每路 Top-K 的区别。
  • 国外:Qdrant:Hybrid and Multi-Stage Queries:依据 RRF 与 DBSF 的融合机制,说明正文中按排名与按分数分布融合的取舍及具体实现边界。

相关面经

8 篇

灵犀互娱

AI 应用开发工程师
校招秋招
查看原面经 →
关键字召回和向量召回的分数怎么融合?

字节跳动

Agent 开发后端实习生
日常实习一面
查看原面经 →
两路召回结果如何融合?

药明康德

AI 数据工程师
二面
查看原面经 →
RAG中向量、BM25、图谱多跳做IF融合,IF怎么计算?

虾皮

Agent 应用开发工程师
秋招一面
查看原面经 →
BM25 检索结果和向量检索结果,两套数据如何做结果融合?

作业帮

Agent 应用开发工程师
秋招一面
查看原面经 →
两路检索得到的召回结果如何做结果融合。
展开剩余 3 篇面经

阿里巴巴

Agent 应用开发工程师
一面
查看原面经 →
项目里做的是多阶段RAG,BM25和向量检索都用了。面试官问了两个点:这两种结果融合的逻辑具体怎么设计的,还有混合检索到底在哪个环节比单独用效果好。

阿里国际

AI 应用 / Agent 开发
一面、二面
查看原面经 →
多路检索怎么融合呢

快手

Agent 应用开发工程师
实习一面
查看原面经 →
追问
(追问)BM25和向量检索是怎样组合的?比例是如何设置的?

收录题集

5 份

相关题目

4 题