搜广推 / 01
搜广推三层结构:召回 / 粗排 / 精排
搜广推是搜索、广告、推荐的统称。它们的业务目标不同,但技术链路很像:先从海量物料里找候选,再快速筛选,最后精细排序并加上业务策略。
典型链路是:
物料池 -> 召回 -> 粗排 -> 精排 -> 重排 -> 展示 -> 反馈
为什么要分层
用户每次请求时,系统面对的候选可能是百万级甚至亿级物料。精排模型再强,也不可能对所有物料都做复杂推理。因此系统必须分层:
- 召回:从海量物料中快速找几百到几千个候选。
- 粗排:用较轻模型从候选中筛出几十到几百个。
- 精排:用复杂特征和模型做最终排序。
- 重排:处理多样性、频控、规则、生态和安全约束。
分层的本质是在效果、延迟和成本之间折中。
召回层
召回关注“不要漏掉可能好的东西”。常见召回包括:
- 热门召回。
- 协同过滤召回。
- 向量召回。
- 类目召回。
- 地理位置召回。
- 关注关系召回。
- 搜索 query 召回。
- 广告定向召回。
召回层通常追求高覆盖和低延迟。它不需要排序特别准,但要保证好候选能进入后续链路。
粗排层
粗排解决召回候选太多的问题。它要比召回准,又要比精排快。
粗排常用轻量模型,例如 LR、GBDT、小型 DNN 或蒸馏模型。特征通常比精排少,主要使用用户、物料和少量交叉特征。
粗排的关键指标不是普通 AUC,而是看它能否保留精排最终会选中的优质候选。例如 topK 保留率、精排 oracle 命中率。
精排层
精排使用最丰富的特征和更复杂模型,预测点击、转化、停留、购买、互动等目标。
常见模型:
- Wide & Deep。
- DeepFM。
- DIN / DIEN。
- DCN。
- 多任务模型。
- 序列 Transformer。
精排层最容易被面试问到,但不要只背模型结构。要讲清楚样本、标签、特征、目标和线上指标。
重排层
重排处理模型分数之外的问题:
- 同类内容不要连续出现。
- 同一作者或商家需要频控。
- 新内容要有探索流量。
- 广告和自然结果要混排。
- 风险内容要过滤。
- 商业目标和用户体验要平衡。
很多线上策略收益来自重排,而不是模型本身。
搜索、广告、推荐的差异
| 场景 | 用户意图 | 主要目标 | 典型难点 |
|---|---|---|---|
| 搜索 | 主动 query | 相关性 + 转化 | query 理解、相关性、排序 |
| 推荐 | 被动浏览 | 兴趣匹配 + 长期体验 | 冷启动、探索、多目标 |
| 广告 | 商业投放 | ROI + 收入 + 体验 | 出价、预算、机制、预估校准 |
搜索更看相关性,推荐更看兴趣和长期体验,广告更看商业机制。但它们都依赖召回、排序、实验和反馈闭环。
面试怎么讲
如果面试官问“设计一个推荐系统”,不要直接说模型。可以这样回答:
我会先拆链路:召回保证候选覆盖,粗排在低延迟下筛掉明显差的候选,精排用丰富特征做多目标预估,重排处理多样性、频控和业务约束。评估上,离线看召回覆盖、排序指标和校准,线上看点击、转化、留存、负反馈和延迟。
常见追问
召回漏了怎么办?
后续排序救不回来。要做多路召回、召回覆盖评估、bad case 分析和探索召回。
粗排和精排目标不一致怎么办?
会导致粗排筛掉精排喜欢的候选。可以用精排蒸馏、保留率指标、多目标训练和分场景评估缓解。
精排分数高就一定排前面吗?
不一定。重排还要考虑多样性、频控、风险、商业约束和长期体验。
下一篇建议继续看: