推荐系统的范式演进
传统推荐系统采用多阶段漏斗(召回→精排),但这种割裂的架构难以整体优化。以 TIGER、HSTU、OneRec 为代表的端到端生成式推荐框架通过 Seq2Seq 自回归方式直接生成 item 标识符,统一了检索与排序,展现出强大能力。
问题:生成式推荐缺乏显式推理
与此同时,LLM 领域的 Chain-of-Thought(CoT)技术(Wei et al., 2022; DeepSeek-R1; Seed-1.5)通过"先推理、再回答"大幅提升了复杂任务的准确率。一个自然的问题是:能否把 CoT 推理引入生成式推荐?
为什么这件事不简单
- 模态鸿沟:推荐系统使用离散的 Item ID(如
<item_a_5083><item_b_2280><item_c_5301>),而 LLM 在文本 token 空间工作,两者天然不兼容 - 噪声行为序列:真实用户的行为序列很长且嘈杂,直接让 LLM 在噪声序列上生成 CoT 往往失败
- 多义性奖励:推荐任务存在"多有效答案"问题——用户感兴趣的视频不止一个,传统 RL 奖励(只有命中才得分)极度稀疏
- 工业延迟:实时推理时,让模型先生成几百个 token 的思维链、再输出推荐结果,延迟会爆炸
`" />
OneRec-Think 的三大贡献
分别解决了:模态对齐、CoT 激活(噪声序列问题)、RL 奖励稀疏问题和工业部署延迟问题。
在形式化上,传统生成式推荐定义为:
- $s^{v_i}$:item $v_i$ 的 itemic token 序列(如 $\langle\text{item\_a\_5083}\rangle\langle\text{item\_b\_2280}\rangle\langle\text{item\_c\_5301}\rangle$)
- $s^{v_{n+1}}$:模型预测的下一个 item 的 itemic token
- $\theta$:模型参数
OneRec-Think 将其改造为先推理再推荐的联合生成:
- $\mathcal{P}(\cdot)$:把用户历史序列格式化为文本 prompt 的函数
- $\tau = (r_1,\ldots,r_M)$:先生成的推理序列(思维链),$M$ 个文本 token
- $s^{v_{n+1}}$:以思维链 $\tau$ 为条件生成的目标 item itemic token
- 整个过程是一次自回归 pass:先输出 $\langle\text{think}\rangle\ldots\langle/\text{think}\rangle$,再输出 itemic token
输入(用户历史):用户 U 历史点赞:《三角洲行动》战术视频、《战地》经典场景回顾、GTA6 最新爆料、显卡对比测评……
生成过程(单次自回归):
<think> 用户对军事题材游戏和动作冒险类游戏有浓厚兴趣,且主动搜索过显卡对比,说明他对游戏性能优化有关注。由于用户喜欢高画质游戏(战地、GTA6),可能正在寻找能提升游戏体验的硬件支持。因此推荐显卡性能分析相关视频。</think>
<item_begin><item_a_4029><item_b_4601><item_c_5058><item_end>(显卡对比分析视频)
关键点:推理 $\tau$ 和 item token $s^{v_{n+1}}$ 在同一次自回归 pass 中顺序生成,思维链天然作为 item 生成的上下文。
2.1 阶段一:Itemic Alignment(物品语义对齐)
Itemic Token 是 item 的离散语义表示单元,类比 NLP 中的"词"。每个 item $v$ 被编码为一组 token 序列 $s^v = (s_1^v, \ldots, s_L^v)$(如 3 层分层语义 ID),通过 RQ-VAE 从多模态内容中生成。
问题:base LLM 的词表里没有这些 itemic token,embedding 是随机初始化的,模型完全不懂这些 token 的语义。需要先做语义对齐。
四个预训练任务:
-
1Task 1: Interleaved User Persona Grounding(交错用户画像接地)
将 itemic token 和文本 token 交错组合成训练样本。样本包含:用户静态属性(年龄、地区)、主动搜索行为(文本)、历史交互序列(itemic token)、以及 LLM 总结的用户兴趣描述(文本)。通过让模型在 itemic token 和文字上下文共现的训练样本中学习,建立"item embedding ↔ 语义概念"的连接。
-
2Task 2: Sequential Preference Modeling(序列偏好建模)
核心推荐任务:给定历史 itemic token 序列,预测下一个 item 的 itemic token。这是标准的 next-token prediction 在推荐上的应用。
-
3Task 3: Itemic Dense Captioning(物品密集描述)
给定一个 item 的 itemic token,要求模型生成该 item 的文字描述(标题、类目、内容摘要等)。这相当于让模型学会"将 item token 翻译成人类语言",强迫模型建立 item token → 语义的映射。
-
4Task 4: General Language Modeling(通用语言建模)
继续在通用文本语料上训练,防止模型在学习推荐知识的过程中灾难性遗忘语言能力。
两阶段训练策略:
Token Warm-up(Token 预热)
冻结 base LLM 所有参数,只训练 itemic token 的 embedding。仅使用 Task 1(用户画像接地),让 itemic token embedding 通过大量文本共现场景学到初始语义。
目的:先让 embedding 有意义,再开始全量训练,避免随机 embedding 污染模型。
Multi-Task Integration(多任务融合)
解冻所有参数,四个任务联合训练。LLM 在理解 itemic token 语义的同时,学会将其融入对话和推理上下文。
按设计比例混合四个任务的数据,保证各任务都有足够的训练信号。
Task 1 样本(交错画像):
文本部分:"用户 ID 12345,25岁,北京,近期搜索过'篮球教学'、'NBA 集锦'"
Itemic token 部分:点赞 <item_a_842><item_b_92><item_c_7860>,收藏 <item_a_5069><item_b_4601><item_c_3132>…
总结文本:"用户主要兴趣:篮球运动和相关技术视频(60%+),兼具游戏和搞笑内容"
Task 3 样本(物品描述):
输入:<item_a_219><item_b_189><item_c_49><item_d_227>
输出(Ground Truth):Title: "Manuka Honey and Manuka Oil Skin Cream",Category: "Beauty > Skin Care > Face > Cleansers"
通过这类任务,模型学会"这组 token = 护肤品",建立了 item embedding 的语义内容。
2.2 阶段二:Reasoning Activation(推理激活)
核心挑战:即使完成了 Itemic Alignment,直接让模型在真实的嘈杂、超长行为序列上生成 CoT 往往失败——用户历史太长太杂乱,模型不知道应该关注哪些行为、推理逻辑怎么写。
解决思路(两步蒸馏):
第一步:用剪枝上下文 Bootstrap 推理(Bootstrapping with Pruned Contexts)
对每个用户,选取候选 item $s^{v_{n+1}}$,用相似度函数从历史中找出最相关的 top-$k$ 条交互:
- $g(\cdot,\cdot)$:相似度函数,计算历史 item 与目标 item 的相关度(如 embedding 点积)
- $(s^{w_1},\ldots,s^{w_k})$:从历史中检索出的最相关的 $k$ 条 item,是"去噪后的关键历史"
- 这 $k$ 条历史大概率与目标 item 在主题/类目/偏好上高度相关,逻辑关系清晰
然后用这 $k$ 条精华历史 + 目标 item,让预对齐好的模型生成推理 $\tau$:
- $\mathcal{P}_r(a, b)$:特殊 prompt,引导模型"解释为什么交互过序列 $a$ 的用户会点击 item $b$"
- 输入是剪枝后的 top-k 历史,信噪比高,模型容易生成逻辑清晰的推理
- 生成的 $\tau$ 作为高质量标注,为下一步提供训练信号
第二步:在完整嘈杂序列上学推理(Learning to Reason from Noisy Sequences)
用上一步生成的 $\tau$ 作为 supervision,训练模型从完整嘈杂历史上生成推理 + item,损失函数为:
- $r_i$:第 $i$ 个推理 token,$M$ 是推理序列总长度
- $s_j^{v_{n+1}}$:目标 item 的第 $j$ 个 itemic token,$L$ 是 itemic token 数量(如 3 层 = 3)
- 第一个求和:最大化在完整嘈杂历史上生成正确推理的概率
- 第二个求和:最大化给定历史 + 推理后生成正确 item token 的概率
- 两项联合训练:推理质量和推荐准确率同步优化
原始嘈杂序列(长度 50+):篮球教学 → 搞笑段子 → NBA 集锦 → 宠物猫 → 美食探店 → 篮球战术分析 → 手机评测 → 游戏高光 → 篮球球员采访 → 彩妆教程 → …(50 条)
目标 item:篮球体能训练视频
第一步:top-k 检索剪枝(k=5)
检索出与目标 item 最相关的 5 条:篮球教学 → NBA 集锦 → 篮球战术分析 → 篮球球员采访 → 篮球比赛集锦
生成高质量 CoT:"用户历史中篮球相关内容占绝大多数,对技术细节(战术分析)和职业球员内容都有关注,说明用户是有一定水平的篮球爱好者,会对系统性的体能训练内容感兴趣。"
第二步:SFT 训练
输入:完整 50 条嘈杂历史(含宠物猫、美食探店等噪声),目标输出:上面那段推理 + 体能训练 itemic token
→ 模型学会从噪声中抓住"篮球主线",产生与干净序列相同质量的推理
2.3 阶段三:Reasoning Enhancement(推理增强,RL 阶段)
推荐任务的 RL 困境:奖励稀疏
对于 GRPO 这类 RL 算法,常见做法是:生成多个 rollout,完全命中 ground truth 得分,否则得 0,通过组内相对优势更新模型。但在推荐场景这会失败:
解决方案:Rollout-Beam Reward(Beam 搜索候选奖励)
不用单一 rollout 的 greedy decode,而是在每个 rollout 的推理 $\tau$ 之后,用 beam search(宽度 $K$)生成 $K$ 个候选 item,对每个候选逐层比较 itemic token,取 $K$ 个候选中得分最高的作为该 rollout 的奖励:
- $\mathcal{B} = \{(\hat{s}_1^{(j)},\ldots,\hat{s}_L^{(j)})\}_{j=1}^{K}$:Beam Search 输出的 top-$K$ 候选 item 集合
- $\sum_{l=1}^{L} \mathbb{I}(\cdot)$:对某个候选逐层比较 SID token,数对了几层,取值范围 $\{0,1,...,L\}$,是部分分而非二元命中
- $\max$:取 $K$ 个候选中部分分最高的那个
- 关键效果:① beam 提供 $K$ 次机会,提高命中概率;② 部分匹配(如对了 2/3 层)也能得分,reward 分布更连续,梯度信号更丰富
基于 $R_{\text{Rollout-Beam}}$ 使用 GRPO 优化:对同一个用户历史生成多个 rollout(每个 rollout 有不同的推理 $\tau$),每个 rollout 内部 beam search 后取最优部分分,以组内相对优势更新策略。
设定:item 用 3 层 SID token 表示,ground truth 为 [a_5083, b_2280, c_5301]。
传统做法(greedy decode,单次机会,二元奖励):
- Rollout-1 greedy 输出:
[a_5083, b_2280, c_9999]→ 第 3 层错 → 奖励 = 0 - Rollout-2 greedy 输出:
[a_1111, b_4444, c_7777]→ 全错 → 奖励 = 0 - 结果:组内奖励全为 0,组内优势全为 0,GRPO 无法更新
Rollout-Beam Reward(K=5,逐层 SID 部分分):
同样是 Rollout-1,beam search 输出 5 个候选,逐层与 GT 比较:
- 候选1:
[a_5083, b_2280, c_9999]→ 对了第1、2层 → 得分 = 2 - 候选2:
[a_5083, b_7777, c_3333]→ 只对第1层 → 得分 = 1 - 候选3:
[a_1111, b_2222, c_3333]→ 全错 → 得分 = 0 - 候选4:
[a_5083, b_2280, c_5301]→ 3层全对 → 得分 = 3 ✅ - 候选5:
[a_5083, b_4444, c_5301]→ 对了第1、3层 → 得分 = 2 - Rollout-1 奖励 = max(2,1,0,3,2) = 3
即使 beam 里没有完全命中的候选,部分分也能提供有效梯度:
- Rollout-2(推理质量差):beam 5 个候选最优得分 = 1 → 奖励 = 1
- Rollout-3(推理更差):beam 5 个候选最优得分 = 0 → 奖励 = 0
- 组内优势:Rollout-1(3) > Rollout-2(1) > Rollout-3(0),GRPO 能区分三种推理质量并产生有效梯度
核心洞察:reward 是逐层 SID 匹配的部分分,不是二元命中。beam search 既增加命中机会,又让 reward 分布更连续,从根本上解决稀疏问题。同时 beam search 本来就是推理时的解码策略,训练奖励与推理方式完全一致。
2.4 工业部署:Think-Ahead 架构
问题:在线推荐要求极低延迟(几十毫秒内响应)。OneRec-Think 需要先生成几百个推理 token 再输出 item,延迟无法接受。
完整的 OneRec-Think 模型对每位用户生成:① 完整推理路径 $\tau$;② 前几个 itemic token(如前 2 个 level 的 token)。这些"前缀 token"代表用户的宏观意图或大类偏好(如"科技类游戏视频"),可以提前缓存。
用一个轻量级的实时更新 OneRec 模型(无推理模块)作为在线 decoder。输入:用户最新上下文 + 离线生成的前缀 token(约束条件);输出:在前缀约束下快速生成完整的 item itemic token。
这样在线只需要极少步骤(仅剩余的几个 token),延迟极低;前缀约束保证最终推荐结果与离线推理的宏观意图一致。
用户 U 每天浏览快手 App:
离线(每天定时运行):OneRec-Think 分析 U 的历史行为,生成推理"用户近期关注了大量 Delta Force 游戏内容,今晚可能点击游戏版本更新视频",并输出前 2 个 itemic token 作为意图前缀:<item_a_1428><item_b_2625>(约束了大类:游戏/Delta Force)
在线(用户打开 App 时):轻量级 OneRec 模型接收前缀 <item_a_1428><item_b_2625> 作为约束,结合用户最新几秒的行为(实时性),快速生成最后一个 token <item_c_2470>,组成完整 item。全程仅需 1 个 token 生成步骤,延迟极低。
效果:推理的深度(离线) + 实时性(在线)两全其美
2.5 OneRec-Think 在推荐系统中的定位
OneRec-Think 继承了 OneRec 的系统定位:不是独立的召回模型,而是取代传统召回→粗排→精排三级漏斗的单一端到端生成模型。
"These unified models replace the traditional multi-stage recommendation funnel (involving separate retrieval and ranking stages), enabling holistic optimization towards the final objective."
| 传统推荐系统 | OneRec / OneRec-Think |
|---|---|
| 召回(双塔/ANN)→ 粗排 → 精排,三个独立模型 | 单一 LLM,一次自回归直接输出最终推荐结果 |
| 各阶段目标不一致,优化目标割裂 | 端到端直接优化最终用户体验指标 |
| 无推理能力,黑盒预测 | 先生成可解释推理路径,再输出推荐 |
在快手的实际部署中,OneRec-Think 通过 Think-Ahead 架构(离线推理 + 在线轻量续写)解决了单模型替代整个漏斗时的延迟问题,以 1.29% 流量实验组对比线上模型,获得 App 停留时长 +0.159% 的收益。
2.6 输入 / 输出格式详解
模型的输入是一个结构化 Prompt,主要由三部分组成:用户行为序列(SID token)、系统生成的用户兴趣摘要(自然语言)、任务指令。输出先生成推理文本 $\tau$,再生成目标 item 的 SID token。
[任务指令] Recommend videos based on the user's viewing history. [用户行为序列(行为类型 + SID token,顺序排列)] Liked and favorited video <item_a_1468><item_b_868><item_c_6436> Liked and favorited video <item_a_1468><item_b_2768><item_c_349> Liked video <item_a_842><item_b_92><item_c_7860> Favorited video <item_a_5069><item_b_4601><item_c_3132> ...... [系统生成的用户兴趣摘要(自然语言,可选)] Primary Interests: enjoys humorous skits, film analyses (over 60% of content) and lighthearted entertainment. Also engages with Honor of Kings content, indicating a casual gaming interest. Secondary Interests: Diverse explorations include pet (cat) videos, traditional culture, and local food content. ......
说明:历史序列的 item 用 SID token 表示(不是文字描述),但 Prompt 里附加了系统预生成的用户兴趣摘要(自然语言),让模型兼具 ID 信号与语义理解。工业版 3 层 SID,开源实验版 4 层。
[推理部分 τ(纯自然语言,<think>...</think> 包裹)] <think> 用户观看历史记录的主题是游戏和科技产品对比。 用户点赞了《战地》系列经典场面回顾和《GTA6》最新爆料汇总, 表明他对军事题材游戏和动作冒险类游戏有浓厚兴趣。 同时,用户主动搜索了显卡对比视频,说明他对硬件性能的 比较感兴趣。推理逻辑:用户对游戏和科技的兴趣延伸到了 实际应用场景——通过显卡对比优化游戏体验。因此,推荐 显卡性能分析相关视频。 </think> [推荐结果(SID token,<|item_begin|>...<|item_end|> 包裹)] <|item_begin|><item_a_4029><item_b_4601><item_c_5058><|item_end|>
说明:推理 $\tau$ 和 item SID token 在同一次自回归 pass 中顺序生成,思维链天然作为 item 生成的条件上下文。训练时两部分都在 loss 内(Stage 2);RL 阶段(Stage 3)只对 SID token 部分计算 Rollout-Beam Reward。
3.1 公开 Benchmark(Amazon Review Datasets)
使用 Amazon Beauty、Toys、Sports 三个数据集,backbone 为 Qwen3-1.7B,词表扩充 1,024 个 itemic token(四层分层 ID,每层 256 个)。评估指标:Recall@5/10 和 NDCG@5/10,beam search 宽度 10。
| 数据集 | 方法 | R@5 | R@10 | N@5 | N@10 |
|---|---|---|---|---|---|
| Beauty | BERT4Rec | 0.0232 | 0.0396 | 0.0146 | 0.0199 |
| HGN | 0.0319 | 0.0536 | 0.0196 | 0.0266 | |
| GRU4Rec | 0.0395 | 0.0584 | 0.0265 | 0.0326 | |
| SASRec | 0.0402 | 0.0607 | 0.0254 | 0.0320 | |
| TIGER | 0.0405 | 0.0623 | 0.0267 | 0.0337 | |
| HSTU | 0.0424 | 0.0652 | 0.0280 | 0.0353 | |
| ReaRec | 0.0450 | 0.0704 | 0.0262 | 0.0344 | |
| OneRec-Think | 0.0563 | 0.0791 | 0.0398 | 0.0471 | |
| Sports | BERT4Rec | 0.0102 | 0.0175 | 0.0065 | 0.0088 |
| HGN | 0.0183 | 0.0313 | 0.0109 | 0.0150 | |
| GRU4Rec | 0.0190 | 0.0312 | 0.0122 | 0.0161 | |
| SASRec | 0.0199 | 0.0301 | 0.0106 | 0.0141 | |
| TIGER | 0.0215 | 0.0347 | 0.0137 | 0.0179 | |
| HSTU | 0.0268 | 0.0343 | 0.0173 | 0.0226 | |
| ReaRec | 0.0214 | 0.0332 | 0.0116 | 0.0154 | |
| OneRec-Think | 0.0288 | 0.0412 | 0.0199 | 0.0239 | |
| Toys | BERT4Rec | 0.0215 | 0.0332 | 0.0131 | 0.0168 |
| HGN | 0.0326 | 0.0517 | 0.0192 | 0.0254 | |
| GRU4Rec | 0.0330 | 0.0490 | 0.0228 | 0.0279 | |
| SASRec | 0.0448 | 0.0626 | 0.0300 | 0.0358 | |
| TIGER | 0.0337 | 0.0547 | 0.0209 | 0.0276 | |
| HSTU | 0.0366 | 0.0566 | 0.0245 | 0.0309 | |
| ReaRec | 0.0523 | 0.0764 | 0.0298 | 0.0376 | |
| OneRec-Think | 0.0579 | 0.0797 | 0.0412 | 0.0482 |
OneRec-Think 在三个数据集全部 metric 上达到 SOTA,在 Beauty N@5 上的绝对提升尤其显著(+0.0136 vs ReaRec,相对提升约 52%)。
3.2 消融实验
| 训练配置 | R@5 | R@10 | N@5 | N@10 |
|---|---|---|---|---|
| Base(仅 itemic token 序列微调) | 0.0460 | 0.0654 | 0.0314 | 0.0377 |
| Base + IA(加 Itemic Alignment) | 0.0532 | 0.0735 | 0.0342 | 0.0402 |
| Base + IA + R(完整 OneRec-Think) | 0.0563 | 0.0791 | 0.0398 | 0.0471 |
两个模块缺一不可:Itemic Alignment 建立了 item 语义,为推理提供了语言基础;Reasoning 阶段在此之上带来进一步显著提升,证明显式 CoT 确实增强了推荐准确率。
Itemic Alignment 子阶段消融(工业 benchmark,BertScore)
| 配置 | User Understanding | Short Video Understanding |
|---|---|---|
| Qwen3(base) | 0.6588 | 0.6031 |
| Qwen3 + Token Warm-up(TW) | 0.6492 | 0.6443 |
| Qwen3 + TW + Multi-Task Integration(MI) | 0.7053 | 0.7300 |
3.3 工业在线 A/B 测试(快手)
在快手短视频平台(日活用户数亿)上,使用 1.29% 流量进行为期一周的 A/B 实验,对比 OneRec-Think(Think-Ahead 架构)与当前在线模型。
| 在线指标 | 相对提升 |
|---|---|
| App Stay Time(主指标,总停留时长) | +0.159% |
| Watch Time(观看时长) | +0.169% |
| Video View(视频观看次数) | +0.150% |
| Follow(关注) | +0.431% |
| Forward(转发) | +0.758% |
| Like(点赞) | +0.019% |
| Collect(收藏) | +0.098% |
`" />
Itemic-Textual 交错推理
OneRec-Think 展示了一种独特的推理模式:推理链中同时出现文字 token(描述偏好/逻辑)和 itemic token(直接引用具体 item),形成"文字-item"交错的推理路径。这使推理更精准——itemic token 锚定具体内容,文字 token 进行因果逻辑推断,两者协同超越了单模态推理。
<s_a_3313><s_b_4487>(某款车评视频),结合搜索记录推断有购车意图,因此推荐 <s_a_1966><s_b_2581><s_c_6305>(汽车优惠活动视频)" — itemic token 直接出现在推理文本里,比纯文字描述更精确。
论文核心贡献
技术创新点
- 首次将 CoT 推理完整引入端到端生成式推荐
- 两步 Bootstrap(剪枝→蒸馏)解决嘈杂序列上的推理激活难题
- Rollout-Beam Reward 解决推荐场景 RL 奖励稀疏问题
- Think-Ahead 架构解决推理延迟问题,实现工业部署
工程价值
- 公开 benchmark 全面 SOTA
- 快手线上 A/B:Stay Time +0.159%(亿级用户)
- Follow/Forward 大幅提升,体现深层个性化效果
- 基础设施:每日 20B token 增量训练,保持时效性
亮点解析
局限与未来方向
- 公开数据集偏弱:Amazon 数据集序列较短、item 空间较小,无法充分验证 Reasoning Activation 和 Enhancement 的全部能力。作者正在构建大规模 benchmark 以支持更全面评估。
- 长序列用户建模:当前方案对超长行为历史仍有挑战,论文提到未来会探索用户长序列建模。
- 更密集的 RL 奖励:当前 Rollout-Beam Reward 还是基于 item 命中的稀疏信号。作者提到将探索更细粒度的 dense reward,对推理过程本身打分。
- 与 GRPO 的联系:本文 RL 阶段本质是 GRPO(Group Relative Policy Optimization)的推荐定制版——同一用户历史生成多个 rollout,用 Rollout-Beam Reward 替换了标准 GRPO 中的 pass@k 奖励。推荐领域的 RL 训练方法与 LLM 推理训练正在深度融合。
对推荐系统研究的启发
"生成式推荐 + 显式推理" 这条路线的商业验证(+0.159% Stay Time),可能标志着推荐系统从"特征工程 + CTR 预估"到"LLM 全链路"范式迁移的加速。未来推荐系统可能不再是一个"黑盒打分器",而是一个能够"理解用户、解释决策、动态对话"的智能助手。