这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
完整架构
完整的视频推荐流系统可以分成四条链路:
内容链路:上传 -> 转码 -> 审核 -> 入推荐池
分发链路:对象存储 -> CDN -> 播放器
推荐链路:召回 -> 排序 -> 重排 -> Feed 返回
反馈链路:曝光 -> 行为 -> 特征 -> 模型/策略更新
四条链路缺一不可。只有算法没有内容供给,推荐会枯竭;只有内容没有反馈,推荐无法个性化;只有推荐没有分发,播放体验会拖垮留存。
分层架构
┌─────────────────────────────────────────────────────────────────┐
│ 内容链路 │
│ 视频上传 -> 转码/截图 -> 审核 -> 发布 -> 入推荐池(recommendable)│
└──────────────────────────────┬───────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ 推荐链路 │
│ 多路召回(关注/热门/兴趣/相似/协同/探索) │
│ -> 过滤去重(曝光/违规/不可播放) │
│ -> 多目标排序 -> 重排(多样性/作者频率/探索) │
└──────────────────────────────┬───────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ 分发链路 │
│ 对象存储 -> CDN 边缘节点 -> 播放器(首帧优化/预加载/多码率) │
└──────────────────────────────┬───────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────┐
│ 反馈链路 │
│ 曝光/播放/完播/点赞/跳过/举报 -> 特征平台 -> 模型与策略更新 │
└─────────────────────────────────────────────────────────────────┘
最终请求流程
- 客户端带上用户、设备、网络和游标请求下一页。
- 推荐服务读取用户画像、最近行为和曝光历史。
- 多路召回生成候选视频。
- 候选经过过滤和去重,去掉已曝光、违规或不可播放内容。
- 排序模型为候选打分。
- 重排层控制多样性、新鲜度、作者频率和探索内容。
- 返回视频卡片、播放 URL、封面和推荐上下文。
- 客户端上报曝光、播放、完播、点赞、跳过等行为。
核心数据
| 数据 | 作用 |
|---|---|
| video_metadata | 视频状态、作者、时长、标签、播放资源 |
| user_profile | 用户兴趣、长期偏好、风险状态 |
| behavior_log | 曝光、播放、完播、互动、负反馈 |
| feature_store | 在线和离线特征 |
| experiment_log | 策略版本、实验分组、效果指标 |
曝光日志尤其重要。没有曝光,就无法判断用户没有互动是因为不喜欢,还是根本没看到。
多目标排序
score = a * p_click + b * p_finish + c * p_like - d * p_report + diversity_bonus
权重通过实验和业务目标调整。只优化单一目标,系统容易走偏。
降级策略
- 特征服务或排序模型超时时,降级到缓存、热门或轻量模型。
- 推荐服务感知转码、审核和 CDN 状态,避免推荐坏内容。
- 高峰期用离线预计算 + 在线轻量打分,控制延迟预算。
关键指标
- 首帧时间、刷新延迟、点击率、完播率、点赞率、关注率。
- 跳出率、连续跳过率、内容多样性、新内容曝光率。
- 违规内容曝光率和投诉率。
指标之间会冲突,需要通过实验和护栏指标平衡。这套架构的关键在于:内容、分发、推荐、反馈四条链路形成数据闭环,系统才能持续进化。
