← 论文沉淀 / 🗂 Semantic ID · ·RecSys 2026

Tokens are All You Need: Dual-purpose Semantic IDs for Achieving LLM-Level I/O Efficiency in Recommendation Systems

Baolei Li, Yiping Yuan, Yilin Zheng, Likang Yin, Ling Liu et al. (9 人)

YouTube × Google DeepMind

把 Semantic ID 从“只当物品标识符”扩展为“双用途 token”:同一串 RQ-VAE 码既做协同过滤的可学习 ID 特征,又当作稠密内容 embedding 的压缩载体。训练日志里只存 K 个整数 token,模型图内用导出的 RQ 码本查表求和、再过一个轻量解码器 f_theta 即时重建内容向量(SiDec),从而绕开长用户历史上 L×d 浮点向量的落盘/join/传输 I/O 瓶颈。

Semantic ID DecodingEmbedding CompressionI/O EfficiencyLong User HistoryYouTube Production
📝 我的备注
加载中…

核心思路

已有 Semantic ID(SID)工作基本只把 SID 当作“更好的 item ID”:替代原子 ID 做生成式召回,或者在排序里当作可学习的类别特征。本文的视角是:SID 本身是内容向量的一份有损压缩编码。RQ-VAE 训练 SID 时已经顺带得到码本和重建器,所以只要拿到 K 个整数 token,就可以在模型图里把内容 embedding 近似还原出来。

由此 SID 有两种用途(dual-purpose):

  1. 协同身份(Collaborative Identity):token 或 token 组合进入可学习 embedding 表,学习用户-物品交互,相似物品共享前缀,因此能泛化到冷启动物品。
  2. 内容重建(SiDec, Semantic ID Decoding):ê_i = f_θ(φ(S_i)),φ 为码本查表+求和,f_θ 为轻量解码器,用来即时还原内容向量。

收益在 I/O 上:长用户历史中每个 item 不再需要在训练日志里落一份 d 维 float,只存 K 个整数。作者把这类比为 VQ-VAE/VQGAN 让 Transformer 能以处理文本的效率处理图像,标题里的 “LLM-level I/O efficiency” 也是这个意思。

整体实现思路

  • 离线:用视频-语言/多模态模型产出 item 内容向量 e_i ∈ R^d,用 RQ-VAE 量化为 S_i = [t_i1, ..., t_iK],同时训练码本 C 和解码器 f_θ(重建 MSE)。
  • 日志:训练样本中的候选、正在观看的视频、观看历史只记录 SID token,不再 join 稠密内容向量。
  • 模型图内:每个历史 item 依次做 token 解析 → 码本 lookup+sum(φ)→ 解码器 f_θ → 得到 ê_j,再送入序列处理器(Transformer 编码器或 mean pooling)。候选同样经 SiDec 得到 q_cand 作为 attention query。
  • 并行的 ID 流:同一串 token 另外经过 unigram/bigram/前缀 n-gram/SPM embedding 表,学习协同信号。
  • 线上:基线模型本来就会取回并缓存 SID token,SiDec 在 serving 时只多一次查表和一个小网络,作者称训练和 serving 的额外开销可以忽略。

子模块实现(可复现细节)

1. SID 生成(RQ-VAE)

  • 输入:预训练内容向量 e_i ∈ R^d。
  • 输出:K 个 token,每个取自大小为 V 的码本,存储从 d × 32 bit 降到 K × log2(V) bit,论文称典型压缩比为 50–100×。
  • 论文没有给出 K、V 的具体值,也没有说明 v0/v1 两版码本的构造差异,只知道 v0 解码到 64 维、v1 解码到 256 维潜空间。

2. 协同身份流:四种 token 特征化

方式公式特点
UnigramAggregate({Emb_k(t_k)})内存最省,不建模层级依赖
重叠 BigramAggregate({Emb_{k,k+1}(t_k, t_{k+1})}),k=1..K-1词表可控,捕捉跨子簇的“语义邻域”,对量化噪声更鲁棒
嵌套前缀 n-gramAggregate({Emb_{1:k}(t_1..t_k)}),k=1..D,D≤K同前缀物品共享上层 embedding,适合冷启动;k>2 时可随机哈希限制词表
SPMEmb({SPM(t_1..t_k)})按数据分布自适应合并 token

Aggregate 为求和或拼接。冷启动场景偏向前缀 n-gram/SPM(embedding 表更大),I/O 和内存优先时偏向 unigram/bigram。线上排序模型的 ID 流使用前缀 n-gram 或 SPM(沿用 Singh et al. 2024 的做法)。

3. SiDec 内容流

  • φ:静态码本查表+求和,码本直接从 SID 生成模型导出。
  • f_θ:MLP 或浅层 Transformer,在 SID 生成阶段以 L_rec = Σ_i ||e_i − f_θ(φ(S_i))||² 训练。
  • 在推荐模型中有三种用法:冻结、以小学习率微调(与任务对齐),或取恒等映射直接使用码本潜向量。消融显示去掉 f_θ 时 CTR AUC 只降 0.01 个百分点。
  • 解码器的层数、宽度和重建误差,论文都没有报告。

4. 在排序/检索模型中的集成

  • 排序:用 SiDec 解码三类 SID 特征:候选视频、当前观看视频、观看历史。历史聚合方式为 u_history = Attention(q_cand, ê_j1, ..., ê_jL)。
  • 检索:类 SASRec 的自回归 Transformer,使用相对位置注意力。SiDec 只用在观看历史上,解码向量与其他用户/物品特征拼接后输入。
  • I/O 账:L=200、d=256 时,每条样本要摄入 51,200 个 float(FP32 约 200KB);改用 SID 后每个 item 只需 K 个整数。

5. 评测协议

离线实验采用固定 step 预算:各实验臂吞吐不同,按时间训练会让快的臂看到更多数据,固定 step 可以排除这一混杂。指标为收敛时的交叉熵 loss、HR@100(检索)、CTR AUC(排序)和训练速度 steps/s。

实验设置与结果

离线:检索模型上的质量-吞吐权衡(Table 2)

实验臂内容表示Loss@收敛 ↓HR@100 ↑steps/s ↑
Control无内容向量2.7660.281116.80
Arm 1原始 64 维稠密向量2.7230.284412.07
Arm 2SID v0 码本解码(64 维)2.7640.281615.41
Arm 3SID v1 码本解码(256 维)2.7580.287015.26
Arm 4SID v1 + Transformer 扩容2.6810.291014.53
  • 直接喂稠密向量使吞吐下降 28.2%(16.80 → 12.07)。
  • Arm 2 吞吐恢复到 15.41(比 Arm 1 高 27.7%);Arm 3 的 HR@100 超过 Arm 1,但 loss 仍明显高于 Arm 1(2.758 vs 2.723)。
  • Arm 4 加了参数仍比 Arm 1 快 20.4%,loss 和 HR 都是最优。但它对比的是未扩容的 Arm 1,论文没有 “Arm 1 + 同等扩容” 的对照。

消融:排序模型 CTR AUC 变化(绝对百分点,基线为完整双流)

消融(Table 3)ΔCTR AUC
只做 Candidate & Watch SID 的 SiDec-0.04%
只做 Watch History SID 的 SiDec-0.03%
去掉轻量解码器 f_θ-0.01%
消融(Table 4)ΔCTR AUC
去 SSL(watch 与 candidate 的对比损失)-0.05%
去 Cross Attention-0.08%
去多模态内容表示-0.06%

作者的解读是:主要收益来自观看历史(item 多,最能体现 I/O 优势);f_θ 只锦上添花;SiDec 要和对比学习、cross attention、多模态表示配合才能发挥全部效果。

线上:YouTube 全量部署(Table 1,Online Satisfied Engagement)

应用SID 特征线上提升
Watchpage 排序当前观看、候选、观看历史+0.09% sitewide,+0.80% watchpage
Homepage 排序候选、观看历史+0.08% sitewide,+0.22% homepage
召回模型观看历史+0.06% sitewide,+0.13% homepage,+0.09% watchpage

线上基线已经包含 SID token embedding(协同身份流),表中增益只来自新增的 SiDec。论文称对稀疏历史的新用户和长尾内容收益更大,但没有给出分群数字。

思考与可参考价值

值得借鉴的点

  • 把 SID 当作特征传输的压缩格式。电商场景中,用户行为序列(点击、加购、成交)往往长达数百到数千,每个商品挂一份多模态向量会让样本宽表急剧膨胀。如果商品已有 RQ-VAE SID,用码本重建代替向量 join,几乎不增加工程量,是现有 SID 资产的一次“二次利用”。
  • ID 流和内容流可以并存。前缀 n-gram/SPM 负责记忆,SiDec 负责内容泛化。论文证明在已有 SID ID 特征的基线上,只加 SiDec 仍有线上增益,说明两者互补。
  • 优先用在长历史侧。消融显示主收益来自 watch history,落地时可以先从用户序列侧做起。
  • 固定 step 预算的评测方法,对任何会改变吞吐的特征改动都适用。

采用前需要核实

  • 重建保真度:论文没有给重建 MSE 或检索保持率,自己需要测量 ê 与原向量的余弦相似度、近邻 recall。Arm 3 loss 高于 Arm 1,说明确实存在信息损失。
  • 码本版本一致性:SID 和码本一旦重训,历史日志中的旧 token 和新码本就对不上(作者把这一点列为 future work),需要规划版本管理。
  • 细粒度信号:价格、规格这类细节在 3–4 层 RQ 之后是否还能保留(推断:电商商品同质化高,粗粒度码本可能把相似 SKU 压成同一个向量)。
  • I/O 是否真的是瓶颈:如果内容向量已经在参数服务器侧缓存、按 ID 查询,收益主要体现在日志存储,而不是吞吐(推断)。
  • 增益量级:YouTube 线上 sitewide 只有 +0.06%~+0.09%,离线 AUC 变化都在 0.1 个百分点以内。这更适合作为一次“降本 + 小幅提效”的改动,不宜期待大幅提升效果。

总体判断:概念上的转变(SID = 可解码的压缩特征)很有价值,工程上也近乎零成本;但论文是 4 页短文,超参、重建误差和公平对照都缺失,复现时需要自己补齐这些实验。