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