标准回答
需求与指标
明确目标(点击、转化、时长还是留存),定线上指标 CTR/CVR/人均时长,离线用 AUC/GAUC 评估排序质量,新策略一律 A/B 实验上线。
整体架构
经典分层漏斗:召回 → 粗排 → 精排 → 重排。物料从百万级逐级收敛到最终展示的几十条,每层在「算力」与「精度」间做权衡。
召回(Recall)
多路并行:协同过滤(item/user CF)、向量召回(双塔 + ANN,如 Milvus)、热门/规则召回、画像/标签召回。目标是高召回与覆盖多样性,每路取 Top-N 后合并去重。
粗排与精排(Ranking)
候选过多时先用轻量模型粗排截断到几千;精排用大规模稀疏特征 + embedding 的 CTR 模型(DeepFM/DIN 类),对 query/user × item 深度交互打分。
特征
用户画像、物料属性、上下文(时间/场景)、实时行为序列、交叉统计特征;离线与在线共用 Feature Store 保证一致性。
重排(Re-rank)
在精排 Top-K 上做多样性打散(MMR)、去重、业务规则(已读过滤、运营加权、流量调控),最终输出。
常见误区
⚠️ 常见踩坑
上来就堆精排模型,不谈召回的多样性与覆盖率,也不谈指标与 A/B;以及忽视线上线下特征一致性,导致离线 AUC 高但线上不涨。
追问
追问 1:为什么要分召回和排序两层,不能一个模型搞定吗?
物料量级是百万甚至上亿,精排模型逐个打分算力扛不住。召回用轻量、可索引的方式(双塔 + ANN)快速从全库缩到上千,精排再用重模型精细打分。这是算力与精度的工程权衡,单模型无法兼顾全量打分与排序精度。
追问 2:双塔召回为什么精度不如精排?
双塔把 user 和 item 各自独立编码成向量,只在最后算内积,无法建模特征间的细粒度交叉。精排可以让 user×item 特征充分交叉(如 DIN 用 attention 建模行为序列与目标 item 的关系),表达力更强但无法预建索引。
追问 3:怎么评估召回层的好坏?
召回不看 AUC,主要看召回率(命中后续被点击/转化物料的比例)、覆盖率与多样性。常用方法是看 Top-N 召回中包含多少真实正样本,以及各路召回的去重后贡献。线上则观察各路召回对最终曝光与点击的贡献占比。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。
🛠️ AI 工具