这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
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 基础层解决“如何稳定返回一页可播放内容”。下一章我们处理视频内容如何进入系统。