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

LinkedIn的Feed推荐系统曾经是个典型的"缝合怪"——5套独立系统并行运转,每套都有自己的团队、基础设施和优化逻辑。2024年,他们做了一个激进决定:全部拆掉,换成单一的大语言模型(LLM)架构。结果是延迟压到50毫秒以内,服务13亿用户。但代价是什么?

这篇文章基于LinkedIn工程团队公开的技术细节,拆解这场架构革命的实操难点。

5套系统的"内耗困境"

5套系统的"内耗困境"

旧架构的5个检索源分工明确:时间序网络动态、地理热门内容、协同过滤、行业专属管道、多路嵌入检索。表面看是"各司其职",实际是"各自为政"。

Feed团队发现,优化任何一个源都可能拖累其他源的表现。A团队调高了协同过滤的权重,B团队的嵌入检索点击率就掉。没有团队能同时操盘5套系统的全局优化,"整体改进"成了空话。

更隐蔽的成本是人力。5套系统意味着5支维护团队、5种索引结构、5套监控体系。LinkedIn工程师在公开分享中坦言,这种异构架构的维护负担"随着业务增长呈指数级上升"。

2019年前后,团队开始试探性提问:能不能用一套统一模型替代所有检索源?

双编码器:把人和内容塞进同一个数学空间

双编码器:把人和内容塞进同一个数学空间

新架构的核心是"双编码器"(Dual Encoder)。同一个LLM把用户画像和帖子内容都转换成向量,扔进同一个高维空间。训练目标很直接:用户和帖子产生真实互动时,它们的向量距离就近;没互动,就远。

这个设计解决了旧架构的根本矛盾——以前5个源用5种"语言"描述相关性,现在所有人说同一种"方言"。

但第一个坑立刻出现:LLM天生擅长理解自然语言,对LinkedIn的结构化数据却一脸懵。

用户的职业履历不是散文,是字段:公司名、职位、任职时间、技能标签。帖子的互动数据也不是文本,是数字:点赞数、评论数、转发链。怎么让Transformer读懂这些"表格语言"?

LinkedIn的解法是把结构化数据"序列化"成伪文本。一份履历变成:"Software Engineer at Google, 2018-2022, Skills: Python, Machine Learning"。帖子互动特征嵌入成特殊token。这种"翻译"损失了部分结构信息,但换来了模型的统一处理能力。

第二个坑更棘手:延迟。

50毫秒生死线:推理优化的三板斧

50毫秒生死线:推理优化的三板斧

13亿用户,每人每次刷新Feed都要实时计算用户-内容匹配度。LLM推理天生慢,怎么压到50毫秒以内?

LinkedIn砍了三刀。

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

第一刀,向量预计算。帖子侧的编码可以离线完成。新帖子发布时,系统立即生成向量存进索引。用户刷新时,只需要实时编码用户画像,然后做向量检索——从O(n)的相似度计算变成O(1)的近似最近邻(ANN)查找。

第二刀,模型瘦身。原始LLM被蒸馏成专用小模型,参数量砍掉两个数量级。精度损失控制在可接受范围内,推理速度提升10倍以上。

第三刀,缓存策略。用户画像变化没那么快,编码结果可以缓存数小时。高频用户的向量甚至常驻内存。

三刀下去,P99延迟稳在50毫秒以下。但团队很快撞上第三个问题:数据噪声。

训练数据的"信噪比"战争

训练数据的"信噪比"战争

推荐系统的训练数据有个悖论:用户看到的都是系统选出来的内容,系统选出来的都是模型认为好的内容。这叫"曝光偏差"(Exposure Bias),是推荐算法的经典陷阱。

LinkedIn的Feed数据尤其脏。用户点赞可能出于社交压力,转发可能是为了"标记稍后阅读",收藏可能永远不再打开。哪些信号代表真正的兴趣?

团队的做法是重新定义"正样本"。不是简单地把点击、点赞、评论一视同仁,而是设计多任务学习目标:预测用户是否会"深度互动"——比如评论字数超过某个阈值,或者点击后停留时长超过中位数。

更关键的是负采样策略。随机采样无关帖子太容易,模型学不到东西。LinkedIn用"难负样本"(Hard Negatives):模型之前误判为高相关的帖子,专门挑出来让模型重新学。

这种"错题本"机制让模型快速收敛到真正有用的特征,而不是在噪声里打转。

单一架构的隐性成本

单一架构的隐性成本

2024年,新架构全面上线。5套系统缩成1个,维护团队合并,优化目标统一。但单一架构也有新风险。

以前某个检索源崩溃,其他源还能兜底。现在单点故障就是全局故障。LinkedIn的应对是强化索引的多副本和快速切换能力,但这又增加了基础设施复杂度。

另一个问题是可解释性。旧架构里,协同过滤为什么推这篇帖子、热门源为什么选那个话题,工程师能讲清楚。LLM的向量相似度是个黑盒,调试难度陡增。团队不得不开发专门的可视化工具,把高维向量投影到可理解的语义空间。

最大的长期挑战可能是"能力边界"。LLM擅长理解语义相似性,但对时间敏感性、社交传播动力学这类需要显式建模的现象,捕捉能力存疑。LinkedIn的解法是在LLM之上保留少量规则层,处理这些"硬约束"。

这某种程度上是妥协——不是纯粹的端到端,而是"LLM+规则"的混合架构。但工程就是trade-off,不是吗?

LinkedIn Feed团队去年在一个技术分享中提到,他们正在实验让LLM直接生成检索策略,而非只是生成向量。如果这条路走通,推荐系统可能会进入下一个阶段:模型不仅决定"推什么",还决定"怎么推"。

但那个阶段的数据噪声、延迟约束和可解释性难题,只会比现在更复杂。你觉得,当推荐系统的决策链条越来越长、越来越黑盒,用户最终会得到更好的内容,还是更精准的"信息茧房"?