← 返回题库
第 180 题 · RAG · 中等

为什么 RAG 常用 Cross-Encoder 做重排?

核心必会 这代表什么?
✓ 资料核验 来源说明:公开真实面试题整理;答案依据原论文原创整理
RerankerCross-Encoder两阶段检索
评论与补充 ↓
口述训练

先用自己的话答,再看参考说法

60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。

别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。

面试时怎么答

先用一句对比说透:双塔适合全库召回,因为文档向量能预计算;Cross-Encoder 让查询与文档联合编码,相关性判断更细,但每一对都要重新算,所以放在第二阶段。

追问通常是候选数怎么定,或重排能否弥补漏召回。明确说它救不了召回集合之外的文档,再用 N、批大小、模型尺寸与尾延迟的联合实验回答参数选择。

可以这样答:

Cross-Encoder 把查询和候选文档一起编码,可以利用细粒度的 Token 交互,通常比双塔相似度更准确;代价是文档不能一次预计算,无法直接遍历全库。因此常先用 BM25 或向量检索召回几十到几百条,再批量重排。候选太少会限制效果上限,太多又推高成本,应联合比较 Recall 上限、nDCG、最终答案质量和 P95 延迟。

核心回答

第一阶段检索器的目标是低成本地从全库取得高召回候选;Cross-Encoder 把 Query 与候选文档联合输入模型,能进行更细粒度的 token 交互,因此通常比独立编码的双塔相似度更适合精排。代价是每个 Query-Document 对都要执行模型计算,所以只对 Top-N 候选重排,再选较小的 Top-K 送给生成器。

展开说明

典型两阶段流程是:

  1. BM25、Dense 或 Hybrid 从全库召回 Top-N。
  2. 对 N 个 Query-Document 对进行 Cross-Encoder 打分。
  3. 依据重排分数选择 Top-K,并完成去重、邻接片段合并和 token 预算控制。

双塔模型可预先计算文档向量,适合大规模近邻搜索;Cross-Encoder 不能这样复用文档表示,但可以直接建模否定词、实体关系和查询条件。Reranker 只能重新排列已有候选,无法找回第一阶段没有召回的文档,因此必须同时观察候选 Recall@N 和重排后的 nDCG@K、MRR。

LLM Rerank 还能处理复杂指令,但成本、延迟、顺序偏差和输出稳定性需要单独评估,不能仅凭模型更大就假设更准确。

工程实践

根据 SLO 扫描 N、K、模型大小和 Batch Size,测量质量增益与 p95 延迟。训练或选择 Reranker 时要加入难负例,并确保 Query 与文档截断没有删除关键条件。上线后保存粗排名次和精排分数,区分“没召回”和“排错了”。

常见追问

  1. Bi-Encoder 与 Cross-Encoder 的计算方式有什么差别? Bi-Encoder 独立编码查询和文档,文档向量可预计算;Cross-Encoder 联合编码二者,交互更充分但每个 Pair 都要前向。
  2. Top-N 太小或太大分别会发生什么? 太小会在重排前丢掉相关文档,形成不可恢复的召回上限;太大会增加 GPU 成本和 P95 延迟,并引入更多噪声。
  3. 为什么 Reranker 不能修复所有召回问题? 它只能重新排序候选集,相关文档若未进入候选、被权限过滤或切块缺失,重排模型无从恢复。

一句话复习

粗排负责从全库高召回,Cross-Encoder 负责在有限候选中高精度排序,两者解决不同问题。

参考资料

无需账号 · 原地交流

评论与补充

评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。

正在加载评论…