数据、检索与 RAG深入已核验核验于 2026-09-19

重排

Reranking (别名:重新排序)

用更贵、更准的模型给候选重新打分——它只调整顺序,不创造你没召回到的证据。

本页目录
快速跳转

它是什么

重排是在第一阶段快速召回一批候选之后,用一个更精细的模型重新计算「查询与每条候选的相关程度」,然后重新排序、并截取一个更小的结果集。

它是检索链路里的第二段,职责单一:在已经拿到的候选里,决定谁排前面、谁被丢掉。 它不生成内容,不改写候选,也不去别处找新的证据。

为什么需要它

因为第一阶段和最终需求之间有一处根本矛盾:第一阶段怕漏,所以要多要快;而上下文窗口很小,最终只能装几块。

第一阶段的检索为了速度和覆盖,通常用「查询向量 vs 文档向量」这种各自独立编码的方式——它快,但比较粗:查询里那些限定词、否定、多个条件的组合,很容易被压成一个平均印象。于是候选集里混进噪声是常态。

重排允许你只在这批候选上花大钱:一次比较查询和一条候选的内容,判断得更细。花销可控(候选就几十条),收益却很直接——上下文里装的几块,从『大概相关』变成『确实相关』。

它如何工作

流程是:检索器先返回较大的 Top-K → 重排模型对每条候选重新打分 → 按新分数排序 → 截取更小的 Top-N 送进上下文。

两种典型的打分方式(机制上代表两个方向):

  • 把排序变成一个生成/分类问题:让模型直接读「查询 + 候选」,输出一个相关性判定或分数。这条路线把预训练模型直接改造成排序器,实现简单、效果稳定。
  • 延迟交互(late interaction):查询和文档各自保留每个 Token 的向量,在最后一步才做细粒度的交互匹配。它的取舍是——比「各自压成一个向量」精确得多,又比「查询文档完全合并编码」便宜得多,落在两者的中间。

无论哪种,都有一个共同规律:越精细 → 延迟越高、成本越高。 所以重排天生是「在候选小集合上用贵模型」的活儿,把它用在第一阶段的位置上是错的。

必须澄清的误会

重排 ≠ 检索。 两段的分工是先宽后准:检索负责不漏,重排负责排准。这条分工带来一个必须记住的推论——第一阶段没召回到的东西,重排一条都补不回来。 所以「上线重排之后效果还是不好」时,第一件该查的事不是重排模型,而是第一阶段到底有没有把正确答案召回到候选里。这就是为什么要先看召回率,再看排名。

重排 ↔ Top-K 是一对要一起调的参数。 K 是第一阶段交出来的候选数量。K 太小时,重排手里没有可挑的东西——正确答案压根不在里面;K 太大时,延迟和成本按条数增长,而收益很快饱和。很多「重排没效果」其实是 K 给得太小,重排在为一个已经漏掉的候选集排序。

重排不能修正内容。 如果切片把「例外条款」切到了另一块里,重排会把这条残缺的规则排到第一位——它按「相关」排序,不按「正确」排序。上游问题必须在切片那一层解决。

重排不是必选项。 候选本来就少(比如就三五条)、或者第一阶段已经足够准的场景,加上它只是徒增延迟。它值得上的信号很具体:候选多、上下文紧、而且你观察到「正确的片段在候选里但排得很靠后」。

真实例子

用户问「取消订单后多久到账」。第一阶段的向量检索召回了三块:「取消订单流程」「退款到账时效」「账户注销说明」。

它们都含有「取消」或「退款」这类词,向量上都很接近——单靠向量相似度,三者难分高下,排序往往取决于谁的字面更巧。

重排器的优势在这里显现:它会把整句问题(尤其是「多久到账」这个真正的诉求)与每条候选细读比较,于是「退款到账时效」被排到第一位,而讲流程和讲注销的两块被压下去。

注意成功的条件:正确答案必须在第一阶段就已经在候选里。这个例子里它在了——如果第一阶段只召回了前两块,重排再强也只会从前两块里挑一个。

什么时候适合与不适合

适合:候选相似度高、上下文预算紧、答案质量值得多付一点延迟的任务。判断信号是「你在评测里看到:正确答案被召回了,但排位靠后」。

不适合:候选本来就很少;或者第一阶段就没召回正确答案(这时该改的是切片、嵌入或加上关键词路,不是加一个重排器)。也别忘了它是要花钱的:多一次模型推理,延迟和成本都涨——上线前应该拿评测数据回答「这多出来的延迟,换回了多少排名提升」。

一个实用的验收方式:重排前后各跑一遍评测集,比较的不只是准确率,还有延迟和单次成本。 只有准确率提升、成本翻倍的改动,未必值得上。

亲自试一下

把检索器返回的前 20 条候选存下来,人工标注每一条到底相不相关——这一步比调参更值得花时间,因为它是后面所有结论的基准。

然后跑一次重排,比较前后前三名的变化。

全程约 25 分钟。观察点是两件事:正确答案在不在前 20 里,以及它重排后排到了第几。 分三种情况读结果:

  • 不在前 20 里 → 问题在第一阶段,重排帮不了你。
  • 在前 20 但排在第 10 名左右、重排后进前三 → 这正是重排的适用场景。
  • 本来就在前三 → 这个场景不需要重排,加它只是加延迟。

顺手记下新增的延迟和单次成本,这两个数字通常会决定它能不能上线。

接下来学什么

重排是第 3 站 给知识 · 怎么让它知道你家的资料 的第二段,也是候选进入上下文之前的最后一道筛选。

顺着这条链路往前:上游是 文档切片、嵌入、向量数据库 与 检索;重排之后,候选会连同来源一起进入 RAG 的生成阶段。要理解「重排取几块」这条边界,读 Top-K 与 上下文窗口。

判断「该不该上重排」,去第 7 站 给判断:没有评测集,你无法区分「排名变好了」和「只是顺序变了」。

来源与修订

「把预训练序列到序列模型改造成相关性排序器」这条路线参考 Document Ranking with a Pretrained Sequence-to-Sequence Model(arXiv 2003.06713);「查询与文档各自保留 Token 级表示、最后再做细粒度交互」这条延迟交互路线参考 ColBERT(arXiv 2004.12832)。两篇分别代表「重新打分」和「细粒度交互」两个方向,是重排这个概念的原始来源。

一处边界要说明:具体用哪个重排模型不是定义的一部分。 本文只讲机制与取舍,是否采用、用哪一种,应由端到端评测(准确率 + 延迟 + 成本)决定——把它写死成某个模型名,是这个词条最容易过期的地方。

修订日期 2026-09-19:本条由生成模板改为决策页——补「必须澄清的误会」一节(对检索、对 Top-K),把「正确答案在不在候选里」写成可操作的三分支判断,去掉生成期的引用标记,补 boundaries 与 minAction。

Learning questions

这个概念出现在哪些题里

下面的题目直接引用了本词条,适合先做判断,再回到正文核对边界。

Case practice

这个概念出现在哪些案例里

案例中的这些关卡会把概念放进业务约束、证据与取舍里练一遍。

Learning navigation

学习导航

沿认知链路:你现在在第 3 站,下一站是「给手脚 · 怎么让它做事」:先沿主路径补上这一层。

Relation topology

概念关系

本词条在知识拓扑中的连接关系。涵盖前置依赖、组成要素、对比差异与应用场景。

拓扑图谱网络 · 一度关联场

可拖拽节点、滚轮缩放、点击节点探索

Local relation field

重排的一层关系

2 个节点 · 2 条直接关系

关系类型
图谱进入视口后加载

交互图谱之外,本页下方保留完整文字关系与词条链接。

Source register

核验来源

  1. Document Ranking with a Pretrained Sequence-to-Sequence ModelarXiv · 访问于 2026-09-19
  2. ColBERT - Efficient and Effective Passage Search via Contextualized Late Interaction over BERTarXiv · 访问于 2026-09-19

发布 2026-07-29 · 更新 2026-09-19 · 核验 2026-09-19