Feed 流基础

在引入复杂算法前,先把 Feed 流的基础体验做好。用户每次下滑都要拿到一组视频卡片,每张卡片包含播放地址、封面、作者、标题、互动数和推荐上下文。

视频卡片模型

一条 Feed item 可以包含:

字段含义
video_id视频 ID
author_id作者
play_url播放地址
cover_url封面
duration时长
title标题
reason推荐原因或实验标记
cursor下一页游标上下文

推荐服务返回的不是完整视频文件,而是可播放和可展示的元数据。

分页方式

Feed 不适合简单 offset 分页。推荐结果会随时间、用户行为和实验策略变化,offset 容易重复或漏数据。更常见的是游标分页:

GET /feed?cursor=xxx&limit=20

游标里可以包含用户、请求时间、已曝光集合摘要、策略版本和候选池位置。服务端据此生成下一批结果。

曝光去重

用户不希望短时间反复看到同一条视频。系统需要记录曝光历史:

  • 最近已曝光视频集合。
  • 已完整播放或快速跳过的视频。
  • 不感兴趣和举报的视频。
  • 作者维度的重复控制。

曝光记录可以保存在 Redis 或用户行为存储中,短期用于在线去重,长期用于训练模型。

冷启动

新用户没有行为历史,新视频没有互动数据。基础策略可以使用:

  • 新用户先看地域、语言、热门和编辑精选。
  • 新视频进入小流量探索池。
  • 根据注册来源、设备、初始选择标签做粗粒度推荐。

冷启动不是算法细节,而是产品体验问题。新用户前几十条推荐会决定是否留下。

Feed 基础层解决“如何稳定返回一页可播放内容”。下一章我们处理视频内容如何进入系统。