人人都会AI编程

召回 + 粗排 + 精排的三级检索架构

更新时间:2026-07-12

在 RAG 系统中,检索的质量直接决定了生成答案的上限。如果检索到的片段与问题无关,模型再强也无法给出正确回答。简单的单步向量检索(embedding + top-k)在很多真实场景下并不够用——它可能漏掉关键文档,也可能让不太相关的内容挤占宝贵的上下文窗口。

为了兼顾召回覆盖度排序精准度,工程实践中常采用召回 → 粗排 → 精排的三级检索架构。每一级职责明确,层层过滤,让最终送给模型的内容既全面又精准。

1. 为什么需要三级架构

单靠向量相似度检索存在几个固有问题:

  • 语义匹配不等于相关性。向量相似度高的段落,可能只是话题相近,但并不包含问题所需的答案。
  • 多路召回难以融合。实际系统中往往同时用关键词检索(BM25)和向量检索,两者返回的结果评分尺度不同,难以直接合并排序。
  • 精细排序成本高。如果对所有候选片段都用重量级模型打分,延迟和计算开销会成倍增加。

三级架构的思路是:用轻量方法先海选,用适中方法粗筛,最后用精准方法精选。 每个阶段处理的候选数量逐级减少,而使用的模型精度逐级提升。

2. 分级详解

第一级:召回(Recall)

目标:从海量知识库中快速找出所有潜在相关的片段,做到“宁可错召一千,不可漏过一个”。

常用方法

  • 向量检索:用 embedding 模型做语义相似度搜索,擅长理解同义表达。
  • 关键词检索(BM25):基于词频的精确匹配,对专有名词、编号、术语等效果很好,恰好补充向量检索可能忽略的刚性匹配。
  • 混合召回:同时跑向量检索和关键词检索,将两者的结果取并集,作为候选池。

典型配置:向量检索召回 top-200,关键词检索召回 top-200,合并去重后得到约 200~500 个候选片段。这一步要求速度快、覆盖面广,对精度要求相对宽松。

第二级:粗排(Rough Ranking)

目标:从几百个候选片段中快速筛选出几十个,大幅缩小范围,同时尽可能保留高价值片段。

常用方法

  • 轻量级打分模型:使用小型的、推理速度快的排序模型(例如轻量版 Cross-Encoder),对每个候选片段与问题的相关性快速打分。
  • 规则辅助:结合业务规则做初步过滤,比如优先保留来自权威文档的片段、剔除过短或过长的片段、对元数据(如文档类型、更新时间)赋予权重。
  • 多特征融合排序:综合向量相似度分数、关键词匹配分数、来源文档权重等几个维度,用一个简单的线性公式算出综合得分。

典型配置:粗排模型将候选数量从 200~500 个压缩到 30~50 个,耗时控制在百毫秒级别。这个阶段的模型精度高于简单向量比较,但计算开销远低于精排。

第三级:精排(Fine Ranking)

目标:对少量候选片段做最精确的相关性评估,确定最终送给 LLM 的 top-k 片段及其顺序。

常用方法

  • 重型 Cross-Encoder 模型:直接输入“问题 + 候选片段”的配对,输出一个精确的相关性分数。这类模型能够捕捉复杂的语义匹配关系,准确率显著高于双塔模型和规则方法,但推理速度较慢。
  • 多角度打分:有时不仅评估相关性,还会评估信息完整性、回答覆盖度等,确保选出的片段能相互补充而不是高度重复。
  • 重排序去冗:精排阶段可以对片段进行去冗处理,移除内容高度重叠的片段,让最终上下文更多样化,覆盖问题的不同侧面。

典型配置:精排模型从粗排输出的 30~50 个中选出最终的 3~5 个,这个阶段的延迟最高,但因为候选数量已很小,整体耗时可接受(通常总检索延迟控制在 0.5~1 秒以内)。

3. 真实场景下的表现

以一个医疗问答系统为例。用户提问:“糖尿病患者可以吃哪些水果?需要注意什么?”

  • 召回阶段:向量检索从数万篇医学文献中召回 200 个语义相关段落,关键词检索额外补充包含“糖尿病”“水果”“血糖指数”等核心词的高匹配片段,合并后得到 300 个候选。
  • 粗排阶段:轻量排序模型快速筛掉大量只提及“糖尿病”但不涉及饮食建议的段落,以及一些虽然语义相似但篇幅过短、信息量不足的片段,保留 40 个高质量候选。
  • 精排阶段:重型 Cross-Encoder 对这 40 个片段精密评分,最终选出 5 个最匹配的段落:分别涵盖“推荐低 GI 水果清单”“建议摄入量”“避免高糖水果”“食用时间注意事项”等互补角度。这 5 个片段组成上下文,交给 LLM 生成完整回答。

如果只用单级向量检索,很可能返回的都是泛泛讨论糖尿病饮食的段落,而漏掉“水果摄入时间”这类具体细节。三级架构显著提升了关键信息的覆盖率和精确度。

4. 实施的实用建议

  • 不要一上来就上精排模型。先搭建混合召回+简单粗排,验证检索效果,逐步引入精排模型。很多时候,粗排之后效果已经足够好。
  • 粗排模型要选推理快的。可以使用经过蒸馏的小模型(如 MiniLM 等),速度比重型模型快 10 倍以上,精度仍然显著优于向量相似度。
  • 精排模型关注延迟可控。将精排的候选数量严格控制在 50 以内,必要时部署到 GPU 推理服务,确保总检索时间不超 1 秒。
  • 监控各阶段的召回命中率。记录最终选用片段的排名分布,如果精排后 top-3 中经常不包含理想答案,说明粗排或召回阶段丢失太多高价值片段,需要调整各阶段的阈值和策略。
  • 与元数据融合。在粗排或召回阶段结合文档类型、时效性、权重等元数据,能显著提升对业务已有知识的利用效率。

三级检索架构是 RAG 系统从“玩具级”走向“生产级”的关键优化手段。它用分阶段、有侧重的设计,在速度与精度之间找到适合业务的平衡点,让检索真正做到既快又准。