Netflix的推荐系统这次真正让人意外的,不是它用上了大模型,而是效果提升小到有点尴尬。官方技术博客只说"统计显著",没给具体数字。翻到对应的论文才发现:大规模线上测试里,核心指标的提升幅度是+0.006%。离线测试里,排序指标MRR涨了1.6%,但标注数据只用了原来的四十分之一。
一边是几乎可以忽略不计的线上涨幅,一边是数据用量的断崖式下降。这两个数字放在一起,比任何"大模型重塑推荐"的说法都更说明问题。
发生了什么
Netflix给这套新系统取名GenRec,分两步训练:先用内部基础大模型消化Netflix自家内容和用户行为数据,再针对排序任务做专门后训练。用户历史、内容元数据、观看上下文,全部被转成一段段自然语言"对话",喂给模型。
线上测试覆盖约10%的Netflix流量,跑了大约四周,场景是批量计算类的推荐位。结果是:短期和长期指标都比现有生产系统好,但幅度极小;离线场景下,用远少于原来的标注样本和输入信号,反而拿到了更高的排序精度。
Netflix给出的解释是:大模型自带的语言理解能力,替掉了过去靠人工堆砌的数千个特征。这句话听起来漂亮,但工程细节比这句话有意思得多。
打分不是生成,这个区别很关键
业内提到"LLM做推荐",大多数人脑子里浮现的画面是模型像聊天一样,一个词一个词"生成"推荐列表。这套逻辑放在Netflix这种全片库规模上,几乎跑不动——逐词解码,片库里几万部内容,推理成本会直接爆掉。
GenRec没有走这条路。它是判别式打分:模型只做一次前向计算,把用户和上下文压缩成一个向量,再和片库里每一部内容的向量做点积,一次性打出全部分数,排出名次。整个过程叫prefill-only——只有"读"没有"写",没有逐字生成这一步。
- 结论.这个架构选择,是GenRec能扛住Netflix体量的真正原因,而不是模型"更懂内容"。
用户历史 / 上下文
↓ 转成自然语言
大模型池化表示 h
↓ 与片库item向量做点积
全片库一次性打分
↓
排序结果
为什么不用强化学习
对齐"业务目标"和"长期满意度"这件事,现在最流行的做法是强化学习。GenRec没有选这条路,用的是更朴素的reward加权损失:每条训练样本按价值高低打一个权重,长期留存相关的行为权重高,短期刷剧、单一内容类型堆积的行为权重低。
Netflix自己承认,预实验里GRPO这类强化学习方法能带来额外增益,但成本更高,暂时没有采用。这不是没想到,是算过账之后主动放弃。
《孙子兵法》讲"兵贵拙速"——不追求打磨到极致的巧劲,先要能打得动、打得起。GenRec这套取舍,骨子里就是这个思路:先用便宜的方法把系统跑起来,再谈精益求精。
配合这个思路的还有一处细节:输入给模型的文本长度,从大约5000个token压缩到1700个,离线效果几乎没掉,但推理成本降到了原来的三分之一。特征工程省下来的力气,全部转移到了怎么写这段"文本prompt"上——Netflix管这叫context engineering。
0.006%到底算不算数
问题回到最初那个反差。线上核心指标涨0.006%,这个数字小到几乎可以归为噪声,但Netflix敢把它写成"统计显著",说明在他们的流量体量下,这个幅度已经能稳定复现。可这和"值不值得"是两回事。
一套大模型的训练和部署,成本远高于传统特征模型。省下来的四十倍标注数据、三分之一的推理开销,是不是真能覆盖训练一个大模型本身的成本,原文和公开材料都没有给账。
分数没怎么涨,活儿却真的少干了
- 风险.10%流量、四周窗口的测试,还没有覆盖游戏、直播、播客这些原文提到的内容类型,判别式打分是否只是把"生成幻觉"换成了"打分头的训练数据偏差",目前也看不清。
Netflix这次的动作,更像是给行业提供了一个务实样本:大模型做推荐,先别急着谈效果飞跃,先看它能不能在真实体量下跑得动、跑得便宜。至于它真正能提升多少推荐质量,还得看流量放大之后,那0.006%会不会长成一个更能拿得出手的数字。
