01
60 秒回答模板
我会分两类指标评估:第一类是蒸馏是否学到粗排,第二类是作为召回是否真的带来增量。蒸馏一致性可以看学生召回分数与粗排 teacher 分数的相关性、KL/MSE loss、pairwise ranking accuracy、teacher TopK 的 Recall,例如 `Recall_teacher@K = |TopK_student ∩ TopK_teacher| / K`。但这还不够,因为召回最终要服务后链路,所以要看历史点击/转化正样本的 `Recall@K`、NDCG@K、去重后新增候选率、进入粗排/精排/曝光/点击/转化的漏斗贡献,以及和原召回的 overlap。工程侧要看索引构建成本、向量检索延迟、QPS、候选数量和单位有效候选成本。在线 A/B 用 baseline 召回 vs 蒸馏召回,核心看 CTR/CVR/GMV 或广告收入,护栏看多样性、长尾覆盖、延迟和稳定性。若蒸馏只提高 teacher 一致性但线上没有增量,说明它可能只是复制粗排偏差,没有改善召回池。
考点 评价要分“拟合粗排 teacher”...
难度 真实面经题
回答目标 让候选人能用“teacher 拟合 + 召回指标 + 后链路漏斗 + 工程成本 + 在线 A/B”的框架评价蒸馏召回,而不是把蒸馏 loss 当成唯一答案。
02
深入解析
01 机制定位:召回蒸馏粗排是把后链路偏好前移
传统召回模型通常更轻量,目标是高覆盖、低延迟;粗排模型特征更丰富、排序能力更强,但只能处理较少候选。蒸馏的想法是用粗排 teacher 给更多样本打 soft label 或排序关系,让召回 student 在海量检索阶段就更偏向粗排喜欢的 item。蒸馏形式可以是 pointwise 分数回归、pairwise/listwise 排序蒸馏、embedding 对齐或 topK list 蒸馏。关键是:召回侧学 teacher 不是目的,目的是提高进入后链路的候选质量。
02 蒸馏一致性指标:先确认学生有没有学会老师
可以看 pointwise 的 MSE/KL:`L = KL(softmax(s_teacher/T) || softmax(s_student/T))`,也可以看 pairwise 一致性:对 teacher 判断 `i > j` 的样本,student 是否也给 `s_i > s_j`。TopK 一致性可用 `Recall_teacher@K`、Jaccard、Kendall Tau、Spearman 相关和 NDCG_teacher。温度 T 可以保留 teacher 的暗知识,使学生不只学习 hard top1。但这些指标只说明拟合程度,不代表业务效果,因为 teacher 自身可能有偏,且召回的候选空间与粗排训练空间不同。
03 召回效果指标:看正样本、增量和覆盖
召回评价要回到检索任务:历史点击、加购、购买或高质量互动样本是否被召回。常用指标包括 `Recall@K`、HitRate@K、NDCG@K、MRR、正样本平均排名、分人群/品类/冷启动覆盖率。多路召回中还要看和原召回的 overlap、unique contribution、长尾 item 覆盖、内容多样性以及被后链路采纳的比例。如果蒸馏模型只把热门 item 排得更靠前,短期 Recall 可能上升,但长尾和探索能力下降,整体生态可能变差。
04 下游漏斗指标:召回好不好由后链路最终判断
蒸馏召回候选要经过融合、粗排、精排和重排,所以必须记录候选来源,计算从召回到粗排 TopN、精排 TopN、曝光、点击、转化的漏斗通过率。可以定义 `downstream_yield = 转化候选数 / 召回候选数` 或 `exposure_contrib = 来自蒸馏召回的最终曝光数 / 总曝光数`。如果召回正样本多但粗排不采纳,说明训练目标和后链路不匹配;如果粗排采纳但精排/用户不买单,说明 teacher 偏好未必等于最终价值。
05 工程成本:召回模型必须满足低延迟和可扩展
蒸馏模型常用于向量召回或轻量打分召回,要评估 embedding 生成成本、索引规模、ANN 检索延迟、更新频率、内存、QPS、p95/p99、超时率和降级策略。粗排 teacher 可能使用大量交叉特征,而 student 如果过大,就失去召回阶段的工程意义。评价时要看单位有效候选成本,例如 `有效点击/转化贡献 ÷ 检索耗时或机器成本`。若质量提升很小但索引和延迟成本大幅上升,ROI 不成立。
06 在线 A/B:比较端到端增量和护栏
A/B 可以设计为原召回池 vs 加入蒸馏召回池,或原召回模型替换为蒸馏模型;若替换风险大,可以先加小配额。核心指标看 CTR、CVR、GMV、时长、订单、广告收入等,护栏看延迟、超时、内容多样性、长尾曝光、新品曝光、用户负反馈和重复率。实验要分冷启动、老用户、高活、低活、品类和场景切片,因为蒸馏可能只在部分分布下有效。线上结论应以整体增量和稳定性为准,而不是 teacher 相似度。
07 失败模式:过度模仿 teacher 会让召回失去探索
召回模型如果过度学习粗排,会把粗排的偏差提前固化,导致候选池变窄、热门化、多样性下降。训练样本如果只来自老召回池,还会有 selection bias:teacher 没见过的 item 永远无法被 student 学到。另一个问题是 teacher 的分数校准和召回检索空间不一致,student 拟合分数但排序不稳定。解决思路包括加入真实行为标签、多样性/覆盖约束、负样本重采样、teacher+label 多目标训练、探索流量和定期重蒸馏。
03
易错点
- 只看蒸馏 loss 降低,就认为召回效果变好。
- 把粗排 teacher 当绝对真值,忽略 teacher 偏差和目标不一致。
- 不记录候选来源,无法评估蒸馏召回在后链路的真实贡献。
- 只用老召回池训练 student,造成候选空间 selection bias。
- 忽略系统延迟和索引成本,让召回模型变得过重。
- 过度追求高精度,牺牲多样性、长尾覆盖和探索能力。
04
面试官追问
蒸馏标签应该用粗排分数还是用户真实点击转化?
通常两者结合。粗排分数提供更密集的 soft signal,能让召回学到 teacher 的排序偏好;真实点击/转化代表最终业务目标,能防止 student 只复制 teacher 偏差。可用多目标损失:`L = α L_distill + β L_label + γ L_regularization`,并通过验证集和 A/B 调权。
如果 teacher-student TopK overlap 变高,但线上 CTR 没提升怎么办?
说明拟合 teacher 不等于改善召回。需要检查新候选是否有增量、是否被后链路去重或截断、是否热门化导致多样性下降、teacher 是否与最终精排/用户目标不一致。可以降低蒸馏权重,引入真实标签和覆盖约束,或只在 teacher 可靠的场景使用蒸馏召回。
如何构造蒸馏训练样本避免 selection bias?
不能只用老召回已经召到的候选,否则 student 的视野被老系统限制。可以加入随机探索、热门/长尾分层采样、ANN 近邻扩展、曝光未点击负样本和未曝光候选的 teacher 打分。还要按用户、品类、时间切分,避免训练集只代表历史策略。
召回蒸馏后多样性下降如何处理?
可以在训练中加入长尾/品类覆盖约束,融合阶段设置多样性配额,或在召回池中保留探索通道。评估时单独监控 category entropy、长尾曝光占比、新品曝光、重复率和用户负反馈。蒸馏通道不一定要独占召回,常见做法是作为高精度通道与其他覆盖型通道互补。