搜广推 / 02
多路召回与候选集设计
召回层决定后续排序能看到什么。好候选如果没有被召回,精排模型再强也没有机会展示。
多路召回的核心思想是:不同召回通道覆盖不同兴趣、意图和业务场景,然后把它们融合成候选集。
为什么需要多路召回
单一路径很难覆盖所有好候选。
例如短视频推荐:
- 协同过滤能找到相似用户喜欢的内容。
- 向量召回能找到语义相似内容。
- 热门召回能保证基础质量。
- 关注召回能保证社交关系。
- 新内容召回能解决冷启动。
- 地域召回能补本地兴趣。
多路召回不是越多越好,而是要覆盖互补信号。
常见召回类型
热门召回
根据全局或分场景热度召回。优点是稳定,缺点是个性化弱,容易马太效应。
协同过滤召回
基于用户-物料交互关系,找到相似用户或相似物料。适合行为数据充分的场景。
向量召回
把用户和物料编码成向量,通过 ANN 检索相似物料。适合大规模语义匹配。
规则召回
按类目、地域、价格、关注关系、商家等规则召回。优点是可控,适合业务兜底。
探索召回
给新物料、新用户、长尾内容一定曝光机会,缓解冷启动和信息茧房。
候选融合
多路召回后,需要融合、去重和截断。
常见方式:
- 每路固定配额。
- 按召回通道质量动态分配配额。
- 用轻量模型对候选统一打分。
- 保留召回来源作为后续排序特征。
固定配额简单稳定,但不够灵活。动态配额效果更好,但需要评估每路召回在不同场景下的价值。
召回评估
召回评估不能只看数量。
常见指标:
- recall@K:是否召回用户最终喜欢的物料。
- coverage:覆盖多少物料、人群、类目。
- hit rate:命中正样本比例。
- diversity:候选是否多样。
- freshness:新内容覆盖。
- latency:召回耗时。
- downstream contribution:进入精排 top 或线上点击的贡献。
最有价值的是看“召回候选对后续精排和线上指标的贡献”。
召回中的偏差
历史点击数据会偏向已经曝光过的内容。如果召回完全依赖历史行为,长尾内容和新内容很难起来。
解决方法:
- 增加探索召回。
- 对长尾内容做质量预估。
- 使用内容语义特征。
- 分层评估新老物料。
- 控制热门内容占比。
面试题:如何设计一个多路召回系统
可以这样回答:
我会先按场景设计多路召回,包括热门、协同过滤、向量召回、类目规则、关注关系和探索召回。每路召回有独立的召回原因和质量评估。融合时会去重、控制配额,并保留召回来源作为排序特征。评估上不仅看 recall@K,还要看每路候选进入精排 top 和线上点击转化的贡献,以及延迟和覆盖率。
面试题:某一路召回贡献低,要不要删掉
不一定。要看它在哪些场景贡献低。
有些召回整体点击低,但对新用户、长尾内容、冷启动或特定类目很重要。如果直接删除,可能伤害覆盖和生态。
正确做法是分场景评估,并调整配额或触发条件。
工程注意点
召回系统要关注:
- ANN 索引更新频率。
- 召回服务延迟。
- 物料上下架和过滤。
- 召回结果去重。
- 召回通道监控。
- bad case 可解释。
总结
召回层不是简单拿候选,而是决定系统探索空间。一个好的召回系统要做到覆盖充分、通道互补、延迟可控、可评估、可解释。
下一篇建议继续看: