DOCAI · 概念 · L3
重排(rerank)解决什么问题
一句话定义
用交叉编码器对召回的候选逐条精排,把真正能回答问题的片段排到前面。
专业更新 2026-11-13核验 2026-11-13 · docai 编辑部
它是什么
重排(rerank)是在召回之后追加的一步精排。检索先用向量或关键词粗筛出一批候选,再由一个专门的模型逐条判断「这个片段到底能不能回答这个问题」,按相关性重新排序,只把最前面的几条交给大模型。
怎么工作
召回和重排的目标不同。召回追求快和全,向量检索把查询和片段分别编码成向量再比相似度,代价低,但它比较的是整体语义像不像,而不是能不能回答问题。
重排通常用交叉编码器:把查询和候选片段拼在一起送进模型,直接输出相关性分数。查询和文档在模型内部发生交互,判断更准;代价是每条候选都要单独跑一次,开销随候选数量增长。
常见的取数方式是召回 top-k,重排后取前 n 条放进上下文。k 和 n 要一起调:k 太小,正确答案进不了候选;n 太大,无关片段占满预算。
重排是同步链路里新增的一跳,候选多、文本长时延迟明显。工程上要设超时和降级:重排服务不可用时退回原始召回顺序,而不是让整个问答失败。
没有重排模型时,可以用规则兜底:关键词命中、字段权重、时间新近度、来源可信度。对专名、编号、错误码这类查询,关键词规则往往更稳。索引层也能直接设置相似度阈值和过滤条件。
常见误解
- 重排能救回没召回到的内容:不能。重排只对候选集排序,召回漏掉的内容它看不到。
- 重排模型越大越好:延迟和成本一起涨,收益还取决于候选质量。
- 上了重排就一定更好:召回本来就好、n 又小时,提升可能抵不过延迟。
- 只看最终答案:要把召回质量和排序质量分开评估,否则无法判断问题出在哪一层。
怎么评估重排有没有用
用一批带标注的问题,固定召回结果,比较重排前后正确片段进入前 n 的比例;再看端到端答案正确率和延迟变化。如果命中没有提升、延迟明显增加,就不要上重排。评估方法可以参考如何评估一次改动。
延伸阅读
- 召回的基础:什么是 RAG
- 向量怎么来:什么是 embedding
- 向量存在哪:什么是向量数据库
- 动手搭一条链路:最小可用 RAG
什么时候用得上
当向量召回的结果「意思接近但答非所问」、前几条经常混入无关片段时,考虑在召回后加一层重排,并先算清延迟和候选数量。
常见误解
很多人以为重排能把漏掉的答案找回来。重排只对已经召回的候选重新排序,召回阶段没进候选的内容,重排模型再强也看不到。