GLASS: 生成式推荐系统中的长序列建模——基于SID-Tier与语义搜索
论文: GLASS: A Generative Recommender for Long-sequence Modeling via SID-Tier and Semantic Search
链接: https://arxiv.org/abs/2602.05663
代码: https://anonymous.4open.science/r/GLASS
机构: 快手(Kuaishou)、清华大学深圳国际研究生院、北京邮电大学
时间: 2026年2月
1. 问题背景
生成式推荐(Generative Recommendation, GR)正在成为推荐系统的新范式。以 TIGER、OneRec 等为代表的系统将 item 编码为分层语义 ID(Semantic ID),然后用自回归模型逐层生成目标 item 的 SID 序列。这种范式统一了召回与排序,展现出强大的潜力。
然而,生成式推荐在长序列建模上面临一个根本性瓶颈:自注意力机制的计算复杂度随序列长度呈二次增长,迫使现有 GR 模型只能处理较短的交互序列。这意味着用户长期积累的丰富行为信号被大量浪费。
在传统判别式推荐中,SIM(Search-based Interest Model)等方法通过”先检索后建模”的两阶段范式成功地将长序列引入 Ranking 模型。但这些方法面向的是有明确 target item 的 Ranking 场景——target item 本身就是检索的 query。而在召回/生成阶段,推理时不知道 target item 是什么(target-absent dilemma),无法直接做 target attention,只能依赖最近行为作为 proxy,导致 proxy divergence。
GLASS 的核心洞察是:生成式推荐中语义 ID 的分层结构天然提供了一个从粗到细的”隐式 target”。当第一层 SID 被生成后,它就是一个粗粒度的语义锚点,可以作为 key 去用户长期历史中检索相关行为,从而打破 target-absent 的困境。
2. 方法概述
GLASS 采用 Encoder-Decoder 架构,包含三个核心组件:
- SID-Tier:为第一层 SID 的生成注入长期兴趣(解决”冷启动”问题——生成第一个 token 时没有任何已生成的前缀可用)
- Semantic Hard Search + Adaptive Gated Fusion:利用已生成的第一层 SID 作为 key,从长期历史中检索相关行为,通过门控机制融合到后续 token 的生成中
- Sparsity-Aware Augmentation:解决语义硬搜索中的数据稀疏问题
2.1 SID-Tier:长期兴趣的全局注入
SID-Tier 的设计动机是:第一层 SID 的生成最为关键,但此时没有任何前缀信息,需要主动注入长期兴趣。
核心思路是利用语义码本空间的紧凑性。传统召回模型在海量 item ID 空间上做交叉特征计算代价过高,但 SID 的第一层码本大小通常只有 64~128,这使得计算用户长期历史与每个码字之间的交叉特征变得可行。
具体过程:
Step 1:为每个第一层码字 $a \in \mathcal{C}_0$ 构建原型嵌入(prototype embedding),即该码字对应的所有 item 嵌入的均值池化:
\[\tilde{\mathbf{h}}_a = \text{Pooling}(\{\mathbf{h}_v \mid \forall v \in \mathcal{V}, c_0(v) = a\})\]Step 2:计算每个码字原型与用户长期历史中所有 item 的余弦相似度集合:
\[\mathbf{S}_a = \{\text{Cos}(\tilde{\mathbf{h}}_a, \mathbf{h}_v) \mid v \in H^{id}_{long}, a \in \mathcal{C}_0\}\]Step 3:将相似度区间 $[-1, 1]$ 划分为 $N$ 个离散层级(tier),对每个码字统计落入各层级的历史 item 数量,构建统一兴趣向量(unified interest vector):
\[\mathbf{t}_a[i] = \sum_{s \in \mathbf{S}_a} \mathbb{I}(s \in \text{Tier}_i)\]Step 4:拼接所有码字的兴趣向量并投影到 token 嵌入空间:
\[\mathbf{x} = \text{Concat}(\mathbf{t}_0, \mathbf{t}_1, \dots, \mathbf{t}_{K_0 - 1}) \in \mathbb{R}^{K_0 \times N}\] \[\mathbf{e}_{tier} = \text{MLP}(\mathbf{x}) \in \mathbb{R}^d\]最终 $\mathbf{e}_{tier}$ 被拼接到短序列末尾,一起送入 Encoder,为第一层 SID 的预测提供全局长期偏好信息。
2.2 Semantic Hard Search:基于生成前缀的动态检索
当第一层 SID $\hat{c}0(v{n+1})$ 被生成后,GLASS 将其作为语义 key,从用户长期历史中检索所有共享相同第一层码字的 item:
\[H_{ret} = \{c(v_i) \mid v_i \in H^{id}_{long}, c_0(v_i) = \hat{c}_0(v_{n+1})\}\]这本质上是一种 Retrieval-Augmented Generation(RAG) 机制——但不同于通常的 dense vector 检索,这里基于 SID 前缀的精确匹配进行检索,严格限制上下文与当前生成意图的语义一致性。
检索到的序列通过 Adaptive Gated Fusion 与短期序列融合。Decoder 中设计了两路并行的 Cross-Attention:
\[\mathbf{Z}_{short} = \text{CrossAttn}_\theta(\mathbf{X}, \mathbf{O}^{enc}_{short}, \mathbf{O}^{enc}_{short})\] \[\mathbf{Z}_{ret} = \text{CrossAttn}_\phi(\mathbf{X}, \mathbf{E}_{ret}, \mathbf{E}_{ret})\]然后通过可学习门控动态融合:
\[\mathbf{g} = \sigma([\mathbf{Z}_{short}; \mathbf{Z}_{ret}] \mathbf{W}_g), \quad \mathbf{Z}_{context} = (1 - \mathbf{g}) \cdot \mathbf{Z}_{short} + \mathbf{g} \cdot \mathbf{Z}_{ret}\]门控值 $\mathbf{g}$ 自适应地控制长短期信号的贡献:当检索序列信息量充足时增大 $\mathbf{g}$,当检索结果稀疏/有噪声时抑制。
2.3 Sparsity-Aware Augmentation
| 语义硬搜索面临一个实际问题:检索结果可能非常稀疏。假设用户历史长度 $L=1000$,第一层码本大小 $ | \mathcal{C}_0 | =128$,则平均每个 SID 桶只有约 $1000/128 \approx 7.8$ 个 item,信息增益不足。 |
GLASS 提出两个互补策略:
语义邻居增强(Semantic Neighbor Augmentation):预计算码本中每个码字的 top-$k$ 语义邻居。如果检索结果长度低于阈值 $\tau$,则扩展到邻居码字对应的历史 item。
码本缩放(Codebook Resizing):减小第一层码本大小,使更多 item 聚合到同一个 SID 桶内,自然增加检索密度。第一层负责密度,后续层负责精度,实现职责解耦。
3. 实验
3.1 主实验
在 TAOBAO-MM 和 KuaiRec 两个大规模真实数据集上的实验结果:
| 数据集 | 模型类型 | 模型 | H@1 | H@5 | H@10 | N@3 | N@10 |
|---|---|---|---|---|---|---|---|
| TAOBAO-MM | ID-based | HSTU | 0.0274 | 0.0512 | 0.0784 | 0.0384 | 0.0495 |
| SID-based | Tiger | 0.0280 | 0.0756 | 0.1076 | 0.0448 | 0.0627 | |
| SID-based | DualGR | 0.0306 | 0.0781 | 0.1126 | 0.0438 | 0.0653 | |
| SID-based | GLASS | 0.0372 | 0.0934 | 0.1284 | 0.0582 | 0.0782 | |
| 提升 | +21.57% | +19.59% | +14.03% | +29.91% | +19.75% | ||
| KuaiRec | SID-based | Tiger | 0.0406 | 0.0859 | 0.1202 | 0.0574 | 0.0751 |
| SID-based | DualGR | 0.0445 | 0.0932 | 0.1292 | 0.0632 | 0.0821 | |
| SID-based | GLASS | 0.0467 | 0.0971 | 0.1345 | 0.0659 | 0.0855 | |
| 提升 | +4.94% | +4.18% | +4.10% | +4.27% | +4.14% |
GLASS 在所有指标上均显著优于所有 baseline,在 TAOBAO-MM 上 H@1 提升 21.57%、N@3 提升 29.91%。
3.2 消融实验
- SID-Tier 使 $acc_1$(第一层训练准确率)从 0.2410 提升到 0.2485,$P_1$(推理精度)从 0.1470 提升到 0.1587
- Semantic Hard Search 进一步提升 $acc_2$ 和 $P_2$,对中后层生成质量改善显著
- Codebook Resizing 带来的 Recall@10 提升最为明显,接近 0.13
- Semantic Neighbor Augmentation 在细粒度码本空间下效果更好,在粗粒度下可能引入噪声
3.3 Rank Degradation 分析
论文提出了 Conditional Rank Progression(CRP) 指标来分析生成过程中的排名退化现象。在 beam size=20 的设置下:
- Baseline GR 模型在第二层 CRP 退化 1.25
- 加入 Semantic Hard Search 后退化降至 0.98(缓解 22%)
- 第三层退化从 0.19 降至 0.13(缓解 31%)
从理论上分析,语义硬搜索通过注入辅助上下文 $\text{context}’$,修改了后续 token 的条件概率:
\[P(sid_2 | sid_1, \text{context}, \text{context}') > P(sid_2 | sid_1, \text{context})\]相当于为 Beam Search 的累积概率链提供了额外的判别信号,缓解了正确路径与干扰路径之间区分度不足的问题。
4. 总结与思考
GLASS 解决了生成式推荐中一个关键且此前被忽视的问题:长序列信号在 GR 框架下的有效利用。几点值得深入思考:
SID 的分层结构不仅是编码工具,更是推理的支撑结构。GLASS 巧妙地利用了 SID 的从粗到细层次——第一层 SID 生成后天然成为”隐式 target”,完美解决了召回阶段的 target-absent 问题。这个洞察可以推广到更多场景:任何分层结构的生成过程中,已生成的粗粒度前缀都可以作为后续精细化的语义锚点。
码本空间的紧凑性带来了意外的计算优势。传统方法在海量 item 空间上做交叉特征不可行,但 SID 的码本只有 64~128 个码字,使得”用户历史 × 码本”的全局交叉特征在计算上完全可行。SID-Tier 本质上是用码本空间的紧凑性换取了长序列建模的可行性。
Rank Degradation 现象及 CRP 指标的提出有独立价值。论文揭示了 GR 模型在自回归生成过程中置信度可能不升反降的现象——这与 LLM 中的”hallucination”有异曲同工之处。CRP 指标提供了一个量化分析工具,可以帮助诊断其他 GR 系统的生成质量问题。
局限性。GLASS 在 TAOBAO-MM 上提升显著(21.57%),但在 KuaiRec 上提升相对有限(4.94%),论文将此归因于多模态数据质量差异。此外,论文的实验都在离线数据集上进行,没有工业级在线 A/B 测试结果,与 OneRec 等已全量部署的系统相比,GLASS 的工业落地成熟度还有待验证。整体来看,GLASS 为生成式推荐补齐了长序列建模这块关键拼图,与 OneRec 的终身行为压缩方案(QFormer)形成了有趣的技术对比——前者保留了 item 粒度的细节信息,后者则追求极致的序列压缩效率。两种路线各有优劣,预计未来会走向融合。