真实面经题目 · 原创解析

推荐系统中用召回模型蒸馏粗排模型时,如何评价蒸馏后的召回效果?

这题考察召回模型蒸馏粗排模型后的评价方法。核心在于区分“学生模型是否拟合了粗排老师”和“蒸馏后的召回是否真的更好”。召回蒸馏粗排通常是把粗排模型对候选的打分、排序关系或 top item 偏好迁移到召回侧,使召回阶段更早拿到高质量候选。但评价不能只看蒸馏 loss 或 teacher-student 分数相关性,因为召回的职责是从海量 item 中找回后链路需要的候选。高质量答案应覆盖:离线召回指标、与 teacher 排序一致性、下游粗排/精排漏斗贡献、系统性能成本、在线 A/B 以及失败模式,如过度模仿粗排导致多样性下降、覆盖变窄、训练候选偏差和 teacher 错误被放大。

出现于:美团 · 算法

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 当成唯一答案。

深入解析

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 多目标训练、探索流量和定期重蒸馏。

易错点

  • 只看蒸馏 loss 降低,就认为召回效果变好。
  • 把粗排 teacher 当绝对真值,忽略 teacher 偏差和目标不一致。
  • 不记录候选来源,无法评估蒸馏召回在后链路的真实贡献。
  • 只用老召回池训练 student,造成候选空间 selection bias。
  • 忽略系统延迟和索引成本,让召回模型变得过重。
  • 过度追求高精度,牺牲多样性、长尾覆盖和探索能力。

面试官追问

蒸馏标签应该用粗排分数还是用户真实点击转化?

通常两者结合。粗排分数提供更密集的 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、长尾曝光占比、新品曝光、重复率和用户负反馈。蒸馏通道不一定要独占召回,常见做法是作为高精度通道与其他覆盖型通道互补。