Reranking(重排序)
对初次检索结果进行二次排序的技术,用更精细的模型重新评估query与每个候选文档的相关性。弥补向量检索"语义近≠问题相关"的缺陷,是RAG检索质量优化的关键环节。
Reranking(重排序)
一句话理解
向量检索找回了 20 个"大概相关"的片段,Reranker 再精挑细选出最相关的 3-5 个喂给模型。
为什么需要 Reranking
向量检索(Embedding + 余弦相似度)速度快、成本低,但精度有上限——它衡量的是"语义距离",不完全等于"对这个问题有多相关"。例如:
- 查询:"如何配置 Nginx 反向代理"
- 向量检索可能返回:"Nginx 安装教程"(语义近但不相关)
- Reranker 能识别出"反向代理配置步骤"才是真正需要的
工作方式
Reranking 通常是一个两阶段检索过程:
- 第一阶段(召回):用向量检索或 BM25 快速从海量文档中召回 top-K 候选(如 20 个)
- 第二阶段(精排):用 Cross-Encoder 模型对每个候选逐一评估与 query 的相关性,输出精确分数,重新排序
Cross-Encoder 比 Bi-Encoder(Embedding 模型)精度高,但计算成本也高——它需要把 query 和每个候选拼接在一起输入模型,无法预计算。所以只在少量候选上使用。
常用工具
- Cohere Rerank API:云服务,即插即用
- BGE-Reranker:开源 Cross-Encoder 模型
- Jina Reranker:轻量级开源方案
什么时候该用
- 检索结果"看起来相关但答非所问"时
- 文档库领域专业、术语多义时
- 对回答准确率要求高的生产环境