Sunday 的面试指南

RAG 中 Rerank 是什么?为什么重排不能代替召回?

🧑‍💻 面试官:用户问退款例外,正确条款已经被检索到了,但模型还是没答对。你要加 Rerank 吗?

🙋‍♂️ 我:先看正确条款停在哪一层。如果它在召回的前 20 条里,却排在第 17 位,而最终只给模型前 5 条,重排可能有用。

🧑‍💻 面试官:如果前 20 条里根本没有正确条款呢?

🙋‍♂️ 我:那 Rerank 无法凭空补出它。应该回去检查解析、切片、过滤或召回,而不是给空候选池加一个更强的排序器。

🧑‍💻 面试官:把候选扩大到 1000 条再重排,总能解决吧?

🙋‍♂️ 我:未必。候选变多会增加延迟、费用和噪声。要在固定问题集上找合适的候选深度和最终片段数量,确认答案真的改善了。

先问“证据有没有进候选池”,再问“它有没有排进最终上下文”。这两个问题分别属于召回和重排。

面试速答(60 秒版)

Rerank 就是对已经检索出来的一批候选,结合用户当前问题重新排序。召回阶段要尽量把可能有用的材料找进来;重排阶段再从这些材料中挑出更值得放进模型上下文的几条。

例如正确条款在 Top 20 里,但原排序排到第 17,系统只取前 5 条给模型,这时重排有机会把它提上来。可如果 Top 20 根本没有目标条款,Rerank 不会凭空生成证据,问题还是出在召回链路。

上线时要同时调整召回候选数和最终保留数,用带标准证据的问题集看目标条款进入最终上下文的比例,再看答案质量、延迟和成本。不是看到“加 Rerank 后相关分数更高”就宣布有效。

知识点详解:先把证据找来,再决定给模型看哪条

先召回候选再重排,候选池没有的证据无法由重排补入

为什么第一阶段通常不直接精排全库

一个知识库可能有大量片段。查询时先用向量、关键词或混合检索快速拿出一小批候选,再对这批候选做更细致的查询—片段比较。这就是常见的两阶段结构。

假设召回了 20 段政策文字,真正包含退款例外的段落排在第 17 位。生成模型最终只能收到前 5 段,那么“检索命中”在日志里是真的,“模型没看到关键证据”也是真的。重排要解决的是后一件事:从已有候选里重新判断哪些段落更贴合这次问题。

召回漏了,重排也无能为力

如果目标段落在 OCR 时就没解析出来,或者切片把条件拆散,或者权限过滤误删了它,后面再强的 Rerank 都看不到它。排查时要保留候选列表与最终上下文,确认片段究竟在第几步消失。

另外,重排给出的“相关”也不等于“事实正确”。一条过期政策可能很相关,仍要做版本和来源检查。不要把排序模型当成业务裁判。

K 和 N 是两个不同的取舍

设第一阶段取 K 条、重排后留 N 条。K 太小,目标证据进不来;K 太大,重排时间和费用上升,也可能把噪声带进来。N 太小,完整条件可能被截掉;N 太大,生成上下文又会膨胀。

因此先用标注问题看目标片段在 Top K 里的召回,再看它经过 Rerank 后能否进入 Top N,最后看答案是否忠实于证据。三层结果分开记录,才能知道哪一步真的值得花钱。

面试官继续追问

重排后的最高分很高,可以直接回答吗?

不可以。相关分数只是排序信号,还要检查片段版本、权限、完整条件和模型最终回答。分数阈值需按当前任务校准。

Rerank 一定会改善最终答案吗?

不一定。若原排序已足够好,或者候选里本来没有答案,加重排只增加成本。要做有/无重排的同集对比。

召回有两段互补证据,重排只留下了一段怎么办?

这说明最终上下文组装也要评测。可以调整 N、按文档结构回溯相邻条款,或在重排后检查关键条件是否被一起保留。

面试速记卡

  • 召回:把可能有用的证据找进候选池。
  • Rerank:对已有候选按当前问题重新排序。
  • 漏召回:目标不在候选里,重排补不回来。
  • 两个参数:候选 K 与最终保留 N,要分别验证。
  • 最终标准:证据进入上下文并改善答案,而非分数好看。
简历汪永久免费在线制作简历,模板直接套用、导出无水印,永久免费、下载免费,不需要付费解锁任何功能。去写简历