混合检索:BM25 + 向量 + RRF 融合

02-嵌入与向量检索 核心 约 20 分钟 #混合检索#BM25#RRF#关键词检索 更新 2026-10-02
当前状态:未学
本文基于模型知识整理(生成时未联网核对),关键结论建议对照经典文献复核。

一句话定义

混合检索同时跑关键词检索(BM25,擅长精确词、缩写、编号)与向量检索(擅长语义改写),再用倒数排名融合(RRF)或加权分数把两路结果合并——两者互补的失败模式使混合检索几乎总优于单路,是生产 RAG 的默认配置。

为什么重要

纯向量检索的致命盲区是精确符号:型号 "XR-400"、错误码 "E1102"、法条 "第 142 条"、人名与缩写——嵌入空间里它们语义太平凡,常被泛化内容淹没。纯 BM25 则完全不懂同义改写("怎么退货"搜不到"退换货流程")。两者并集覆盖面显著高于任一单路,且实施成本极低。

前置知识

kp-007(向量检索原理)、kp-008(分数归一化问题)。

核心概念

  • BM25:经典概率检索算法——查询词在文档中的词频(TF,饱和增长)、逆文档频率(IDF,稀有词权重高)、文档长度归一化(参数 b)共同决定得分;倒排索引实现,检索极快。
  • RRF(Reciprocal Rank Fusion):score(d) = Σ 1/(k + rank_i(d)),只看每路排名不看原始分数,k 常取 60——天然规避两路分数量纲不可比的问题,零调参,工业默认。
  • 加权分数融合(weighted sum):min-max 或 z-score 归一化后线性加权,可调出侧重,但归一化方案对分布敏感、需要调参。
  • 混合的实现形态:Elasticsearch/OpenSearch 原生混合查询;向量库 + 独立搜索引擎两库并行后融合;单库双索引(如 Qdrant/Milvus 的 sparse+dense 向量同点存储)。

原理与机制

为什么两路互补:向量检索的嵌入空间把同义改写拉到一起(召回泛化好),但把稀有精确符号"平均化"(精确匹配弱);BM25 逐字匹配保证专有名词命中,但对任何改写零容忍。失败模式正交 ⇒ 融合后查全率显著提升,且对"查询类型漂移"(今天问概念明天问型号)更鲁棒。

RRF 的机制细节:一个文档在某路排第 1 贡献 1/61,排第 2 贡献 1/62……两路都靠前的文档得分显著高于单路靠前——这编码了"多源一致"的直觉。k=60 的作用是平滑头部差距,避免第 1 名过度碾压;RRF 对分数分布完全不敏感,这也是它优于加权融合的工程原因。

BM25 的现代适配:中文需分词(jieba 等)或用 ngram;同义词表可挂载扩展;对领域缩写建词典("ECU"→电子控制单元)能让 BM25 侧也获得一部分语义能力。

公式或模型

  • BM25:score(q,d) = Σ_t IDF(t) · (tf·(k1+1)) / (tf + k1·(1−b+b·|d|/avgdl)),k1≈1.2–2.0,b≈0.75。
  • RRF:RRF(d) = Σ_r 1/(60 + rank_r(d)),r 遍历各路检索结果。

图示

查询: "XR-400 型号如何校准"
BM25 路:  [XR-400校准手册#3.2, XR-400规格书, XR-400安装指南]  ← 精确词命中
向量路:   [设备校准通用流程, 仪器校准注意事项]                ← 语义泛化命中
RRF 融合: XR-400校准手册(两路皆高) → 第1

实例或案例

  • 工单检索系统引入混合检索后,"错误码直查"类查询命中率从向量单路的不足 40% 提升到 90%+,同时语义类查询不回退。
  • Elasticsearch 用户一条 retriever.rrf 查询即可完成双路融合;自建栈常见做法是 OpenSearch + Qdrant 双库 + 应用层 RRF。

常见误区

  • 误区一:"向量检索是 BM25 的替代品"。在专有名词密集的真实语料上,去掉 BM25 常常明显掉点;"替代"叙事来自开放域问答基准,与企业语料分布不同。
  • 误区二:"两路分数直接相加"。BM25 分数无上界、余弦在 [−1,1],直接加权等于让 BM25 主导一切;要么归一化要么用 RRF。
  • 误区三:"混合了就不用重排"。混合解决召回覆盖,排序精细度仍靠交叉编码重排(kp-013);两者是接力关系不是替代关系。

与其他知识点的关系

  • kp-008:分数归一化的方法论基础。
  • kp-013:重排拿到混合候选后精排。
  • kp-006:两路都可叠加元数据过滤。
  • kp-025:图检索常作为"第三路"加入融合。

自测题

  1. RRF 相比加权分数融合的优势?

答:只用排名不用原始分数,免去两路分数量纲不一致与归一化分布敏感问题,基本零调参,鲁棒性最好。

  1. 哪类查询最依赖 BM25 路?

答:含精确符号的查询——型号、错误码、法条编号、人名缩写;这些词在嵌入空间缺乏区分度。

  1. 混合检索与重排的分工?

答:混合检索负责"把相关内容捞进候选池"(查全),重排负责"把最相关的排到最前"(查准),串行接力缺一不可。

延伸阅读

  • Robertson & Zaragoza, "The Probabilistic Relevance Framework: BM25 and Beyond"。
  • Cormack 等, "Reciprocal Rank Fusion Outperforms Condorcet and Individual Rank Learning Methods"(SIGIR 2009)。
  • Elastic/OpenSearch 官方混合检索文档。