搜广推 / 02

多路召回与候选集设计

召回层决定后续排序能看到什么。好候选如果没有被召回,精排模型再强也没有机会展示。

多路召回的核心思想是:不同召回通道覆盖不同兴趣、意图和业务场景,然后把它们融合成候选集。

为什么需要多路召回

单一路径很难覆盖所有好候选。

例如短视频推荐:

  • 协同过滤能找到相似用户喜欢的内容。
  • 向量召回能找到语义相似内容。
  • 热门召回能保证基础质量。
  • 关注召回能保证社交关系。
  • 新内容召回能解决冷启动。
  • 地域召回能补本地兴趣。

多路召回不是越多越好,而是要覆盖互补信号。

常见召回类型

热门召回

根据全局或分场景热度召回。优点是稳定,缺点是个性化弱,容易马太效应。

协同过滤召回

基于用户-物料交互关系,找到相似用户或相似物料。适合行为数据充分的场景。

向量召回

把用户和物料编码成向量,通过 ANN 检索相似物料。适合大规模语义匹配。

规则召回

按类目、地域、价格、关注关系、商家等规则召回。优点是可控,适合业务兜底。

探索召回

给新物料、新用户、长尾内容一定曝光机会,缓解冷启动和信息茧房。

候选融合

多路召回后,需要融合、去重和截断。

常见方式:

  • 每路固定配额。
  • 按召回通道质量动态分配配额。
  • 用轻量模型对候选统一打分。
  • 保留召回来源作为后续排序特征。

固定配额简单稳定,但不够灵活。动态配额效果更好,但需要评估每路召回在不同场景下的价值。

召回评估

召回评估不能只看数量。

常见指标:

  • recall@K:是否召回用户最终喜欢的物料。
  • coverage:覆盖多少物料、人群、类目。
  • hit rate:命中正样本比例。
  • diversity:候选是否多样。
  • freshness:新内容覆盖。
  • latency:召回耗时。
  • downstream contribution:进入精排 top 或线上点击的贡献。

最有价值的是看“召回候选对后续精排和线上指标的贡献”。

召回中的偏差

历史点击数据会偏向已经曝光过的内容。如果召回完全依赖历史行为,长尾内容和新内容很难起来。

解决方法:

  • 增加探索召回。
  • 对长尾内容做质量预估。
  • 使用内容语义特征。
  • 分层评估新老物料。
  • 控制热门内容占比。

面试题:如何设计一个多路召回系统

可以这样回答:

我会先按场景设计多路召回,包括热门、协同过滤、向量召回、类目规则、关注关系和探索召回。每路召回有独立的召回原因和质量评估。融合时会去重、控制配额,并保留召回来源作为排序特征。评估上不仅看 recall@K,还要看每路候选进入精排 top 和线上点击转化的贡献,以及延迟和覆盖率。

面试题:某一路召回贡献低,要不要删掉

不一定。要看它在哪些场景贡献低。

有些召回整体点击低,但对新用户、长尾内容、冷启动或特定类目很重要。如果直接删除,可能伤害覆盖和生态。

正确做法是分场景评估,并调整配额或触发条件。

工程注意点

召回系统要关注:

  • ANN 索引更新频率。
  • 召回服务延迟。
  • 物料上下架和过滤。
  • 召回结果去重。
  • 召回通道监控。
  • bad case 可解释。

总结

召回层不是简单拿候选,而是决定系统探索空间。一个好的召回系统要做到覆盖充分、通道互补、延迟可控、可评估、可解释。

下一篇建议继续看: