BM25 与向量召回为什么并用,各召回多少条进入重排?
未标记
考查重点:召回互补与候选预算。BM25 补精确词,向量补语义;各路候选与重排输入/最终上下文分别设预算,用召回增益和延迟曲线定数量
本题目录
参考答案
核心回答
BM25擅长保留明确词项、实体、版本和错误码,向量召回擅长覆盖同义表达与语义改写。两路并用是为了互补漏召回:先分别取候选,按统一片段ID合并去重和融合,再让重排判断哪些证据最能回答当前问题。
每路取多少没有固定答案,需要区分BM25候选数、向量候选数、送入重排的去重数量,以及最终进入生成上下文的数量。项目中应报实际配置、评测依据和代价,不能把某份面经的数字当默认最优值。
为什么不是候选越多越好
精确型号可能被向量检索成相似型号,BM25能补词项约束;用户说“怎么撤销申请”,文档写“申请作废流程”,语义检索可能更有帮助。二者并非绝对分工,中文分词、领域词典、Embedding和文档质量都会改变效果。
增加候选通常提高覆盖机会,也会增加噪声、重排计算和尾延迟。两路高度重合时,加量可能只引入重复;某路一直输出无关项时,应先查查询与索引,而不是按固定比例分配更多预算。
候选预算怎样确定
在固定问题和语料上,从几组可承受的候选配置建立曲线,统计各路独有正确证据、并集证据覆盖、去重后数量、重排耗时和最终答案。按错误码、缩写、自然语言和多条件问题分桶,判断是否需要不同配额或查询路由。
例如每路各取20条,合并后最多40条,实际可能因重合和过滤更少;随后可以只让有限候选进入重排,再按生成token预算取证据。这里的20是说明集合关系的假设,不是推荐配置或项目实测。
融合到重排还要注意什么
使用稳定片段ID处理重复,记录各路原始名次与分数。RRF可避免先校准异构分数;加权融合则要说明归一化和权重依据。权限、租户与有效版本在所有检索路径一致执行,不能让某一路漏掉过滤。
重排判断相关性,不补回两路都没有找到的证据。最终上下文还需去重、补条件和控制总长度;重排分数也不天然表示回答正确概率。
常见追问
可不可以只保留一路? 可以。若问题主要是精确字段查找或单路已经满足质量和成本要求,简单方案更易维护;应比较单路、双路及加入重排的增量收益。
参考资料
- 国内:JavaGuide:RAG检索优化:依据关键词、向量和重排的阶段分工,说明正文中初筛覆盖、去重融合及最终证据选择的区别。
- 国内:JavaGuide:RAG向量存储与检索:依据两路能力对照,说明正文中错误码、型号与同义表达分别可能由哪些信号补回。
- 国内:zero2Agent:RAG与检索:借鉴多路候选、RRF 和截断的组织,说明正文中统一 ID、保留来源排名及分别配置阶段预算的做法。
- 国外:Microsoft Azure Hybrid search ranking:依据混合检索与排名融合,解释正文中异构原始分数不能直接混加、可用 RRF 合并的原因。
- 国外:Qdrant Hybrid and Multi-Stage Queries:依据混合查询的预取与返回数量分工,说明正文算例中每路候选、去重并集和最终上下文数量不能混作同一个值。

