多阶段漏斗
抖音主 Feed 是模型系统而不是 Timeline。工程上拆成三条必须同时成立的管道:在线多阶段排序、近线特征生产、在线参数更新。缺任何一条,几亿 DAU 下的兴趣漂移都会把效果打穿。
亿级可推内容池
多路召回 · 千级
粗排 · 百级
精排 · 几十
重排混排 · 约十条
客户端 Feed
漏斗
延迟预算不允许对全库跑精排,所以先用便宜的方法缩小集合,再把算力花在最可能被看完的候选上。
| 阶段 | 规模 | 做什么 |
|---|---|---|
| 内容池 | 亿级 | 过审、完成关键转码、具备基础标签与 embedding 的可分发视频。新内容、低质内容和违规内容不在同一起跑线。 |
| 多路召回 | 千级 | 若干召回路并行:兴趣向量、协同、热门、社交、同城、运营、作者粉丝。目标是高召回,允许粗糙。 |
| 粗排 | 百级 | 轻量模型快速估计点击/完播概率,砍掉明显不匹配的候选,把精排成本控制住。 |
| 精排 | 几十 | 重模型消费用户长期画像、短期序列、上下文(时段、设备、网络)和视频多模态特征,对完播、互动、停留做多目标打分。 |
| 重排 / 混排 | 十条左右 | 打散同类、限制同一作者连续出现、插入直播与广告、满足生态与安全策略,再下发给客户端。 |
召回路
| 召回路 | 索引 / 存储 | 解决什么 |
|---|---|---|
| 双塔向量 | ANN(HNSW/IVF 一类) | user tower 在线出向量,item tower 离线/近线建库。个性化主力召回。 |
| 协同 / Swing | 倒排 · 预计算相似表 | 看过 A 的人还看 B。离线构图,在线只查邻接。 |
| 社交 | ByteGraph | 关注作者的新内容、好友互动。主屏不是关注流,但这是重要补召回。 |
| 热门 / 运营 / 同城 | KV 热池 · geo 索引 | 冷启动、突发热点、本地内容。保证漏斗里永远有可打的候选。 |
多目标
只优化点击会推出标题党;只优化完播会推出过短或过于刺激的内容。精排通常是多目标:完播、停留、互动、关注、长期留存,再加生态约束和商业目标。重排是这些目标发生冲突时的最后调停层。