搜广推 / 01

搜广推三层结构:召回 / 粗排 / 精排

搜广推是搜索、广告、推荐的统称。它们的业务目标不同,但技术链路很像:先从海量物料里找候选,再快速筛选,最后精细排序并加上业务策略。

典型链路是:

物料池 -> 召回 -> 粗排 -> 精排 -> 重排 -> 展示 -> 反馈

为什么要分层

用户每次请求时,系统面对的候选可能是百万级甚至亿级物料。精排模型再强,也不可能对所有物料都做复杂推理。因此系统必须分层:

  • 召回:从海量物料中快速找几百到几千个候选。
  • 粗排:用较轻模型从候选中筛出几十到几百个。
  • 精排:用复杂特征和模型做最终排序。
  • 重排:处理多样性、频控、规则、生态和安全约束。

分层的本质是在效果、延迟和成本之间折中。

召回层

召回关注“不要漏掉可能好的东西”。常见召回包括:

  • 热门召回。
  • 协同过滤召回。
  • 向量召回。
  • 类目召回。
  • 地理位置召回。
  • 关注关系召回。
  • 搜索 query 召回。
  • 广告定向召回。

召回层通常追求高覆盖和低延迟。它不需要排序特别准,但要保证好候选能进入后续链路。

粗排层

粗排解决召回候选太多的问题。它要比召回准,又要比精排快。

粗排常用轻量模型,例如 LR、GBDT、小型 DNN 或蒸馏模型。特征通常比精排少,主要使用用户、物料和少量交叉特征。

粗排的关键指标不是普通 AUC,而是看它能否保留精排最终会选中的优质候选。例如 topK 保留率、精排 oracle 命中率。

精排层

精排使用最丰富的特征和更复杂模型,预测点击、转化、停留、购买、互动等目标。

常见模型:

  • Wide & Deep。
  • DeepFM。
  • DIN / DIEN。
  • DCN。
  • 多任务模型。
  • 序列 Transformer。

精排层最容易被面试问到,但不要只背模型结构。要讲清楚样本、标签、特征、目标和线上指标。

重排层

重排处理模型分数之外的问题:

  • 同类内容不要连续出现。
  • 同一作者或商家需要频控。
  • 新内容要有探索流量。
  • 广告和自然结果要混排。
  • 风险内容要过滤。
  • 商业目标和用户体验要平衡。

很多线上策略收益来自重排,而不是模型本身。

搜索、广告、推荐的差异

场景 用户意图 主要目标 典型难点
搜索 主动 query 相关性 + 转化 query 理解、相关性、排序
推荐 被动浏览 兴趣匹配 + 长期体验 冷启动、探索、多目标
广告 商业投放 ROI + 收入 + 体验 出价、预算、机制、预估校准

搜索更看相关性,推荐更看兴趣和长期体验,广告更看商业机制。但它们都依赖召回、排序、实验和反馈闭环。

面试怎么讲

如果面试官问“设计一个推荐系统”,不要直接说模型。可以这样回答:

我会先拆链路:召回保证候选覆盖,粗排在低延迟下筛掉明显差的候选,精排用丰富特征做多目标预估,重排处理多样性、频控和业务约束。评估上,离线看召回覆盖、排序指标和校准,线上看点击、转化、留存、负反馈和延迟。

常见追问

召回漏了怎么办?

后续排序救不回来。要做多路召回、召回覆盖评估、bad case 分析和探索召回。

粗排和精排目标不一致怎么办?

会导致粗排筛掉精排喜欢的候选。可以用精排蒸馏、保留率指标、多目标训练和分场景评估缓解。

精排分数高就一定排前面吗?

不一定。重排还要考虑多样性、频控、风险、商业约束和长期体验。

下一篇建议继续看: