Skip to content

Rerank(重排序)

一句话

粗筛之后,精挑一次。 先用 BM25/Embedding 快速召回 20 条候选,再用 Rerank 模型精确打分,取 top 3 送给 LLM。

为什么需要它

粗召回(BM25 + Embedding 混合检索)追求快和全——宁可多捞,别漏。但捞回来 20+ 条文档,部分相关性不高,全部塞给 LLM 会:

  • Token 超限
  • 噪声干扰回答质量
  • 成本浪费

Rerank 用一个更强的模型(通常是 Cross-Encoder),把每一条文档和问题放在一起做精细的相关性判断。

流程

BM25 召回 10 条 ──→ 合并去重 ──→ Rerank 精排 ──→ 取 top 3 ──→ LLM
Embedding 召回 10 条 ↗              ↑
                          每条文档和原问题
                          做精确相关性打分

应用场景

场景说明
企业知识库召回 20 条,需精准挑出最相关的那 3 条给 LLM
客服机器人候选答案多,需挑最匹配的一条回复
多路召回合并ES + Milvus 各召回 10 条,合并后 20 条 → Rerank 压缩到 top 3

横向对比:Embedding vs Rerank

EmbeddingRerank
输入一段文本一个问题 + 一条文档(成对)
输出向量相关性分数
角色粗筛(海量)精排(少量)
速度快(向量索引)慢(逐对计算)
模型类型Bi-EncoderCross-Encoder
粒度

为什么不用 Rerank 做全量检索? 因为太慢——Rerank 是逐对计算,20 万文档 × 每个问题 = 不可能。所以它只精排粗召回的 20 条。

优缺点

优点: 精排效果远超 Embedding 粗筛,显著提升最终回答质量 缺点: 逐对计算,速度慢;多一次 API 调用,成本 +1;依赖 Rerank 模型质量

如何选择

如果你的 RAG 管道召回量 ≤ 5 条且质量稳定 → 可以不用 Rerank。如果召回量 > 10 条且噪声多 → 上 Rerank。99% 的生产 RAG 都会加这一层。

小结

Rerank 是召回质检员。粗筛保证「不漏」,精排保证「不噪」。它不创造新信息,只负责把最相关的挑出来——但这一步对最终体验的影响是决定性的。

下一步