一家流媒体巨头做了一次大胆的试验:把用了多年的推荐引擎,换成一个大语言模型。结果是,新系统在离线评测中表现更好,而且训练所需的数据量少了一个数量级。

这套新系统名为 GenRec。该公司的技术团队在官方博客中披露了细节:它需要的标注训练数据,只有旧系统的约四十分之一。

打开网易新闻 查看精彩图片

手工规则正在成为瓶颈

该公司当前的推荐系统,依赖数千个由工程师手工设计的特征,覆盖用户、片目和交互行为。这套体系运行多年,但代价是复杂度越来越高。

这种复杂性带来的直接问题是:每当公司要接入新内容类型——比如游戏、直播或播客——或者把推荐扩展到界面的新区域,都需要投入大量工程成本去适配。

那直接用现成的开源语言模型行不行?该公司的测试发现也不行。现成模型有两个明显毛病:一是过度偏向热门内容,二是会幻觉出目录里根本不存在的片名,三是完全无视平台的业务规则。

两阶段训练:先理解目录,再学会排序

GenRec 的设计目标,就是填补这个空白。该公司用两阶段方式训练这个专有模型。

第一阶段,一个未具名的开源权重语言模型,先在平台数据上做微调,让它理解片目库和用户行为模式。第二阶段,再做一轮专门的训练,把这个基础模型改造成一个推荐排序器。

第二阶段会更新得更频繁,以便及时纳入新上线的片目和用户偏好的变化。

把用户行为变成对话文本

GenRec 的一个关键设计是:不再把用户数据编码成稠密的数值向量,而是转换成纯文本。

播放行为、观看时长、点赞或点踩、加入片单、中途退出——这些都被改写成用户与推荐系统之间的一种"对话"。

模型自己从这些文本模式中学习用户的类型偏好或兴趣迁移,而不是靠工程师手工设计特征来显式定义。

当然,如果把每次交互的完整文本都喂给模型,会直接撑爆上下文窗口。该公司的做法是激进地过滤:高信号事件(比如长时间观看)保留完整细节,短暂点击或快速滑动直接丢弃,连续刷剧的行为则被压缩处理。

为了防止模型推荐不存在的片目,该公司还加了一个独立组件,只对真实存在的目录条目打分。

成本控制:单次读取,批量打分

GenRec 跑在 vLLM 推理框架上,采用一种特殊模式:模型只读取一次输入,然后对所有候选片目一次性打分,全程不生成任何文本。这种方式把推理成本控制在了可接受范围内。

离线成绩:质量提升1.6%,数据需求骤降

与调优多年的生产系统相比,GenRec 在离线评测中的排序质量提升了约 1.6%。而在第二阶段训练中,它只需要大约 四十分之一 的标注样本就能达到这个水平。

需要强调的是,这个对比仅适用于第二阶段这一特定环节,并非全部训练数据。

线上实验:两周A/B测试,指标微涨但显著

该公司还做了一次为期四周的线上 A/B 实验,流量覆盖约 10%,仅限于预计算推荐位。结果显示:一个衡量首页用户行为的短期指标上升了 0.115%,一个长期核心指标提升了 0.006%

该公司表示,这两个涨幅在统计上都大到无法用偶然性来解释。

一个值得注意的细节

第二阶段针对推荐的微调,在基础模型性能之上还能再带来 35% 到 50% 的提升。而当基础模型已经"老化"两周时,这个差距会扩大到约 80%。

换句话说,基础模型的时效性对最终推荐质量的影响,比想象中更大。

怎么看这件事

该公司的这次试验,本质上是在验证一个判断:手工构建推荐特征的路,可能已经走到了收益递减的阶段。语言模型虽然不能直接拿来就用,但经过两阶段定制训练后,它不仅能理解内容,还能学会排序,而且数据效率高出不少。

当然,1.6% 的离线提升和 0.115% 的短期指标涨幅,都不是颠覆性的数字。但考虑到训练数据量骤降 40 倍,这