核心要点

  • 分层漏斗:百万级物料经召回(多路)→粗排→精排→重排逐级收敛到几十条

  • 召回追求高召回率与多样性,精排追求排序精度(CTR/CVR),分工明确

  • 指标先行:线上看 CTR/CVR/人均时长,离线看 AUC/GAUC,并用 A/B 验证

  • 保证线上线下特征一致性,离线训练与在线打分用同一套特征口径

标准回答

需求与指标

明确目标(点击、转化、时长还是留存),定线上指标 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 工具

  • Milvus

    云原生向量数据库,43,875+ stars。专为 AI 应用设计的分布式向量搜索引擎,支持千亿级向量检索,广泛应用于 RAG、推荐系统和相似性搜索场景

  • Recall

    为 Claude Code 提供持久化记忆能力,完全离线运行,避免每次会话重复解释项目上下文。468 stars。