Skip to content

7.2.1 什么是重排(Rerank)? ​

先给结论:Rerank 可以先理解成:在初次召回拿到一批候选之后,系统再用更强、更细的判断方式,对这些候选重新排序,挑出更值得优先进入最终上下文的结果。

所以它的重点不是“再查一遍”,而是:

  • 在已有候选里重新判断谁更该排前面

它和第一次检索的动作差在哪 ​

第一次检索更像是在做:

  • 先把可能相关的结果带进来

而 Rerank 更像是在做:

  • 在这些候选里重新审一遍,谁最值得优先用

也就是说,Rerank 通常不是面向全库,而是面向:

  • 初次召回后的候选集合

为什么要“重新排” ​

因为第一次检索通常更偏向:

  • 快速召回
  • 尽量别漏

这会带来一个自然结果:

  • 候选池里常常会混进“有点像,但不够关键”的内容

这时如果直接把前几条送给模型,系统就容易:

  • 把边缘相关内容排太前
  • 让真正关键候选排太后

Rerank 的价值就在于:

  • 再花一次更细的判断成本,把顺序拉正

一个最小示意 ​

python
initial_results = retrieve(user_query, top_k=20)
reranked_results = rerank(user_query, initial_results)
final_results = reranked_results[:5]

这段代码想说明的是:

  • Rerank 建立在已有候选上
  • 它的输出仍然是结果排序
  • 它决定的是谁更该进入最终上下文

Rerank 常见在比较什么 ​

更直观地说,Rerank 通常会重新评估:

  • 当前问题和每条候选到底有多相关
  • 候选是不是只是表面相似
  • 哪条候选更接近真正答案所需证据

和初次召回相比,它通常会:

  • 看得更细
  • 代价更高
  • 但候选规模更小

这也是为什么它常放在第二阶段。

为什么它不能替代召回 ​

这点一定要先看清。

Rerank 再强,也有一个前提:

  • 正确内容得先进入候选池

如果第一次召回根本没带回来,Rerank 就没有东西可排。

所以它更像是在做:

  • 候选优先级修正

而不是:

  • 候选凭空创造

一个常见误区 ​

很多人会把 Rerank 想成:

  • 一个更强的检索器

更准确的理解是:

  • 它是检索之后的第二次排序判断

它当然会影响最终结果,但它的输入前提仍然是:

  • 先有候选

一句话总结 ​

Rerank 就是在初次召回之后,对已有候选重新排序。它不负责把全库再查一遍,而是负责在候选池里把更值得优先使用的结果顶上来。它解决的是顺序问题,不是全量召回问题。