OneRec通过端到端的生成式框架替代了传统的召回-排序的级联架构。在此系统学习下OneRec-V1。

1. 背景与动机
传统推荐系统采用多阶段级联架构(召回 → 粗排 → 精排 → 重排),论文指出其三大根本性缺陷:
1.1 计算碎片化
以快手为例,服务期 超过 50% 的资源用于通信和存储而非高精度计算。精排模型在旗舰 GPU 上的 MFU 仅 4.6%(训练)/ 11.2%(推理),而 LLM 在 H100 上可达约 40%。同时 QPS > 400k、延迟 < 500ms 的约束,使模型被迫在低算力规模运行。
1.2 目标冲突
- 多目标冲突:CTR、观看时长之外还有数百个来自用户、创作者、平台生态的目标,分散在各阶段优化,逐步破坏系统一致性;
- 跨阶段建模冲突:召回效果受限于排序模型能力,排序又受上游次优结果影响。
1.3 落后于 AI 演进
LLM/VLM 领域的缩放定律、强化学习(RLHF/DPO/GRPO)等突破,因级联架构的结构性壁垒难以迁移到推荐场景。
1.4 OneRec 的解法
将召回与排序合并为单阶段 Encoder-Decoder 生成式框架,端到端直接优化最终目标,并严格优化训练/推理计算效率。
2. 整体架构
OneRec 是一个Encoder-Decoder生成模型:输入用户多尺度行为表示,自回归生成目标视频的语义 ID 序列。

整体流程如下:
1 | 用户特征/行为序列 |
3. 核心组件详解
3.1 Tokenizer:协同感知多模态语义 ID
方案:融合多模态特征以及协同过滤信号,用 RQ-Kmeans 生成由粗到细的层次化语义 ID。

3.1.1 多模态表示
多模态表示:每个视频输入 caption、tag、ASR、OCR、封面图、5 帧均匀采样帧,用 miniCPM-V-8B 处理,得到 $N_M = 1280$ 个 token 向量 $\mathbf{M} \in \mathbb{R}^{N_M \times d_t}$($d_t = 512$)。再用 QFormer 以 $N_{\tilde{M}} = 4$ 个可学习 query token 压缩:
其中压缩表示 $\tilde{\mathbf{M}} = \mathbf{Q}^{(N_c+1)} \in \mathbb{R}^{N_{\tilde{M}} \times d_t}$,$N_c = 4$ 为 QFormer 层数。
3.1.2 协同过滤先验
Item 对构造 $\mathcal{D}_{pair}$:
- User-to-Item 检索:对每个用户,取正点击目标 item,与用户最近历史正点击中最协同相似的 item 配对;
- Item-to-Item 检索:使用Swing之类的I2I且大于一定分数的Item组成Pairs
双训练目标:
- Item-to-Item 对比学习:
- Caption 生成损失(防止幻觉,保留内容理解能力,用 LLaMA3 作解码器):
其中 $\tau$ 为温度系数,$\mathrm{sim}(\cdot,\cdot)$ 为相似度函数,$\mathcal{B}$ 为 $\mathcal{D}_{pair}$ 的一个 batch,$t^k$ 为第 $k$ 个 caption token。
3.1.3 RQ-Kmeans 量化
初始残差($l=1$):
每层码本由残差的 K-means 质心得到:
其中 $C^{(l)} = \{\mathbf{c}_k^{(l)}\in \mathbb{R}^{N_{\tilde{M}}\times d_t}\mid k=1,\ldots,N_t\}$,$N_t$ 为码本大小。
最近质心索引:
残差更新:
迭代 $L_t = 3$ 层。最终视频 $m$ 表示为粗到细的语义标识 $\{s_m^1, s_m^2, \ldots, s_m^l\}$,支持渐进式 item 生成。
3.2 Encoder:多尺度特征工程 + 用户兴趣压缩
3.2.1 四条行为通路
| 通路 | 序列长度 | 内容 |
|---|---|---|
| 用户静态 | 1 | uid、age、gender 等 |
| 短期行为 | $L_s = 20$ | vid/sid、aid、tag、ts、playtime、dur、label |
| 正反馈行为 | $L_p = 256$ | 同上,高互动序列 |
| 终身行为 | 原始 10 万 → 压缩 $L_l = 2000$ | 层次 K-means + QFormer 压缩 |
用户静态通路($\mathbf{e}\in\mathbb{R}^{64}$):
其中 $\mathbf{h}_u\in \mathbb{R}^{1\times d_{\mathrm{model}}}$。
短期通路:
维度约定:video embedding 对齐 $d_{\mathrm{model}}$,author embedding 512 维,其余 128 维;$\mathbf{h}_s\in \mathbb{R}^{L_s\times d_{\mathrm{model}}}$。
正反馈通路(结构同上,序列长度 $L_p = 256$):
终身通路(最长 10 万条,两阶段层次压缩):
行为压缩:对每个用户交互序列做层次 K-means,每步簇数设为 $\lfloor \sqrt[3]{|D|} \rfloor$($|D|$ 为当前数据 item 数,经验设定),当簇内 item 数不超过阈值 $M$ 时终止,选离簇中心最近的 item 作代表。
特征聚合:稀疏类别特征(vid、aid、label)直接继承代表视频特征;连续特征(tag、ts、playtime、dur)取簇内均值。
长序列($L_l = 2000$)上每个视频被替换为对应簇代表特征:
QFormer 压缩($N_q = 128$ 个可学习 query,$N_l = 2$ 个 block):
得到压缩终身表示 $\mathbf{h}_l = \mathbf{h}_l^{(N_l)}\in \mathbb{R}^{N_q\times d_{\mathrm{model}}}$。
3.2.2 Encoder 架构
拼接四通路输出并加位置编码:
其中 $\mathbf{e}_{\mathrm{pos}}\in \mathbb{R}^{(1+L_s+L_p+N_q)\times d_{\mathrm{model}}}$ 为可学习位置编码。
经过 $L_{\mathrm{enc}}$ 层 Transformer(全可见自注意力 + FFN + RMSNorm):
最终输出 $\mathbf{z}_{\mathrm{enc}} = \mathbf{z}^{(L_{\mathrm{enc}}+1)}\in \mathbb{R}^{(1+L_s+L_p+N_q)\times d_{\mathrm{model}}}$。
3.3 Decoder:MoE + 逐点生成
点式生成范式:对每个目标视频 $m$,构造 [BOS, s¹, s², s³] 输入序列:
每个 Decoder 层($L_{\mathrm{dec}}$ 层):
MoE 层($N_{\mathrm{experts}}$ 个专家,top-$k$ 路由):
采用 DeepSeek 的无辅助损失负载均衡策略(loss-free balancing),避免干扰梯度。SwiGLU 专家隐维按 $\frac{2}{3}\times 4\times d_{\mathrm{model}}$ 计算并取 128 的倍数。
NTP 训练损失:
3.4 奖励系统与 ECPO 强化学习
预训练模型只拟合曝光 item 分布(来自传统系统),无法突破传统推荐天花板。因此引入基于奖励系统的偏好对齐,在生成 item 空间做 on-policy RL。
3.4.1 偏好对齐:P-Score
用神经网络学习个性化融合分 P-Score(基于 SIM 架构,多塔各学单目标,隐层 + user/item 表示进 MLP):
调整 $w^{\mathrm{xtr}}$ 使 P-Score 偏向各目标,最终实现全目标 AUC 提升。
3.4.2 ECPO(Early Clipped GRPO)
对用户 $u$,旧策略生成 $G$ 个 item,每个 item 与 user 输入偏好奖励模型得 $r_i$:
优势估计(组内归一化):
改进的旧策略(提前裁剪):
其中 $\mathrm{sg}$ 为 stop gradient,OneRec 设 $\delta = 0.1$。
关键改进动机:原 GRPO 对负优势允许大策略比,易梯度爆炸。ECPO 对负优势样本提前 clip 最大 ratio,保证训练稳定同时保留负优势效果;因 RL 与 SFT 联合训练,移除 KL 散度损失(SFT loss 保证稳定性)。
3.4.3 格式奖励(Generation Format Regularization)
挤压效应(Squeezing Effect):加入 RL 后,负优势样本使模型把概率质量压缩到当前最优输出 $o^*$,导致合法 token 概率被挤到与非法 token 相当,合法率跌破 50%。
解法:从 $G$ 个样本随机选 $K$ 个做合法性 RL:
优化目标同 ECPO 公式,直接用 $A_i$ 作优势。实验显示 Top-k 选择会让模型只在 top 子集学合法(整体合法率先升后降),随机选择更稳健,最终达 95% 合法率,且带来 App 停留 +0.13%、观看时长 +0.30%。
5. 评估结果
5.1 强化学习消融
采样效率(不同 Pass@K 下 RL 影响):
| 方法 | vtr | Watch time | App Stay Time | Video View |
|---|---|---|---|---|
| Pass@32 w/o RL | 0.1978 | +1.62% | -0.10% | -4.18% |
| Pass@32 w/ RL | 0.2138 | +3.17% | +0.39% | -9.87% |
| 相对提升 | +8.08% | +1.55% | +0.49% | -3.69% |
| Pass@128 相对提升 | +6.61% | +1.53% | +0.38% | -2.65% |
| Pass@512 相对提升 | +2.05% | -0.41% | +0.09% | +1.97% |
RL 在 Pass@32 提升最大,说明 top 排序精度显著增强,利于降低采样开销。
搜索空间(group size,Pass@128 下):
| Group Size | vtr | Watch time | App Stay Time | Video View |
|---|---|---|---|---|
| 0 (w/o RL) | 0.2198 | +4.61% | +1.11% | -12.75% |
| 128 | 0.2303 | +5.22% | +1.49% | -15.06% |
| 512 | 0.2350 | +5.73% | +1.82% | -15.49% |
| 2048 | 0.2352 | +5.84% | +1.78% | -15.49% |
128 → 512 显著提升,2048 无额外收益。建议 ECPO group size ≈ 推理输出量的 4 倍。
搜索策略:
| 策略 | vtr | Watch time | App Stay Time | Video View |
|---|---|---|---|---|
| Top-k + Top-p | 0.2131 | +4.45% | +1.16% | -13.61% |
| Beam Search | 0.2162 | +5.35% | +1.76% | -13.30% |
| 相对提升 | +1.45% | +0.87% | +0.60% | +0.36% |
语义 ID 的前缀树编码结构与 Beam Search 系统性探索高度契合。
参考模型:on-policy(当前策略模型)离线奖励更优(vtr 0.2389 vs 0.2262),但线上提升不显著(存在轻微 reward hacking),是未来重点方向。
P-Score 奖励效果:
| 场景 | Watch time | App Stay Time | Video View |
|---|---|---|---|
| 快手 | +0.21% | +0.26% | +0.17% |
| 快手极速版 | +0.71% | +0.22% | +0.35% |
5.5 线上 A/B 测试

看上去OneRec还是负向效果,加了RL才做正,是否意味着端到端架构并没有带来收益?
FAQ
1. 每天大量产生的新视频如何冷启?
- 论文中没有明确提出
- 咨询了参与者,也没有针对该问题解决
- 视频tokenize生成的sid具有一定的泛化性,相似的视频具有相同的前缀sid,对新品友好
2. 有无替代重排,那打分从哪儿获取
听说只是一路召回