← Back to list

Semantic IDs for Recommender Systems at Snapchat: Use Cases, Technical Challenges, and Design Choices

生成式推荐 Snapchat
Abstract 7 Reading 7 Rating —
2026-04-05
Clark Mingxuan Ju, Tong Zhao, Leonardo Neves, Liam Collins, Bhuvesh Kumar, Jiwen Ren, Lili Zhang, Wenfeng Zhuo, Vincent Zhang, Xiao Bai, Jinchao Li, Karthik Iyer, Zihao Fan, Yilun Xu, Yiwen Chen, Peicheng Yu, Manish Malik, Neil Shah
Snap Inc.
Snapchat 大规模部署 Semantic IDs 作为推荐系统的辅助特征和生成式检索目标,提出 STE 优化和多模态 embedding 融合解决 codebook collapse,并通过 intra-bucket 消歧和 depth-优先策略解决 SID-to-Item 解析问题
semantic-id quantization industrial ad-rec

1. 研究背景与动机

传统推荐系统依赖 per-user/per-item 的原子 ID(atomic IDs),每个用户或物品分配一个唯一离散 token 并映射到一个可学习的 dense embedding。这种方式面临三大挑战:

  1. 参数爆炸:用户和物品数量巨大,embedding table 规模庞大
  2. 冷启动问题:新用户/新物品没有 embedding table 入口,无法生成表示
  3. 长尾泛化困难:热门 ID 获得大量梯度更新,embedding 学习充分;尾部 entity 的 embedding 因稀疏监督而欠训练

Semantic IDs(SIDs)作为替代方案被提出:SID 是一个有序离散 token 序列,由 tokenizer(如 RQ-VAE)通过残差量化从 foundation model 或协同信号的语义表示中生成。SID 具有远小于原子 ID 的基数,并在 ID 空间中诱导语义聚类。

本文聚焦 Snapchat 大规模应用 SID 的工业实践,涵盖 SID 作为排序模型辅助特征、作为生成式检索目标两大场景,详述遇到的技术挑战和设计选择。

2. 预备知识:RQ-VAE Tokenizer

论文以 RQ-VAE 为核心 tokenizer 进行介绍。给定物品 $i$ 的语义特征 $x_i$,使用模态编码器 $\phi(\cdot): x \to \mathcal{R}^d$ 得到隐表示 $\mathbf{h}_i \in \mathcal{R}^d$。

RQ-VAE 表示为 $\text{RQ-VAE}(\cdot; \theta): \mathcal{R}^d \to \{0, 1, \ldots, K-1\}^L$,其中 $K$ 为每层 codebook 的 code 数,$L$ 为 codebook 层数,$\theta$ 为模型参数(编码器、解码器)。

编码过程:编码器 $\text{Enc}(\cdot): \mathcal{R}^d \to \mathcal{R}^n$ 将 $\mathbf{h}_i$ 转换为中间 embedding $\mathbf{h}_i^0$(即第 0 层残差之前的表示),$n$ 为 RQ-VAE 隐维度。

第一个 SID code:

$$\text{sid}_0 = \mathop{\arg\max}_{c \in \{0,1,\ldots,K-1\}} \|\mathbf{h}_i^0 \cdot \mathbf{C}_0[c]\|_F, \quad \text{with } \mathbf{h}_i^0 = \text{Enc}(\phi(x_i))$$

后续层通过残差量化获取:

$$\text{sid}_l = \mathop{\arg\max}_{c \in \{0,1,\ldots,K-1\}} \|\mathbf{h}_i^l \cdot \mathbf{C}_l[c]\|_F$$

其中残差 $\mathbf{h}_i^l = \mathbf{h}_i^{l-1} - \mathbf{C}_{l-1}[\text{sid}_{l-1}]$。

解码/重建

$$\hat{\mathbf{h}}_i = \text{Dec}\Big(\sum_{l \in \{0,\ldots,L-1\}} \mathbf{C}_l[\text{sid}_l]\Big)$$

RQ-VAE 使用重建损失 + commitment loss 联合训练。

3. 技术挑战与设计选择

3.1 Challenge 1: Codebook Collapse

问题:训练 RQ-VAE tokenizer 时,模型仅使用 codebook 中少数几个 code,大部分 centroid 成为"死"节点永远不被选中。原因:

  • 标准 RQ-VAE 中量化使用 arg max 操作,梯度仅回传到被选中的 centroid
  • 稀疏更新导致对初始化状态高度依赖,频繁导致大量 centroid 从未被选中
  • 单一 embedding 来源(如仅用文本)产生的输入方差较低,加剧 collapse

解决方案一:Straight-Through Estimator (STE) 优化

修改重建公式(Equation 3),通过 STE 使梯度回传到整个 codebook:

$$\hat{\mathbf{h}}_i = \text{Dec}\Big(\sum_{l \in \{0,\ldots,L-1\}} \mathbf{C}_l[\text{sid}_l] + \text{sim}(\mathbf{h}_i^l, C_l) \cdot C_l - \text{sg}[\text{sim}(\mathbf{h}_i^l, C_l) \cdot C_l]\Big)$$

其中 $\text{sim}(\mathbf{h}_i^l, C_l) \in \mathcal{R}^K$ 为残差与第 $l$ 层 codebook 所有 centroid 的余弦相似度,$\text{sg}(\cdot)$ 为 stop-gradient 操作。这样 loss 可以通过赋值机制反传到所有 code,促进整个 codebook 的持续更新,显著降低 collapse 风险。

解决方案二:多模态 Embedding 融合

工业 RecSys 中物品通常具有丰富异构特征(文本描述、视觉内容、类别元数据等)。仅依赖单一 embedding 源产生的方差较低,使 RQ-VAE 需要更少的 centroid 即可重建,加剧 collapse。

融合方式:汇聚多个预训练 embedding 为统一连续表示,再输入 tokenizer:

$$\mathbf{h}_i = \sum_{m \in M} \text{Enc}_m(x_m), \quad \hat{\mathbf{h}}_{i,m} = \text{Dec}_m\Big(\sum_{l \in \{0,\ldots,L-1\}} \mathbf{C}_l[\text{sid}_l]\Big)$$

多模态信号的高方差和拓扑复杂性迫使量化过程覆盖更宽的流形,最小化重建损失。

3.2 Challenge 2: SID-to-Item Resolution

在生成式检索(GR)场景中,SID 将语义相似的物品映射到相同离散 token 序列(collision),需要解决从 SID 到具体单个物品的"落地"问题。

方案一:Heuristic-based Intra-code Disambiguation

当一个 SID 对应多个物品时,不将所有物品视为等权,而是利用 item-level 元数据进行二次排序:

  • 在视频检索场景中,利用历史相关性指标(累计播放时长)或时间新鲜度来优先排序
  • 这种两阶段方法让生成模型负责语义类别识别,轻量启发式方法负责精确定位

方案二:Retrieval Depth over Breadth

GR 模型推理时通过 beam search 或采样输出一组候选 SID。实际发现:集中从少数 top-ranked SID 中取出更多物品(depth)显著优于从大量候选 SID 中各取少量物品(breadth)。这说明模型对其 top-ranked 预测具有高置信度和准确性。

4. 实验

4.1 SID 作为辅助特征

将 SID 作为辅助分类特征融入标准排序和检索架构。在 Snapchat 多个业务中测试:

Table 1: SID 作为辅助特征对不同 Ranker 离线 AUC 的提升

Metrics Improvements
Ads Ranking
Swipe up (goal-based bidding) +0.028%
Landing page view (goal-based bidding) +0.035%
Dynamic Product Ads Ranking
Add to cart +0.67%
Average improv. cross all heads +0.24%

结论:在 Ads Ranking 中,SID 辅助特征在 Swipe Up 和 Landing Page View 指标上分别带来 +0.028% 和 +0.035% 的 AUC 提升(0.01% 即被视为显著)。在动态商品广告(DPA)中提升更大,Add to Cart 提升 +0.67%,这归因于 DPA 面临广告主商品快速流转的冷启动问题,SID 的语义泛化能力在此场景优势更明显。

Table 2: GraphHash SID 在 Friending 场景的在线提升

Ranker Models metrics online improv.
Find Friends relevance +1.77%, +4.90%
Friending Registration neg. action -5.13%, -3.17%
Display Name Search feature use +1.55%, +12.43%

结论:GraphHash 将超过 9 亿原始用户 ID 压缩为 SID 表示,使模型能更好地外推协同过滤信号。在 Find Friends 中 relevance 显著提升(+1.77%、+4.90%),负面行为(如屏蔽/删除)显著下降,Display Name Search 的功能使用率大幅上升(+12.43%)。

4.2 SID 在生成式检索中的表现

将短视频推荐中的原子 ID 替换为 SID,训练序列推荐模型自回归生成 SID 序列。

Table 3: 短视频生成式检索的离线指标(Recall/NDCG)

Model Variant R@5 R@10 N@5 N@10
Seq. Length = 120 Baseline Baseline Baseline Baseline
Seq. Length = 240 +13.7% +8.3% +8.2% +6.5%
Seq. Length = 480 +31.5% +16.7% +26.5% +22.2%

结论:更长的用户行为序列(从 120 增至 480)带来巨大的检索精度提升,R@5 提升 +31.5%,N@5 提升 +26.5%。这表明 SID 的层次化共享结构使得序列模型能更好地利用长历史。

Table 4: 短视频在线 A/B 测试(序列长度 480)

Metrics Improvements (%)
Random Item Mapping (10 per SID) from Top 100 SIDs
Short-form video view Neutral
Random Item Mapping (100 per SID) from Top 10 SIDs
Short-form video view +0.13%
Relevance-guided Mapping (100 per SID) from Top 10 SIDs
Short-form video view +0.57%
Short-form video send +2.54%
Short-form video share +4.39%
Short-form video re-post +3.55%

结论:在线实验验证了 depth-over-breadth 和 relevance-guided disambiguation 的有效性。Random mapping 从 top 100 SID 各取 10 个物品效果中性;改为 top 10 SID 各取 100 个则 video view +0.13%。引入 relevance-guided mapping 后效果显著提升:video view +0.57%、send +2.54%、share +4.39%、re-post +3.55%,说明 intra-bucket 消歧策略对高意图用户行为(分享、转发)提升尤为明显。

4.3 SID 质量评估:Uniqueness 是否为金标准?

Table 5: Amazon Beauty 数据集上 SID Uniqueness 与 GR 性能

Codebook Shape Uniqueness Recall@10
1024 × 1024 × 1024 92.95% 6.1
512 × 512 × 512 91.79% 6.2
256 × 256 × 256 81.65% 6.1
128 × 128 × 128 70.58% 6.0
64 × 64 × 64 65.40% 5.8

结论:Uniqueness(唯一使用的 SID 占总物品数的比例)是业界广泛采用的 SID 质量指标。然而实验揭示了非线性关系:当 uniqueness 极低时(趋向 collapse),提升 uniqueness 确实有助于 GR 性能;但超过约 70% 的阈值后,性能增益趋于饱和。因此 uniqueness 不应被视为质量的金标准,而应作为 collapse 的健康度检查。

Table 6: 不同处理对内部数据 SID Uniqueness 的提升

Treatment Uniqueness Improvement
Clip embedding with RQ-VAE Baseline
+ RQ-VAE with STE +83.4%
+ Multi-modal embedding +23.7%
+ Audio embedding +11.2%
+ Transcript embedding +4.7%

结论:STE 优化贡献最大(+83.4%),多模态 embedding 融合进一步叠加提升。每增加一种模态(多模态 → 音频 → 转录文本),uniqueness 持续增长但边际递减,符合预期——更多模态增加输入方差,迫使 codebook 利用更多 centroid。

5. 核心贡献总结

  1. 工业规模验证:在 Snapchat 多个场景(广告、内容、社交、搜索)大规模部署 SID,离线和在线均取得显著提升
  2. 技术改进:提出 STE 优化和多模态 embedding 融合有效缓解 codebook collapse
  3. SID-to-Item Resolution:提出 heuristic intra-bucket disambiguation + depth-over-breadth 策略解决 GR 中的 collision 问题
  4. 质量评估反思:揭示 uniqueness 与下游性能的非线性关系,挑战了将 uniqueness 作为 SID 质量金标准的普遍假设
  5. 开源:发布优化后的模型架构和训练实现(github.com/snap-research/GRID)