生成式推荐的序列原理
生成式推荐自身的 item tokenization 和自回归原理
原题:请解释生成式推荐(Generative Recommendation)的基本概念、工作原理,以及它与传统判别式推荐模型的主要区别。
RAG基础 · 小红书真题
回答与解析
基本概念
生成式推荐将推荐任务重新建模为序列生成问题:把用户历史行为、上下文信息编码为Prompt,让模型自回归生成下一个物品的ID或属性,而非传统打分排序。
工作原理
核心流程:
- 统一Token空间:将用户ID、物品ID、行为类型、时间等离散化为统一词汇表
- 序列化输入:
[BOS] 用户u [SEP] 点击i1 [SEP] 收藏i2 [SEP] 时间t [SEP] → 生成i3 - 自回归生成:模型学习行为序列的联合分布 P(i₃|u, i₁, i₂, t...)
典型方案:
- GPT4Rec/TIGER:直接生成Item ID
- P5/UniRec:统一多种推荐任务(序列预测、解释生成、对话推荐)为文本生成
与判别式推荐的核心区别
| 维度 | 判别式(传统) | 生成式 |
|---|---|---|
| 建模目标 | 点估计:P(y=1|x) 或 打分分数 | 分布建模:P(y|x) 完整序列分布 |
| 优化方式 | 独立样本的BCE/MSE损失 | 序列级别的交叉熵(MLE) |
| 物品关系 | 隐式通过Embedding学习 | 显式通过自注意力捕获长程依赖 |
| 输出形式 | Top-K排序列表 | 可直接生成ID、解释文本、甚至推荐理由 |
| 灵活性 | 任务特定模型 | 统一架构处理多种推荐任务 |
关键优势与挑战
优势:
- 天然融合内容信息(标题、图文),缓解ID冷启动
- 统一框架支持多任务(推荐+解释+对话)
- 利用预训练LLM的泛化能力
挑战:
- 推理延迟:自回归生成 vs 向量内积检索
- ID词汇表爆炸:百万级物品需高效Token化(如Semantic ID、分层编码)
- 位置偏差:生成顺序影响多样性
小红书场景的思考
笔记推荐适合生成式范式——内容属性丰富(标题、标签、图文),可生成"为什么推荐"的解释增强信任。但需解决:① 十亿级笔记的ID压缩 ② 在线P99延迟<100ms的推理优化(推测解码、缓存)。
学习建议
建议系统学习该知识点
口语版讲法(约4分钟)
- 本质是序列生成而非打分排序
- 核心流程:统一Token空间、序列化、自回归
- 与判别式的本质区别:分布建模 vs 点估计
- 落地风险:延迟、ID压缩、位置偏差
- 小红书场景的取舍:内容丰富但需优化
这道题其实在问推荐系统的范式转变,从传统的打分排序变成序列生成。我理解生成式推荐的核心是把推荐当成一个语言模型任务,用户历史行为拼成一个 prompt,然后自回归生成下一个物品的 ID,而不是算一个分数再排序。
具体说一下它的工作流程。第一步是统一 Token 空间,把用户 ID、物品 ID、行为类型、时间戳这些都离散化成同一个词汇表里的 token。第二步是序列化输入,比如 [BOS] 用户u [SEP] 点击i1 [SEP] 收藏i2 [SEP] 时间t,让模型去预测下一个 token 是 i3。第三步就是自回归生成,模型学到的是整个行为序列的联合概率分布,P(i₃ u, i₁, i₂, t...)。
那它和传统的判别式推荐区别在哪?最根本的是建模目标不同。判别式模型做的是点估计,比如算 P(点击=1 x),或者直接打个分,然后按分数排序。生成式模型做的是分布建模,它要生成整个序列,所以物品之间的关系是通过自注意力机制显式捕获的,不是靠隐式的 embedding 相似度。输出形式也不一样,判别式只能给一个排序列表,生成式可以直接输出物品 ID、推荐理由、甚至对话回复,灵活性更高。
但落地的时候有几个坑。先看推理延迟,这是最直接的,自回归生成是逐个 token 出的,比向量内积检索慢很多,线上 P99 延迟很容易超 100ms。接着说 ID 词汇表爆炸,百万级甚至十亿级物品,直接当 token 来生成不现实,得用 Semantic ID 或者分层编码来压缩。再补充位置偏差,生成顺序会影响多样性,如果模型总先生成热门物品,推荐就容易单调。
举个例子,在小红书笔记推荐里,生成式其实挺合适的,因为笔记内容属性丰富,有标题、标签、图文,可以生成一句“为什么推荐”的解释,增强用户信任。但前提是必须解决那三个风险:十亿级笔记的 ID 压缩、在线延迟优化、还有位置偏差。如果延迟搞不定,生成式再灵活也上不了线,所以实际落地我倾向混合方案,用生成式做粗排或者解释生成,但召回和精排还是走传统判别式。
其实还有一个有意思的点,就是生成式推荐天然能利用预训练语言模型的泛化能力,缓解冷启动物品的问题。但这个能力依赖模型对物品内容的深层理解,如果物品只有 ID 没有文本描述,效果就大打折扣。
关键一句:生成式推荐依赖物品的文本描述来利用预训练 LLM 的泛化能力,纯 ID 场景效果差。
面试官还可能这样问
- 问法 1 · 场景切入
假设你在做电商首页推荐,用户点击了几个商品然后走了,明天回来你希望直接生成一个他可能喜欢的商品ID,而不是先算一堆分数再排序。你觉得怎么建模能实现这种‘直接生成’?
- 问法 2 · 层层追问
传统推荐你是怎么做的?……就是先算用户和物品的匹配分,然后排序对吧。那如果我想让模型直接输出下一个要推荐的物品,甚至还能输出推荐理由,这个思路你怎么看?……它和打分排序的本质区别在哪里?
- 问法 3 · 直球架构
解释一下生成式推荐的基本概念和工作原理,重点说清楚它和传统判别式推荐模型在建模目标、优化方式和输出形式上有什么本质区别?