召回策略与算法选型

召回是推荐系统的第一级漏斗,决定了候选池的质量与上限。面试官会从算法选型、实时性、多路融合策略三个维度考察你的系统设计能力和工程落地经验。本章结构化拆解高频考点与规模化场景下的关键决策点。

召回算法选型回答框架 场景分析 实时? 候选池大小? 算法选型 双塔/图/向量 实时召回 行为序列触发 多路融合策略 动态权重/分层 评估迭代 召回率/效率指标

面试问答卡片

面试问题

请对比几种主流召回算法(如协同过滤、双塔模型、图召回、向量召回)的优缺点及适用场景。

面试官考察点
  • 是否理解不同算法在稀疏性、冷启动、可解释性、工程复杂度上的本质差异
  • 能否结合业务场景(如信息流、电商、短视频)给出选型依据
  • 对实时性、存储、召回规模是否敏感
回答框架
  1. 分类对比:按是否依赖用户/物品特征、是否离线计算、能否处理冷启动分组
  2. 核心指标:召回率、响应延迟、内存开销、可增量更新
  3. 典型场景:粗排前召回用向量,近线用双塔,强实时用树检索
简短示例回答

“双塔模型适用于大规模物品的离线相似度计算,工程成熟度高;图召回能捕获高阶协同信号,适合社交关系丰富的场景;向量召回依赖优质embedding,冷启动需补充规则。我在短视频场景采用‘双塔+图+规则’三路并行,通过分层权重融合,召回率提升17%。”

可能追问
  • 双塔模型如何处理用户行为序列的实时变化?
  • 图召回的在线服务如何控制计算开销?
  • 向量召回中HNSW的参数如何调优?
避坑提醒:不要只谈理论不谈指标;需强调线上A/B测试结果;避免将算法优劣化,应说“在XX条件下,YY更合适”。

面试问题

如何设计实时召回策略?请以用户点击行为触发为例说明。

面试官考察点
  • 对实时数据流(如Kafka/Flink)的掌握程度
  • 如何在延迟和召回质量之间做权衡
  • 是否考虑过流量冲击、冷启动等工程问题
回答框架
  1. 触发时机:点击后秒级延迟,通过消息队列到达近线服务
  2. 计算路径:行为序列→更新用户向量→查询候选池→加入召回结果缓存
  3. 兜底策略:频率限制、降级到离线召回、限流开关
简短示例回答

“我们采用Flink消费点击流,每10秒更新一次用户短期兴趣向量。向量通过Faiss查询最近邻,结果与离线召回路合并。对高频点击做去重和限流,防止重复计算。上线后推荐点击率提升5.2%,系统TP999延迟控制在50ms以内。”

可能追问
  • 如何保证实时召回结果与离线召回结果不重复?
  • 实时召回如何对候选物品做多样性控制?
  • 如果Flink任务宕机,如何恢复?
避坑提醒:避免只讲算法逻辑而不提容错和监控;必须量化延迟和收益;强调实时召回是锦上添花而非替代离线。

面试问题

多路召回结果如何进行有效融合?请设计一套融合策略。

面试官考察点
  • 是否具备多路结果冲突处理的经验
  • 能否平衡召回率、精排压力与体验多样性
  • 是否了解预排序模型的融合方式
回答框架
  1. 分层融合:先合并去重,再按来源权重做预排序
  2. 动态权重:通过在线学习或强化学习调整各路配比
  3. 干预机制:业务规则(如新人保底、类目打散)后置执行
简短示例回答

“我们使用‘预排序+轻量模型’融合:先对各路召回结果取并集、去重、记录来源。用一个两层的MLP预估点击率,输入为物品在各路中的得分和特征,输出融合分。A/B测试显示,相比固定加权,召回有效点击提升8%。”

可能追问
  • 如果某路召回延迟过高导致空窗,如何兜底?
  • 预排序模型训练时正负样本如何构造?
  • 如何防止多路融合导致多样性下降?
避坑提醒:不要只提简单加权平均;务必谈到模型化融合和在线调权;说明预处理(去重、归一化)的重要性。

项目案例:真实召回系统重构

项目案例:快手短视频召回系统重构(STAR) Situation 日活2亿,召回率不足 Task 提升召回覆盖+实时性 Action 双塔+图+实时三路融合 Result 召回率+12%,CTR+5% 核心难点:实时向量更新 & 多路冲突 面试高频追问点(见下方)
项目要素内容
项目名称短视频召回系统多路融合升级
业务背景DAU 2亿+,原召回以协同过滤为主,冷启动差、实时性不足,推荐多样性下降
规模指标候选池 500万视频,线上QPS 10万,召回层TP99 < 30ms
技术栈Flink实时流、Faiss向量检索、GraphEmbedding、LightGBM预排序模型、Kafka
核心难点①用户短期行为向量秒级更新与Faiss索引重建的冲突;②多路候选结果重复率高达40%;③实时召回对离线召回的质量冲击
面试高频追问- 如何处理Faiss索引的实时更新与查询一致性?
- 图召回训练如何利用用户行为序列?
- 预排序模型的正负样本采样比例多少?
- 多路融合中如何防止头部效应(只推荐热门)?
可迁移回答话术“遇到多路召回冲突时,我首先分析各路的覆盖率和重复率,参考快手做法:采用‘预排序+轻量模型’融合,同时加入多样性打散规则。关键指标是召回率和CTR,最终通过AB实验迭代3版上线,验证了模型化融合优于固定加权。”