面灵AI→

B站推荐算法一面面经:生成式召回13问详解

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

  1. 构建 SID 编码体系时,引入曝光容量约束的具体实现方式是什么?
  2. 增加曝光约束后会增大量化误差,如何平衡业务约束与量化精度的 Trade-off?
  3. 是否统计过 SID 编码的碰撞率?工程中如何缓解和解决编码碰撞问题?
  4. 模型 SFT 微调采用何种训练方案?LoRA 微调的核心优势是什么?
  5. 生成式召回任务中,SFT 训练数据集的构造逻辑与筛选标准是什么?
  6. 用户行为序列长度差异悬殊如何处理?针对无历史行为的冷启动新用户,有哪些解决思路?
  7. 生成式召回天然存在推理延迟高的问题,项目中从哪些维度做了降延迟优化?
  8. 简述主流的经典召回模型架构及适用场景。
  9. 双塔向量召回模型存在哪些固有缺陷?重点分析长尾物品表征学习不足的问题。
  10. 不依赖生成式方案,仅从双塔模型结构本身优化,如何提升长尾 Item 的表征质量?
  11. 简述双塔模型 Pointwise、Pairwise、Listwise 三种训练范式的区别,以及对应的损失函数。
  12. InfoNCE 损失中温度系数的核心作用与设计意义是什么?
  13. 结合 B站推荐体验,分析其推荐系统现存问题;从召回、精排、重排全链路说明优化多样性的具体方案。

《参考解析》

SID 编码体系为什么要加曝光容量约束:语义 ID 通常由 RQ-VAE 或分层聚类对 item 的语义向量逐级量化得到,每级一个码字,串起来就是 item 的「词」。如果只按语义聚类,热门 item 会大量落进同一批码字,导致码本分布极度倾斜:生成式模型只要反复生成那几个高频码就能刷高指标,尾部码字几乎学不到。曝光容量约束就是给每个码字设一个「可承载曝光量/占比」的上限,量化时加入容量惩罚或按曝光分桶做配额,让码字在曝光维度上更均衡。实现上常见「软惩罚 + 分层处理」:前 1~2 级保语义可分,末级再施加容量约束控制尾部。

量化误差与业务约束怎么权衡:约束越硬,簇的几何形状越偏离语义最优划分,重构误差上升、码本利用率下降、碰撞率变高。可操作的权衡是:把容量约束写成带权软惩罚,用线上 A/B 的召回率与多样性指标反调权重;用残差量化把误差摊到后续层;对头部 item 单独放码,让精度损失集中在本来就不需要细分的尾部。回答时最好给出「约束强度 → 离线重构损失/碰撞率 → 线上指标」的验证闭环,而不是只说「找平衡点」。

碰撞率的统计与治理:离线统计整体碰撞率(1 − 唯一 SID 数 / item 总数)和曝光加权碰撞率(更贴近线上影响)。治理手段包括扩大码本、增加量化层级、末级用更大码本、对高频 item 分配独占码、碰撞组内用 item id 后缀区分(召回退化为组内再排)。最后要接受一点:碰撞无法完全消除,能做的是让撞在一起的 item 语义相近,把错误控制在可接受范围。

SFT 与 LoRA:生成式召回里的 SFT 目标是让模型学会「给定用户历史/偏好前缀,生成该用户可能感兴趣的 item 的 SID 序列」。数据构造通常是「用户行为序列 → 目标 item 的 SID」,正样本来自真实曝光点击(尤其强正反馈如完播、点赞、收藏),负样本和困难负样本按曝光未点击、随机采样、流行度校正等方式混合;筛选标准包括去噪(误点、爬虫、异常频次)、去偏(热门降权)、保证长尾覆盖、以及序列长度与时间切分(避免用未来信息泄漏)。LoRA 的核心优势是在冻结原权重的前提下旁路低秩矩阵 ΔW = BA,可训练参数量降到千分之一量级,显存占用与训练成本大幅下降,且能多套 LoRA 并存、推理时可 merge 回主权重做到零额外延迟,适合按业务快速迭代。

序列长度悬殊与冷启动:训练侧用截断 + padding + mask,并按长度分桶采样避免长序列主导;建模侧用多尺度(短期最近 N 个行为 + 长期兴趣分桶聚合)加 attention 池化,让短序列也能学到有效表征。冷启动用户:热门/地域/时段/设备先验兜底,内容属性(类目、标题文本、封面多模态)做召回,探索流量(ε-greedy、Thompson sampling)快速积累反馈,同时用「相似用户」的群体偏好做迁移。

生成式召回降延迟:解码侧用更小的 beam、前缀树约束合法 SID、限制生成长度、投机解码;模型侧量化、KV cache 复用、批处理、蒸馏小模型;系统侧两段式(粗生成 + 向量检索补足)、生成与检索并行、热点缓存;工程上必须给生成设超时并准备回退到双塔召回,才能守住 P99。

双塔的固有缺陷:user 塔与 item 塔只在最后做内积,无法建模细粒度交叉特征,表达上限低于交叉塔;训练时热门 item 被高频采样,长尾 embedding 更新少、梯度弱,且内积空间中长尾向量容易聚集在原点附近,导致长尾几乎召不回。仅从结构侧优化可考虑:负采样上做流行度校正与困难负样本挖掘;损失上做逆倾向加权等去偏;加辅助任务(内容重建、类目预测)给长尾补梯度;用 cosine + margin 的角度间隔约束避免向量塌缩;用多向量/多兴趣表示给长尾更多落点。

三种训练范式与损失:Pointwise 把每个 (user, item) 当独立样本,BCE/MSE;Pairwise 用 (正, 负) 对,hinge 或 BPR 的 −log σ(s+ − s−);Listwise 对整条候选列表做 softmax 交叉熵(ListNet)或 LambdaRank 的 λ 梯度。工业召回主力是 Pairwise 与 sampled softmax(listwise 的高效近似)。

InfoNCE 的温度系数:−log( exp(s+/τ) / Σ exp(si/τ) )。τ 小 → 分布尖锐,梯度集中在最难负样本,表征更均匀、区分度更高,但对噪声标签敏感、训练不稳;τ 大 → 分布平滑,学习信号被摊薄、表征趋同。它控制负样本惩罚强度,常作为可学习参数(logit scale),实践取值 0.05~0.2。

B站推荐的多样性问题与全链路方案:现象是同质化(连刷同类视频)、信息茧房、新分区与新 UP 主拿不到曝光。归因在目标(点击/时长天然偏好头部与强兴趣)、召回源单一、精排分数集中、重排缺少打散。方案按链路:召回扩源(内容召回、跨域召回、长尾专项通道);精排做多目标融合与分数校准(互动、负反馈单独建模);重排加多样性约束(DPP、MMR、类目与 UP 主打散、滑窗去重)。评测上除 CTR/时长外必须单看类目熵、覆盖率、长尾曝光占比与负反馈率,否则多样性会被单一目标优化掉。