Feed 流召回

全站可能有上亿条视频,排序模型不可能直接对所有视频打分。召回的任务是从海量内容中快速找出几百到几千条候选视频。

多路召回

推荐系统通常使用多路召回:

召回通道作用
关注召回用户关注作者的新视频
热门召回全站或地域热门内容
兴趣召回用户长期兴趣标签匹配
相似召回与最近观看视频相似
协同过滤相似用户喜欢的视频
探索召回新视频和长尾内容探索

多路召回可以兼顾相关性、热度、新鲜度和多样性。

候选合并

不同通道会召回重复视频,需要合并和去重。合并时还要保留来源信息:

video_id -> recall_sources: [hot, similar, interest]

来源信息会作为排序特征。一个视频被多个通道召回,通常说明它更可能相关。

配额控制

召回通道需要配额。否则热门召回可能占满候选集,导致个性化和长尾内容没有机会。例如:

  • 关注 20%
  • 兴趣 30%
  • 相似 20%
  • 热门 20%
  • 探索 10%

配额不是固定不变的。新用户可以提高热门和探索比例,老用户可以提高兴趣和相似比例。

实时召回

用户刚刚点赞或快速划走的视频应该影响后续推荐。实时召回可以基于最近行为:

  • 最近完播某类视频,增加相似内容。
  • 连续跳过某作者,短期降低作者曝光。
  • 刚关注作者,立即召回作者内容。

实时特征通常存储在 Redis 或在线特征服务中,保证低延迟。

召回质量

召回阶段要监控:

  • 每个通道的命中率。
  • 候选去重后数量。
  • 召回内容的新鲜度和多样性。
  • 后续排序中的入选率。

召回决定了排序的上限。如果好内容没有进入候选集,再强的排序模型也无能为力。