跳到正文

混合检索怎么提升 RAG 召回?

Sparse(BM25) vs Dense(向量检索)原理与相似度度量差异

原题:请解释混合检索(Hybrid Retrieval)的设计动机,系统阐述Sparse检索(如BM25)与Dense检索(如DPR、向量检索)的工作原理,比较它们在相似度度量方法(如词项匹配得分、点积、余弦相似度)上的差异,并说明为何混合检索能提升RAG系统的召回效果。

向量检索 · 美团真题

回答与解析

为什么要混合检索

稀疏检索和稠密检索利用的信号不同:BM25 擅长实体名、编号、错误码和查询词共现;双塔向量检索能够召回词面不同但语义接近的文本。二者都可能失败,混合检索的价值是扩大互补覆盖,而不是保证每个查询都优于单路。

两类检索与分数

  • Sparse/BM25 基于倒排索引,对查询词的 IDF、文档内词频饱和和长度归一化加权。分数受实现、语料统计和查询长度影响,没有可跨系统直接比较的固定尺度。
  • Dense/DPR 类双塔分别编码 query 和 document,再用点积、余弦或距离检索。点积同时受方向和模长影响;向量做 L2 归一化后,点积排序与余弦排序等价。模型质量取决于训练域、负样本和文档切分。

融合与评估

可对两路候选取并集去重后用 RRF 按名次融合;也可校准两路分数后加权,或交给 cross-encoder 重排。RRF 不要求原始分数同尺度,但仍需调节候选深度和常数;分数加权必须防止尺度漂移。

应分别报告 BM25、Dense 与 Hybrid 的 Recall@K、MRR/NDCG、无答案率、P95 延迟和成本,并按编号、术语、同义改写等查询桶分析。只有覆盖收益大于重排与延迟成本时,融合才值得上线。

口语版讲法(约90秒)

  • 稀疏与稠密检索使用互补信号
  • 点积、余弦和BM25分数不可直接混用
  • 候选并集后用RRF、校准加权或重排
  • 用分桶召回、排序质量和延迟共同验收

混合检索的动机不是“向量检索不行”,而是不同检索器看到的证据不同。BM25 对产品名、编号和错误码很敏感;稠密双塔更容易处理同义改写,但可能在长尾实体或域外数据上漂移。

两路原始分数通常不能直接相加。BM25 没有跨语料统一的尺度;向量点积受模长影响,余弦只比较方向,归一化向量后两者的排序才等价。工程上可以取候选并集后用 RRF 按名次融合,也可以校准分数再加权,或者交给 cross-encoder 重排。

工程风险是某一路超时、索引延迟或分数漂移后,融合结果反而劣于单路。我会注入单路失败并验证降级策略,持续监控各路候选贡献、重复率和分桶召回。

是否采用混合方案要靠查询集验证。我会分别测三套方案的 Recall@K、MRR 或 NDCG、P95 延迟和成本,再按编号、专业术语、口语改写等查询类型分桶。混合检索常有帮助,但并不保证每个场景都有净收益。

关键一句:混合检索的关键是互补召回与可比较的融合信号,而不是固定采用某一种权重。

核验来源

  1. Dense Passage Retrieval for Open-Domain Question Answering
  2. Reciprocal Rank Fusion Outperforms Condorcet and Individual Rank Learning Methods

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你在做电商搜索,用户搜“iPhone 15”能精准匹配,但搜“最新款苹果手机”就只返回关键词结果,漏掉商品描述里的“iPhone 15”怎么办?你可能会想,能不能把两种检索结合起来?

  2. 问法 2 · 层层追问

    你用的检索方式主要是什么?……那如果用户搜的是同义词或者口语化表达,效果怎么样?……有没有想过把关键词匹配和语义向量检索结合在一起?具体怎么设计?

  3. 问法 3 · 直球架构

    解释一下混合检索的设计动机,对比BM25和稠密检索的工作原理,包括它们相似度度量的差异,以及为什么混合后能提升RAG的召回效果。

同模块相关题目