范式一:LLM 嵌入 + 推荐系统
约 2661 字大约 9 分钟
2025-07-22
🎭 范式一:LLM 嵌入 + 推荐系统 (LLM Embeddings + RS)
在这种模式下,大型语言模型(LLM)扮演着一个 "幕后英雄" 的角色。它不直接面对用户给出推荐,而是作为推荐系统中一个强大的特征工程组件,专注于将非结构化的文本信息转化为高质量的数字特征,即嵌入(Embeddings)。这些嵌入随后被送入传统的推荐模型,极大地提升了模型对用户和物品的理解深度。
核心思想:万物皆可 Embedding
该范式的核心在于利用 LLM 强大的文本理解能力,为推荐系统中的用户(User)和物品(Item)生成富有语义的向量表示。这套思想的本质,是将推荐问题中的元素(用户、物品)与自然语言中的元素(单词、句子)进行类比,从而借助在自然语言领域被验证成功的强大模型(如BERT)来解决推荐问题。
- 对于物品(Item):LLM 可以读取物品的标题、描述、属性、甚至是用户评论,然后输出一个能够代表该物品核心特性的向量。这个向量捕捉了文字背后的深层含义,使得语义上相近但用词不同的物品(例如,"适合程序员的机械键盘"和"高键程、反馈明确的打字键盘")在向量空间中也能彼此靠近。
- 对于用户(User):同理,LLM 可以分析用户的历史行为记录,如看过的文章标题、搜索过的关键词、发表过的评论等,从而为用户生成一个动态的、能够反映其当前兴趣和偏好和价值观的向量表示。
工作流程
其典型工作流程可以分为两步:
- 特征编码阶段(离线):
- 收集用户和物品的原始文本数据(或其他可序列化的行为数据)。
- 利用预训练好的 LLM(特别是像 BERT 这样的判别式模型)对这些数据进行编码,生成对应的嵌入向量。
- 将这些嵌入向量存储起来,作为用户和物品的增强特征。
- 推荐模型训练/预测阶段(在线/离线):
- 在训练传统推荐模型(如矩阵分解、DSSM、基于Transformer的模型等)时,将 LLM 生成的嵌入向量作为额外的输入特征,与其他特征(如用户ID、物品ID、上下文特征等)拼接或通过注意力机制进行融合。
- 模型通过学习,将文本语义信息与用户的行为模式关联起来,从而做出更精准的推荐。
经典案例剖析
这一范式是 LLM 在推荐领域应用得最早、最成熟的方向,涌现了许多经典的研究。
BERT4Rec
(CIKM 2019) - 序列推荐的里程碑BERT4Rec
是将 BERT 思想应用于序列推荐的开创性工作。它巧妙地将推荐问题与自然语言处理中的"完形填空"(Cloze Task)任务进行了类比,彻底改变了以往序列推荐模型的建模方式。核心创新:
- 双向上下文感知:此前的序列推荐模型(如 GRU4Rec)大多采用循环神经网络(RNN),只能单向地(从左到右)处理用户的行为序列,无法充分利用未来的行为信息来理解当前时刻的兴趣。
BERT4Rec
借鉴了 BERT 的双向 Transformer 架构,能够同时利用一个物品之前和之后的行为信息来理解用户的真实意图。这就像我们在阅读句子时,需要结合上下文才能准确理解一个词的含义一样。 - Cloze 任务范式:它不再像传统模型那样预测序列的"下一个"物品,而是随机地"遮盖"(Mask)掉用户行为序列中的一或多个物品,然后强制模型根据序列的其余部分,来预测被遮盖的物品是什么。这种
Masked Item Prediction
的训练方式,使得模型能够学习到物品之间更深层次的、非连续的依赖关系。
- 双向上下文感知:此前的序列推荐模型(如 GRU4Rec)大多采用循环神经网络(RNN),只能单向地(从左到右)处理用户的行为序列,无法充分利用未来的行为信息来理解当前时刻的兴趣。
一句话总结:
BERT4Rec
首次证明了双向的深度上下文信息对于理解用户行为序列至关重要,将序列推荐带入了"预训练-微调"的新时代。
📖
BERT4Rec
模型架构# 这不是可运行的代码,仅为帮助理解的伪代码结构 class BERT4Rec(torch.nn.Module): def __init__(self, item_count, hidden_size, num_layers, num_heads): super().__init__() self.item_embeddings = torch.nn.Embedding(item_count + 1, hidden_size, padding_idx=0) # +1 for [MASK] token self.position_embeddings = torch.nn.Embedding(max_sequence_length, hidden_size) # 使用标准的Transformer编码器层 self.transformer_encoder = torch.nn.TransformerEncoder( encoder_layer=torch.nn.TransformerEncoderLayer( d_model=hidden_size, nhead=num_heads ), num_layers=num_layers ) self.output_layer = torch.nn.Linear(hidden_size, item_count + 1) def forward(self, input_ids, masked_positions): # 1. 获取物品和位置的嵌入 item_embeds = self.item_embeddings(input_ids) pos_embeds = self.position_embeddings(torch.arange(input_ids.size(1))) # 2. 输入表示 = 物品嵌入 + 位置嵌入 input_representation = item_embeds + pos_embeds # 3. 通过Transformer Encoder进行双向编码 encoded_sequence = self.transformer_encoder(input_representation) # 4. 提取被Mask位置的输出,并预测原始物品 masked_outputs = encoded_sequence[masked_positions] predictions = self.output_layer(masked_outputs) # [batch_size, num_masked, item_vocab_size] return predictions
U-BERT
(AAAI 2021) - 从文本中学习用户深度表示如果说
BERT4Rec
关注的是行为序列,那么U-BERT
则将目光投向了信息量更丰富的用户评论文本,旨在学习到更深层次的用户表示。核心创新:
- 双塔式文本编码:
U-BERT
构建了一个双塔 BERT 结构,一个塔负责编码用户自己发表过的所有评论,生成用户的"表达偏好"向量;另一个塔负责编码目标物品收到的所有评论,生成物品的"口碑"向量。 - 评论协同匹配 (Review Co-Matching):该模型的精髓在于,它不只是孤立地看用户或物品,而是通过一个**协同匹配层(Co-Matching Layer)**来捕捉用户"表达偏好"与物品"口碑"之间的细微语义关联。例如,一个用户总是在评论中抱怨"性价比不高",而一个物品的评论区充满了"物超所值"的赞誉,模型就能通过语义匹配捕捉到这种深度的契合。
- 双塔式文本编码:
一句话总结:
U-BERT
证明了通过深度匹配用户侧和物品侧的UGC文本,能够挖掘出远比行为序列更丰富、更具解释性的用户兴趣。
UniSRec
(KDD 2022) - 迈向可迁移的通用推荐模型UniSRec
旨在解决一个长期困扰推荐系统的难题:如何将在一个领域(如新闻App)学到的知识,迁移到另一个完全不同的领域(如图书App)?核心创新:
- 放弃物品ID,拥抱文本:传统模型严重依赖物品ID,但不同领域的物品ID是完全不通用的,这导致模型无法迁移。
UniSRec
提出,物品的文本描述(如标题、摘要)是跨领域通用的。它利用 BERT 对所有物品的文本进行编码,从而获得一个统一的、跨领域的物品语义表示空间。 - 通用序列表示:模型的核心任务,是学习一个能够将任何领域的行为序列,都映射到这个统一物品语义空间的用户表示。这样,即使用户在图书领域没有任何行为,只要他在新闻领域有阅读历史,模型也能为其生成一个有意义的用户表示,并在这个统一空间中找到他可能喜欢的图书。
- 放弃物品ID,拥抱文本:传统模型严重依赖物品ID,但不同领域的物品ID是完全不通用的,这导致模型无法迁移。
一句话总结:
UniSRec
通过将物品表示锚定在可跨领域迁移的文本语义上,为构建通用推荐基础模型迈出了关键的一步,是解决跨领域推荐和冷启动问题的典范之作。
优势与局限
显著优势:
- 解决数据稀疏和冷启动:对于新物品或新用户,只要有文本描述,就能立即生成有意义的特征向量,极大地缓解了冷启动问题。
- 提升推荐精度:引入了丰富的语义信息,让模型能够理解"为什么"推荐,而不仅仅是基于历史行为的"模式匹配"。
- 技术成熟,易于落地:该范式可以作为现有推荐系统的一个"插件",无须对主体架构做颠覆性改造,方便与现有工程体系结合。
主要局限:
- 两阶段分离:特征提取(LLM 编码)和推荐模型训练是分离的,这可能导致次优解(sub-optimal)。因为 LLM 在编码文本时,并不知道下游推荐任务的具体目标是什么,它提取的通用语义特征未必是推荐任务最需要的。
- 忽略生成能力:此范式主要利用 LLM 的"理解"能力,其强大的"生成"能力(如生成解释、与用户对话)则被忽略了。
📖 延伸阅读
- BERT4Rec: Sequential Recommendation with Bidirectional Encoder Representations from Transformer
- U-BERT: Pre-training User Representations for Improved Recommendation
- Towards Universal Sequence Representation Learning for Recommender Systems (UniSRec)
思考题
- 在你的理解中,"LLM嵌入"与传统的"物品画像"(Item Profile,通常指基于规则或简单模型提取的标签式特征)最大的区别是什么?
- 如果让你设计一个利用 LLM 嵌入来改进电商场景中"商品详情页"推荐效果的方案,你会如何设计?你会选择哪些文本信息来喂给 LLM?
🎉 章节小结
范式一"LLM 嵌入 + 推荐系统"是 LLM 在推荐领域最成熟、最务实的落地方式。它将 LLM 定位为一个强大的语义编码器,通过将用户和物品的文本信息(或可被类比为文本的行为序列)转化为高质量的嵌入向量,为传统推荐模型注入了前所未有的深度语义理解能力。这种方式尤其擅长解决物品冷启动和数据稀疏问题,并且能与现有系统平滑集成,是提升推荐效果的"即插即用"利器。
LLM 嵌入 + 推荐系统,就像是给只会按图索骥的老牌侦探(传统推荐模型),配备了一位精通多国语言和微表情心理学的顶尖专家(LLM)。专家不直接破案,但他能将一堆看似无用的杂乱线索(文本信息),瞬间解读成指向真凶的关键情报(嵌入向量),让老侦探的破案率飙升。