真实面经题目 · 原创解析

在检索增强或语义搜索链路中,Qwen3 Embedding 模型和 Qwen3 Reranker 模型分别解决什么问题?二者在输入输出、训练目标、召回/精排位置和延迟成本上有什么区别?

这道题考察语义检索/RAG 链路中双编码召回和交叉编码精排的差异。回答要讲清 Embedding 负责低成本召回,Reranker 负责高精度相关性重排,二者输入输出、训练目标和延迟成本不同。

出现于:腾讯 · 算法

60 秒回答模板

在 RAG 或语义搜索里,Embedding 模型通常是 bi-encoder:query 和 doc 分别编码成向量,用余弦、点积或 ANN 索引快速取 TopK。它解决的是大规模候选召回问题,优点是文档向量可以离线预计算、检索快、成本低;缺点是 query-doc 交互较弱,对细粒度相关性、否定词、条件约束和长文档局部证据可能不够敏感。 Reranker 通常是 cross-encoder 或更强的 pairwise/listwise 模型:把 query 和候选文档一起输入,输出相关性分数,再对召回的几十到几百条候选重排。它解决的是精排和过滤问题,能显式建模 query 与文档 token 级交互,相关性更准,但不能对全库逐条打分,延迟和算力成本明显更高。训练上,Embedding 更常用对比学习、in-batch negatives、hard negatives,让相关 query-doc 向量更近;Reranker 常用 pairwise/listwise ranking loss 或分类/打分目标,强调候选间顺序。线上应先用 Embedding 取较大的召回池,再用 Reranker 控制 TopN,最后用答案生成和引用验证评估整体效果。

考点 Embedding 是低成本大规模召回,Reranker 是高成本小候选精排
难度 真实面经题
回答目标 让候选人能完整解释 Qwen3 Embedding 与 Reranker 在 RAG 链路中的职责、训练目标、工程成本和评估方式。

深入解析

01

链路位置

Embedding 位于召回阶段,要从大规模语料中快速找候选。Reranker 位于召回之后,只处理少量候选,用更高成本换更好的排序质量。

02

输入输出

Embedding 分别输入 query 和 doc,输出固定维度向量;Reranker 输入 query-doc pair 或 query-doc list,输出相关性分数或排序。

03

训练目标

Embedding 多用对比学习和 hard negative,让语义相关样本向量接近。Reranker 多用 pairwise/listwise 或分类目标,学习候选之间谁更相关。

04

质量差异

Embedding 检索速度快但交互弱,可能被表面语义相似误导。Reranker 能捕捉否定、约束、实体匹配、局部证据和段落关系,通常提升精排准确率。

05

成本取舍

Embedding 可预计算文档向量并用向量索引,延迟主要在 query 编码和 ANN。Reranker 要对每个候选在线推理,候选数、文本长度和模型大小直接决定延迟。

06

评估方式

召回阶段看 Recall@K、MRR、nDCG 和覆盖率;精排后看 nDCG@N、Top1/Top3 命中、生成引用命中、答案正确率和端到端延迟成本。

易错点

  • 把 Embedding 和 Reranker 都说成向量模型,忽略输入输出差异。
  • 认为 Reranker 可以替代向量索引做全库检索。
  • 只说精排更准,不解释 token 级交互和成本原因。
  • 忽略候选数和文本长度对 rerank 延迟的影响。
  • 只看 TopK 命中,不看生成引用和端到端答案质量。
  • 没有提 hard negative,导致训练目标讲得很浅。

面试官追问

为什么不用 Reranker 直接全库检索?

因为 Reranker 要对 query 和每篇文档做联合编码,全库逐条打分成本不可接受。它适合在 Embedding 召回出的有限候选上精排。

Embedding 召回 TopK 取多少合适?

要在召回率和 rerank 成本之间权衡。可以离线看 Recall@K 曲线,再结合 reranker 延迟和生成上下文长度选择,例如从 50、100、200 做实验。

hard negative 对两者有什么价值?

对 Embedding,它让向量空间学会区分语义相近但不相关的样本;对 Reranker,它训练模型在候选内部做细粒度判别,减少表面相似误排。

RAG 最终只看检索指标够吗?

不够。还要看答案是否引用正确证据、是否幻觉、是否覆盖用户约束,以及端到端延迟和成本。检索好不一定生成好,生成好也可能掩盖引用错误。