learntoall

多阶段漏斗

抖音主 Feed 是模型系统而不是 Timeline。工程上拆成三条必须同时成立的管道:在线多阶段排序、近线特征生产、在线参数更新。缺任何一条,几亿 DAU 下的兴趣漂移都会把效果打穿。

亿级可推内容池
多路召回 · 千级
粗排 · 百级
精排 · 几十
重排混排 · 约十条
客户端 Feed
流程图 · 推荐漏斗从亿级收到约十条

漏斗

延迟预算不允许对全库跑精排,所以先用便宜的方法缩小集合,再把算力花在最可能被看完的候选上。

阶段规模做什么
内容池亿级过审、完成关键转码、具备基础标签与 embedding 的可分发视频。新内容、低质内容和违规内容不在同一起跑线。
多路召回千级若干召回路并行:兴趣向量、协同、热门、社交、同城、运营、作者粉丝。目标是高召回,允许粗糙。
粗排百级轻量模型快速估计点击/完播概率,砍掉明显不匹配的候选,把精排成本控制住。
精排几十重模型消费用户长期画像、短期序列、上下文(时段、设备、网络)和视频多模态特征,对完播、互动、停留做多目标打分。
重排 / 混排十条左右打散同类、限制同一作者连续出现、插入直播与广告、满足生态与安全策略,再下发给客户端。

召回路

召回路索引 / 存储解决什么
双塔向量ANN(HNSW/IVF 一类)user tower 在线出向量,item tower 离线/近线建库。个性化主力召回。
协同 / Swing倒排 · 预计算相似表看过 A 的人还看 B。离线构图,在线只查邻接。
社交ByteGraph关注作者的新内容、好友互动。主屏不是关注流,但这是重要补召回。
热门 / 运营 / 同城KV 热池 · geo 索引冷启动、突发热点、本地内容。保证漏斗里永远有可打的候选。

多目标

只优化点击会推出标题党;只优化完播会推出过短或过于刺激的内容。精排通常是多目标:完播、停留、互动、关注、长期留存,再加生态约束和商业目标。重排是这些目标发生冲突时的最后调停层。

特征生产见 特征平台,在线参数更新见 Monolith