直接答案
向量检索解决"意思相近"(怎么退货≈退款流程),关键词检索解决"精确命中"(型号 C-200、错误码 0x8007、法条编号)。把两者结果用 RRF(倒数排名融合)合并,在绝大多数业务数据集上能比单一检索提升 10-20% 召回,是 RAG 检索层的标配做法。
两种检索的互补性
Embedding 模型再好,对低频专有名词也常无能为力——训练时没见过的型号编码,向量距离无法区分"XC-100"和"XC-1000"。反过来,BM25 关键词检索对同义改写完全无感。真实用户提问两种情况混杂:口语化的语义问句 + 带精确名词的追问,这就是必须混合的根源。
RRF 融合怎么工作
做法很朴素:两路检索各取 Top-K(如各 50 条),对每个文档按公式 score = Σ 1/(k + rank) 累加得分(k 常取 60),按总分重排。它的妙处在于不用调两路分数的权重——向量相似度(0.83)和 BM25 分数(11.2)量纲不同,直接加权没有意义,RRF 只用排名,天然可比。主流向量库(Qdrant、Milvus、Weaviate、Elasticsearch)都已内置混合检索与 RRF。
什么场景收益最大
| 场景 | 精确名词密度 | 混合检索收益 |
|---|---|---|
| 电商商品/型号查询 | 高 | 显著 |
| 法律条文检索 | 高 | 显著 |
| 医疗药品与诊断名 | 高 | 显著 |
| 通用知识问答 | 低 | 中等 |
| 闲聊式语义搜索 | 低 | 有限 |
小结
如果你的 RAG 只做了纯向量检索,加一路 BM25 + RRF 融合通常是性价比最高的单点优化,改动小、见效快。调参空间主要是两路的 K 值与是否在融合后再加 Rerank。
常见问题快答
没有关键词索引怎么办?
轻量方案:向量库元数据里存原文,检索后对 Top-K 做内存 BM25 重算;或直接用 Elasticsearch/OpenSearch 双引擎。
RRF 的 k 参数要调吗?
默认 60 基本够用,只有在两路检索质量差异极大时才值得调(如 30 或 100),先跑默认再优化。
混合检索后还要 Rerank 吗?
建议加。混合解决「找得到」,Rerank 解决「排得准」,两者是上下游关系不是替代关系。
最后更新于 2026-07-30。本文持续修订,重大更新会标注日期。
