重排
Reranking
重排(Reranking)是两阶段或多阶段检索中的排序环节:召回器先从大规模语料取回 Top-K 候选,重排器再用更昂贵、交互更充分的模型重新评分并调整顺序。它改善的是候选集内部排序,不能找回召回阶段已经漏掉的文档。
输入、输出与系统位置
输入通常是查询 q 和召回得到的 K 个候选 d1…dK;输出是每个候选的相关性分数以及重新排列后的列表。Top-K 是交给重排器的候选数量:K 太小可能漏掉相关文档,太大会增加延迟和费用。
Bi-encoder 与 Cross-encoder
Bi-encoder 分别编码查询和文档,可预先计算文档向量,适合大规模召回。Cross-encoder 将查询和单个候选一起输入模型,让词语跨查询与文档直接交互,通常判断更细,但每个候选都要推理一次,因此更适合重排较小候选集。
评分流程示例
用户查询“503和502区别”,召回器返回20段文档。重排器逐一评分,把同时解释网关无效响应与服务暂时不可用的段落排在只出现状态码的段落前。最终只把前5段送入答案生成。
延迟、成本与失败模式
重排候选数、模型大小和硬件共同决定延迟。召回质量差、查询含义不清、候选被截断或训练数据与业务领域不匹配时,重排也会失败。线上需要设置超时和无重排降级路径。
评估方法
Recall@K 先检查相关文档是否进入候选集;MRR 关注首个相关结果的倒数排名;NDCG@K 根据不同相关性等级和位置折扣评估排序。指标必须基于人工或可靠标注的查询集,并同时记录P95延迟与单次成本。
与相近术语的区别
向量检索和关键词检索主要负责召回;重排负责候选集内次序;生成模型负责依据上下文回答。三者可以组合,但不能把最终答案正确率全部归因于重排器。
Top-K参数如何选择
先用召回评估确定相关文档进入候选集所需的K,再测重排延迟。若Recall@20明显低于Recall@100,问题可能在召回;若Recall@20已高但NDCG@5低,重排更可能带来收益。按查询类型分别测,专有名词和长问题需要的候选规模可能不同。
线上实现与降级
服务记录召回版本、重排模型、候选数、每阶段耗时和最终文档id。重排超时可以退回原召回顺序,但必须标记降级,避免把未重排结果混入评估。批量评分能提高吞吐,却会增加排队等待,需要结合SLO选择批大小。
资料核对说明
本文依据检索论文和公开基准解释通用原理,没有声称某个模型在本站数据上更好。模型效果、费用和最大输入长度需在选定厂商当前文档中单独核对,并用本地标注集复现。
工程验收清单
离线准备覆盖导航、事实、长问题和专有名词的标注查询集,先测召回Recall@K,再固定候选集比较重排前后的MRR与NDCG。线上同时记录模型版本、候选数、截断、批大小、P50/P95延迟、超时和降级。检查相关文档未进入候选时是否被错误归因重排;检查分数能否跨查询比较,通常不能。上线先小流量,保留原排序回退,观察失败样本而不只看平均指标。涉及模型价格、输入限制和平台可用性时以当前厂商文档为准,未在本地标注集验证的效果不得写成既定提升。
结果解释边界
重排分数通常只用于同一查询下排序,不能跨查询解释为统一置信度。评估报告必须说明候选来源、标注规则、K值和延迟环境;缺少这些条件的提升数字不可直接复用。
常见问题
重排模型会生成答案吗?
通常不会,它主要为候选文档评分或排序。
候选数量越多越好吗?
不一定,候选增多可能提高召回,也会增加重排延迟与噪声。
参考资料
Sentence-BERTEMNLP / arXiv · Bi-encoder与Cross-encoder效率差异 · 访问 2026-08-30
BEIR BenchmarkNeurIPS Datasets and Benchmarks · 检索评估与跨领域基准 · 访问 2026-08-30