TikTok的推荐引擎被公认为业界最佳,是字节跳动的核心竞争壁垒。构建这些流水线的后端工程师需要理解如何将实时事件处理、特征存储和模型服务整合为一个协调的系统。
梳理端到端流水线:用户行为事件→实时特征更新→候选召回→排序→重排序→响应。
描述特征存储架构:在线存储(Redis/Memcached)低延迟服务,离线存储(Hive/HDFS)批量特征,流式层(Flink)实时特征计算。
解释多级排序:召回(检索约1万候选)、粗排(筛到约500)、精排(深度模型对约500打分)、重排(多样性、新鲜度、业务规则)。
讨论用户行为如何实时反馈到系统中,使推荐在同一会话内自适应。
流水线分五个阶段。第一阶段事件摄入(5ms):用户行为(点赞、分享、观看时长、跳过)发布到Kafka,Flink作业消费事件,更新实时用户特征(近期兴趣embedding、会话上下文),写入Redis特征存储,新鲜度50ms。第二阶段候选召回(30ms):多路召回并行——协同过滤从ANN索引(Faiss/Milvus)检索、基于内容的用户兴趣embedding召回、热门内容和社交图谱信号,共产出约1万候选。第三阶段粗排(20ms):轻量双塔模型用缓存embedding对1万候选打分,筛到Top 500。第四阶段精排(100ms):深度交叉网络模型利用在线特征存储中的稠密特征——用户画像、内容属性、上下文信号和实时互动特征——对500候选精细打分。第五阶段重排(30ms):施加多样性约束(同一创作者不连续出现两个视频)、新鲜度提权、广告插入位和安全过滤。最终约30个视频返回客户端。总延迟约185ms。反馈闭环至关重要:在同一会话中,用户的跳过或点赞立即更新其实时兴趣embedding,下一页推荐就能反映偏好变化。
强调实时反馈闭环——这是TikTok信息流在单次会话内感觉"神奇"的关键。
展示你理解多级架构是由延迟约束驱动的:不可能对数百万候选跑深度模型。
提到召回阶段的近似最近邻(ANN)搜索——这是字节跳动规模的标准实践。
不同召回通道捕捉不同信号——协同过滤找行为相似的内容,基于内容的召回找语义相似的内容,热门通道呈现流行内容。组合起来产生多样化的候选集,单一模型会遗漏这些。
在线特征存储使用Redis,特征预计算后以序列化张量形式存储。特征Key按用户ID分区,存储与排序服务部署在同一机房以减少网络跳数。批量特征每天物化,在服务时进行join。