谷歌TIGER手撕1-从语义ID到生成式推荐的范式演进
前言: 作为实习期间的重点项目,我开始复现谷歌的 TIGER (Tiger Index-based Generative Retrieval)。这不仅仅是一个模型,更是对传统“召回-排序”架构的一次大胆颠覆。本文记录第一天的理论扫盲:语义ID的本质、RQ-VAE的魅力,以及 Transformer 是如何“读懂”用户意图的。
一、 背景详解:What is TIGER
本项目结合小红书技术专栏《一文带你理解生成式推荐的鼻祖 谷歌TIGER》以及 开源复现代码 展开。
1.1 TIGER 的核心创新
传统的推荐系统将每个商品视为一个原子ID(Atomic ID),这类似于给每个物品贴上一个随机的数字标签。TIGER 则转向了语义ID(Semantic ID),让 ID 本身携带信息。
为什么弃用 Atomic ID?
- 候选空间极大 (Scale Issue): 传统的推荐系统如果面临 1 亿个商品,Softmax 层就需要 1 亿维。这在显存和计算梯度上几乎是不可逾越的物理极限。
- 数据动态变化 (Cold Start): 随机分配的 ID 之间没有关联。新物品进入系统时,模型完全处于“盲区”,必须重新训练或依赖侧边信息。
语义 ID 的“妙处”
- 离散表达 (Discrete Representation): 让 T5 像生成单词一样,逐个 Code 地“写出”商品 ID,完美契合自回归生成逻辑。
- 组合式表达 (Compositional Power): \[总容量 = C^k\] 假设 ID 长度 \(k=3\),每个位置可选 \(C=1000\) 个 Code,仅需 3000 个基础词汇(词表压力极小)即可覆盖 10 亿量级的物品。
二、 语义 ID 的铸造工厂:RQ-VAE
2.1 什么是 RQ-VAE?
RQ-VAE (Residual Quantized Variational AutoEncoder) 是一种分层的量化技术。它不追求一次性映射,而是采用“残差接力”的方式不断逼近原始向量。
形象比喻:测量身高 1. 第一层 (Codebook 1): 粗测。刻度为“米”,测出 1.8 米,最接近 2 米。 2. 计算残差: 误差为 \(1.8 - 2 = -0.2\) 米。 3. 第二层 (Codebook 2): 精测残差。刻度为“分米”,修正误差。 4. 以此类推: 每一层都在修补上一层的“精度漏洞”。
2.2 语义 ID 生成流程:由连转散
- 特征提取: 利用 Sentence-T5 将物品文本转化为高维连续向量(Embedding)。
- 残差量化: 连续向量进入 RQ-VAE,通过多级 Codebook 进行“点名”,最终得到类似 \((7, 1, 4)\) 的离散元组。
三、 Transformer 的核心:上下文捕获原理
这是 TIGER 能够实现“端到端推荐”的灵魂所在。模型不仅仅在预测下一个数字,而是在理解用户行为背后的“语境”。
3.1 充分捕捉上下文的含义
在 TIGER 中,上下文捕获意味着模型通过 双向 Transformer 编码器 实现了对用户历史序列的深度建模:
- 从“点击序列”到“语义序列”: 输入不再是随机 ID,而是经过 RQ-VAE 拆解后的语义码元 \((C_{i,0}, C_{i,1}, \dots)\)。模型看到的不是物品的“编号”,而是物品的“属性组合”。
- 双向关联 (Bidirectional Attention): 编码器允许序列中的每一个 Token 同时感知前后项的关系,识别出跨越长距离的意图(例如:从一个月前的“帐篷”联想到今天的“防潮垫”)。
3.2 捕获的“上下文”究竟是什么?
- 高维隐空间向量 (Encoded Context): 编码器的输出是一个密集的向量矩阵。它不仅包含“用户看过什么”,还包含“用户看这些东西时的逻辑”。
- 意图的语义表述: * 宏观意图:
如果上下文向量引导 Decoder 生成的第一位码元是代表“运动”的
5,则语义表述为:“用户表现出了对户外活动的偏好”。- 动态权重: 通过 Attention Map,我们可以发现是哪一段特定的历史(如 5 分钟前的搜索)主导了当前的推荐逻辑。
谷歌TIGER手撕1-从语义ID到生成式推荐的范式演进
https://fucov.github.io/2026/03/12/谷歌TIGER手撕1/