推荐系统的召回和排序两阶段为什么分开?

算法工程师第 15 / 15 题答题框架
参考思路:海量候选与算力矛盾→召回(多路/向量)粗筛→排序(精排模型打分)→重排(多样性/业务规则)。讲清漏斗各阶段目标。

五个经典回答示范

回答一 · 思路口述版

「推荐系统分开两阶段是算力与效果的折中:全库物料百万级,精排模型太重不可能全量打分。召回先从海量里快速拉出几百到几千候选——多路召回:协同过滤、向量双塔、热门、关注关系,保证覆盖与多样性;排序用更重的模型对候选精打分——特征更全、结构更深;之后可能加重排做多样性与业务规则。」

回答二 · 1-3年经验版

我讲实习参与的信息流项目:召回侧双塔模型离线训练,用户塔物料塔分别出向量,线上 ANN 检索毫秒级;另配 I2I 协同与热门三路并行。排序侧 DIN 结构,用户行为序列做 target attention。两个难忘教训:只加新召回不调融合权重会挤占旧路流量;排序特征穿越(用了未来信息)离线 AUC 虚高线上暴跌——特征时间对齐成了红线。

回答三 · 资深版

我从系统视角讲各阶段目标函数不同:召回目标是『别漏』——训练用负采样,评估看召回率与覆盖,注意样本选择偏差,流式训练缓解;排序目标『排准』——pointwise/pairwise/listwise 按业务损失选,多目标融合(点击、时长、互动)用参数化帕累托或 MMoE;重排目标『整体最优』——SLIPPER 类序列生成考虑列表间影响。冷启动与探索利用是贯穿问题。

回答四 · 追问应对

追问「召回评估怎么做」:固定精排模拟全流程看最终指标,或对召回层直接算 hit rate@K 加多路覆盖分析;「多目标怎么融合」:超参融合公式起步,进阶 MMoE 或按人群动态调权;「特征穿越怎么防」:特征快照按请求时间落、训练样本用当时可见值,代码层加时间断言。

回答五 · 反面示范

『推荐就是调用协同过滤算相似度,模型直接上最深的排序模型对全库打分最准确,算力不是问题加机器就行。』——点评:全库精排的算力成本是天文数字,两阶段不是知识而是工程常识;对样本偏差、特征穿越这类真实痛点无认知。

怎么练这道题
  1. 打开 模拟练习,选择「算法工程师」方向,限时 3 分钟作答本题。
  2. 对照上方答题框架,逐点检查:哪些要素没覆盖、哪里表达啰嗦。
  3. 用自己项目的真实经历替换框架中的占位内容,重讲一遍并录音回听。

这类题在真实面试中常被追问细节,
建议进入限时模式练一遍。

开始限时演练