一句话定义
Reranker 是对召回候选做二次排序的模型:它把 query 和每个候选文档拼在一起打分(cross-encoder),选出最相关的 Top-K 放进上下文。
为什么需要它
向量检索是 bi-encoder:query 和文档各自编码,快但精度有限。Reranker 让 query 和文档逐对交互,能捕捉更细的相关性;代价是每个候选都要一次前向。
怎么工作
- 向量检索先召回 Top-N(如 50–200)。
- Reranker 对每个 query-doc 对打分。
- 按分数排序,取 Top-K(如 5–10)。
- 可选去重、压缩,再放进上下文。
关键取舍
- 精度通常高于纯向量召回,但延迟随候选数线性增长。Reranker 不是免费。
- 候选太多会拖慢;候选太少会漏掉正确结果。
- cross-encoder 模型越大越准,也越吃显存。
- 多语言/领域数据要选匹配的 reranker。
- Reranker 常用交叉熵/对比学习训练,需要标注相关性。
- 线上要限制候选数和超时,避免尾延迟。
- 小模型 reranker 可以跑在 CPU/边缘。
- 多语言、长文档要先切块再打分。
- Rerank 与向量召回互补,不是替代;Top-K 不是越多越好,按延迟预算调。先做离线评测再上线。
常见误区
- Reranker 能替代向量检索:它通常只做精排,召回仍靠向量/关键词。
- 候选越多越好:延迟和成本会上升,收益递减。
- Reranker 分数可跨模型比较:不同模型的分数尺度不同。
- 重排后不用去重:重复片段仍会挤占上下文。
用在哪里
- RAG 的检索后处理。
- 搜索、问答、推荐的精排。
- 对相关性要求高、延迟可接受的场景。
相关概念
- RAG:Reranker 的上层流程。
- Vector Database:负责召回 Top-N。
- Chunking:块粒度影响重排效果。