Reranking(重排序)

对初次检索结果进行二次排序的技术,用更精细的模型重新评估query与每个候选文档的相关性。弥补向量检索"语义近≠问题相关"的缺陷,是RAG检索质量优化的关键环节。

Reranking(重排序)

一句话理解

向量检索找回了 20 个"大概相关"的片段,Reranker 再精挑细选出最相关的 3-5 个喂给模型。

为什么需要 Reranking

向量检索(Embedding + 余弦相似度)速度快、成本低,但精度有上限——它衡量的是"语义距离",不完全等于"对这个问题有多相关"。例如:

  • 查询:"如何配置 Nginx 反向代理"
  • 向量检索可能返回:"Nginx 安装教程"(语义近但不相关)
  • Reranker 能识别出"反向代理配置步骤"才是真正需要的

工作方式

Reranking 通常是一个两阶段检索过程:

  1. 第一阶段(召回):用向量检索或 BM25 快速从海量文档中召回 top-K 候选(如 20 个)
  2. 第二阶段(精排):用 Cross-Encoder 模型对每个候选逐一评估与 query 的相关性,输出精确分数,重新排序

Cross-Encoder 比 Bi-Encoder(Embedding 模型)精度高,但计算成本也高——它需要把 query 和每个候选拼接在一起输入模型,无法预计算。所以只在少量候选上使用。

常用工具

  • Cohere Rerank API:云服务,即插即用
  • BGE-Reranker:开源 Cross-Encoder 模型
  • Jina Reranker:轻量级开源方案

什么时候该用

  • 检索结果"看起来相关但答非所问"时
  • 文档库领域专业、术语多义时
  • 对回答准确率要求高的生产环境