1. 研究背景与动机¶
生成式检索(Generative Retrieval, GR)通过将用户行为编码为标识符序列,利用大模型自回归生成候选商品标识符,已成为推荐系统中的新兴范式。其中,语义标识符(Semantic Identifiers, SIDs) 是GR的核心基础,它将商品的多模态特征编码为多级 codeword 序列(如 <C1_1248><C2_6475><C3_6968>),使语义相似的商品共享前缀码,从而实现知识共享和高效检索。
然而,当前SID研究面临三大挑战: 1. 数据集规模有限:现有公开数据集规模不超过1000万交互,缺乏多模态特征,无法反映工业场景 2. SID生成优化不足:设计选择缺乏系统研究,且评估依赖昂贵的GR完整训练 3. 工业部署低效:新SID上线后需要数天才能收敛,阻碍快速迭代
2. FORGE数据集¶
2.1 数据规模与特点¶
FORGE是首个面向生成式检索的工业级基准数据集,来源于淘宝(中国最大电商平台之一)。
| Dataset | 时序连续 | #Users | #Items | #Interactions | 模态 | Codebook | 任务 |
|---|---|---|---|---|---|---|---|
| MovieLens | N | 138K | 27K | 20M | ID, text | N | Recsys |
| Yelp | N | 2.1M | 160K | 8M | ID, text | N | Recsys |
| Taobao | N | 987K | 4M | 100M | ID | N | Recsys |
| TenRec | N | 5.0M | 3.7M | 142M | ID | N | Recsys |
| KuaiRec | N | 7K | 10K | 12M | ID, tags | N | Recsys |
| RecFlow | N | 42K | 82M | 38M | ID | N | Recsys |
| FORGE | Y | 131M | 251M | 14B | ID, text, image | Y | Recsys, Search |
FORGE的核心优势:
- 交互量是最大现有数据集TenRec的约100倍
- 用户数多26倍,商品数多3倍
- 包含ID、文本、图像三种模态
- 提供时序连续的数据划分(3个阶段,共10天)
- 同时支持推荐和搜索任务
2.2 数据结构¶
Seq Data:每天采样4000万用户行为数据,按时间划分为三个连续阶段(S1: 4天, S2: 3天, S3: 3天),每阶段后一天采样10万用户序列作为测试集。每条序列包含:
action_seq:历史交互序列(最长100)target_item:当前页面交互商品query:推荐任务为None,搜索任务为用户查询词
Item Info:每个商品包含:
- 单token商品ID
- 多模态嵌入 $\mathcal{H}^i \in R^{512}$
- 构建好的SID(base和Ours两个版本)
- 协同关系最强的商品 $i^+$
- NER提取的关键词(替代原始标题以保护隐私)
3. 整体框架¶
3.1 SID生成¶
多模态特征提取与融合:利用预训练多模态大模型(CN-CLIP)分别提取商品的文本特征 $\mathcal{H}^i_{\text{text}}$ 和图像特征 $\mathcal{H}^i_{\text{image}}$,再通过融合模块得到统一表示:
$$\mathcal{H}^i = \mathcal{M}_{\text{Fusion}}(\mathcal{H}^i_{\text{text}}, \mathcal{H}^i_{\text{image}}) = \text{Multimodal Fusion}(\mathcal{M}_{\text{text}}(\mathcal{T}^i_{\text{text}}), \mathcal{M}_{\text{image}}(\mathcal{T}^i_{\text{image}}))$$
对比学习增强:引入InfoNCE损失,利用协同关系(i2i)增强表示的判别性:
$$L_{\text{InfoNCE}} = f(\mathcal{H}^i_{\text{text}}, \mathcal{H}^{i^+}_{\text{text}}, \mathcal{H}^{i^-}_{\text{text}}) + f(\mathcal{H}^i_{\text{image}}, \mathcal{H}^{i^+}_{\text{image}}, \mathcal{H}^{i^-}_{\text{image}}) + f(\mathcal{H}^i, \mathcal{H}^{i^+}, \mathcal{H}^{i^-})$$
其中正样本 $i^+$ 来自i2i协同关系,负样本 $i^-$ 采用batch内采样。
RQ-VAE量化:使用残差量化变分自编码器(RQ-VAE)将连续特征 $\mathcal{H}^i$ 转化为离散codeword序列 $\{c_1, ..., c_m\}$。具体地,编码器 $\mathcal{E}$ 将 $\mathcal{H}^i$ 映射为 $z_1 \in R^d$,在第 $j$ 层codebook $B_j = \{r^0_j, r^1_j, ..., r^{n_j-1}_j\} \in R^{n_j \times d}$ 中找到最近邻:
$$c_1 = \arg\min_c \|z_1 - r^c_1\|$$
然后计算残差 $z_2 = z_1 - r^{c_1}_1$,在 $B_2$ 中继续量化,逐层重复直到所有 $m$ 个codeword确定。
重建损失防止量化退化:
$$\mathcal{L}_{\text{recon}} = \|\mathcal{D}(r^{c_1}_1 + ... + r^{c_m}_m) - \mathcal{H}^i\|_2$$
RQ-VAE模型配置:
- 编码器/解码器:对称3层MLP(512-256-256-64 / 64-256-256-512,ReLU)
- Codebook维度:64
- 融合结构:CN-CLIP (chinese-clip-vit-base-patch16)
- 训练150 epochs,AdamW优化器,cosine学习率调度,batch size 2048
3.2 ID碰撞缓解¶
SID生成过程中,多个语义相似商品可能被分配相同SID(ID collision),降低codebook利用率。FORGE提出两种后处理策略:
KNN-based策略(Algorithm 1):为每个商品生成多个候选SID(通过量化时保留多个次近邻),按评分顺序评估,选择映射商品数少于阈值 $\sigma$ 的SID。
Random-based策略(Algorithm 2):保持前 $m-1$ 层codeword不变,在最后一层按循环递增方式分配:$C_m 0 \rightarrow C_m 1 \rightarrow ... \rightarrow C_m n_m - 1 \rightarrow C_m 0$。不追求语义一致性,而是最大化分散性。
3.3 生成式检索¶
将用户行为SID序列与系统/用户指令拼接为输入 $x$,使用大模型(Qwen或T5)训练。Codeword token扩展到tokenizer $\tau$ 中,通过交叉熵损失联合训练:
$$\mathcal{L}_{\text{rec}} = \sum_{i=1}^{m} \log P_{\theta,\tau}(c_i | x, c_{j\lt i})$$
推理时使用 dynamic beam search,自适应增加beam宽度(如 $300 \rightarrow 600 \rightarrow 1200$),平衡计算效率与生成质量。
3.4 评估指标¶
HitRate (HR@K):标准推荐检索指标。
$$HR@K = \frac{1}{N} \sum_{m=1}^{N} \frac{I_K \ \& \ I_{\text{click}}}{I_{\text{click}}}$$
Embedding HitRate:直接利用多模态嵌入 $\mathcal{H}^i$ 进行item-to-item检索评估,无需训练GR模型。
Gini Coefficient:衡量SID分配的公平性。给定所有SID及其映射商品数,按商品数升序排列后:
$$G = \frac{2}{N_d} \sum_{i=1}^{N_d} (\frac{i}{N_d} - L(i))$$
$$L(i) = \frac{C(i)}{C(N_d)}, \quad C(i) = \sum_{0}^{i} I_c(S^i_{id})$$
Gini系数越低表示SID分配越均匀,与GR性能正相关。
PVR:线上指标,衡量检索模型成功检索到展示商品的比例。
$$\text{PVR} = \frac{\sum_{mt(i)=FORGE} PV_i}{\sum_l PV_i}$$
Feature Fidelity:量化过程中语义信息的保留程度:
$$\text{Feature Fidelity} = \max\left(0, 1 - \frac{\|\mathcal{H}^i - \mathcal{D}(r^{c_1}_1 + ... + r^{c_m}_m)\|_2}{\|\mathcal{H}^i\|_2}\right) \times 100\%$$
4. 实验结果¶
默认配置:3级SID,每级8192 codebook,RQ-VAE量化,Qwen2.5-0.5B生成模型。
4.1 SID优化消融实验(RQ1)¶
Table 2 展示了各优化策略在三个阶段的效果(3x8192 codebook):
| Stage | Method | HR@20 | HR@100 | HR@500 | HR@1000 |
|---|---|---|---|---|---|
| S1 | base | 3.61% | 9.67% | 20.82% | 25.09% |
| S1 | +KNN-10 | 3.91% (+8.31%) | 10.32% (+6.72%) | 21.85% (+4.95%) | 25.38% (+1.16%) |
| S1 | +KNN-5 | 4.18% (+15.79%) | 10.81% (+11.79%) | 22.14% (+6.34%) | 25.30% (+0.84%) |
| S1 | +Random-5 | 4.67% (+29.36%) | 11.79% (+21.92%) | 23.65% (+13.59%) | 26.30% (+4.82%) |
| S1 | +i2i | 3.79% (+4.99%) | 10.04% (+3.83%) | 21.71% (+4.27%) | 26.97% (+7.49%) |
| S1 | +sideinfo | 3.81% (+5.54%) | 10.00% (+3.41%) | 21.69% (+4.18%) | 26.88% (+7.13%) |
| S1 | Ours | 4.89% (+35.46%) | 12.31% (+27.30%) | 24.79% (+19.07%) | 29.01% (+15.62%) |
| S2 | base | 4.15% | 10.70% | 22.71% | 26.70% |
| S2 | Ours | 5.33% (+28.43%) | 13.23% (+23.64%) | 26.37% (+16.12%) | 30.28% (+13.41%) |
| S3 | base | 4.33% | 11.16% | 23.26% | 27.24% |
| S3 | Ours | 5.44% (+25.64%) | 13.79% (+23.57%) | 26.71% (+14.83%) | 30.86% (+13.29%) |
关键发现:
- 碰撞缓解对性能提升最显著:Random-5在HR@20上提升约25-29%,说明SID分布的公平性和利用率比最后一层的语义保持更重要
- 多模态信息增强SID质量:+i2i和+sideinfo在大K值(HR@1000)上提升明显(+5-7%),小K值提升有限
- 组合优化效果最佳:Ours(i2i + sideinfo + Random-5)在所有阶段和指标上均为最优,HR@1000提升13-15%
4.2 SID质量直接评估指标(RQ2)¶
Embedding hitrate与Gini coefficient均与最终HR@K呈强正相关:
- 更丰富的协同信息(如i2i)提升embedding hitrate
- 更细粒度的碰撞控制(noco -> base -> KNN-10 -> KNN-5 -> Random-5)降低Gini系数
- 两个指标与最终HR排序一致,证明无需训练GR模型即可评估SID质量
4.3 泛化性分析(RQ3)¶
不同Codebook层级:2层x32768 codebook(Table 3)
| Stage | Version | HR@20 | HR@100 | HR@500 | HR@1000 |
|---|---|---|---|---|---|
| S1 | base | 3.37% | 9.09% | 20.33% | 26.94% |
| S1 | Ours | 4.57% | 11.94% | 24.67% | 31.34% |
| S2 | base | 3.85% | 10.03% | 21.93% | 28.96% |
| S2 | Ours | 5.08% | 12.61% | 26.17% | 33.53% |
| S3 | base | 3.91% | 10.49% | 22.65% | 30.00% |
| S3 | Ours | 5.11% | 13.04% | 26.88% | 34.15% |
Ours在2层结构下HR@10提升超30%,HR@1000提升约14%。
不同架构和模型规模(Table 4,Stage S1):
| Codebook | t5-base (0.2B) HR@20/100/500/1000 | Qwen2.5-3B HR@20/100/500/1000 |
|---|---|---|
| 3x8192 (base) | 1.29% / 3.62% / 8.91% / 11.98% | 4.49% / 11.71% / 24.40% / 28.94% |
| 3x8192 (Ours) | 2.36% / 5.99% / 12.98% / 16.08% | 5.60% / 14.18% / 27.58% / 32.12% |
| 2x32768 (base) | 1.84% / 5.14% / 11.98% / 16.45% | 3.72% / 10.19% / 22.64% / 29.75% |
| 2x32768 (Ours) | 2.46% / 6.55% / 14.30% / 18.88% | 4.96% / 12.80% / 27.13% / 34.29% |
- T5-base(encoder-decoder, 0.2B)上同样有效,验证架构无关性
- Qwen2.5-3B相比0.5B提升约10%,模型规模扩大带来稳定收益
搜索任务泛化(Table 5):推荐任务训练的SID直接用于搜索任务,Ours仍显著优于base:
| Stage | Codebook | HR@20 | HR@100 | HR@500 | HR@1000 |
|---|---|---|---|---|---|
| S1 | 3x8192 (base) | 14.30% | 27.91% | 43.95% | 50.74% |
| S1 | 3x8192 (Ours) | 23.39% | 37.05% | 51.77% | 56.89% |
| S3 | 3x8192 (base) | 15.08% | 29.83% | 47.83% | 55.10% |
| S3 | 3x8192 (Ours) | 24.71% | 40.06% | 56.04% | 61.46% |
搜索场景下Ours在HR@20上提升约60%,说明SID优化具有跨任务泛化能力。
SID层级结构(Table 16):
| 结构 | S1 HR@1000 | 相对base变化 |
|---|---|---|
| base (3x8192) | 27.24% | baseline |
| 2048_4096_8192 | 29.07% | +6.72% |
| 8192_4096_2048 | 28.99% | +6.42% |
| 2x32768 | 30.00% | +10.13% |
| 3x512 | 25.96% | -4.70% |
| 1024_4096_32768 | 30.35% | +11.42% |
| 4x4096 | 26.45% | -2.90% |
3层SID是计算效率和检索效果的最优平衡;1024_4096_32768配置在HR@1000上提升超11%。
4.4 在线部署与收敛加速(RQ4)¶
线上A/B测试(淘宝"猜你喜欢"模块,7天):
| PVR | Hitrate | Transaction Count |
|---|---|---|
| +8.93% | +10.02% | +0.35% |
冷启动收敛策略(Figure 4):
| 策略 | 描述 | 效果 |
|---|---|---|
| From Base | 从Qwen2.5初始化 | 10天后追平生产模型,需更长时间超越 |
| From Online | 从同SID规模的生产模型出发 | 不一致地帮助新SID |
| From Dense | 保留生产模型权重,独立初始化SID token | 效果不如From Base |
| From UserAction | 离线预训练(7天历史行为拼接),再流式训练 | 4天超越生产模型,10天后HR@10提升10% |
From UserAction通过离线预训练使LLM快速学习新SID的结构和协同信息,将在线收敛时间缩短一半。
4.5 量化方法对比(Table 17)¶
| Method | S1 HR@20/1000 | S3 HR@20/1000 |
|---|---|---|
| Random | 1.08% / 4.82% | 1.51% / 6.41% |
| Multiple-VQ | 2.87% / 23.84% | 3.47% / 26.47% |
| RQ-Kmeans | 3.42% / 26.11% | 3.96% / 28.71% |
| RQ-VAE (base) | 4.33% / 27.24% | 4.33% / 27.24% |
| RQ-VAE (Ours) | 5.44% / 30.86% | 5.44% / 30.86% |
RQ-VAE优于RQ-Kmeans,关键在于加入碰撞后处理后优势更明显。RQ-Kmeans的codebook利用率更高但整体HR不及RQ-VAE+后处理。
4.6 ID碰撞策略详细对比(Table 14)¶
| Method | S1 HR@100变化 | S1 HR@1000变化 |
|---|---|---|
| noco | -20.48% | -11.24% |
| merge | -13.96% | -3.47% |
| base (KNN-25) | baseline | baseline |
| +KNN-10 | +6.72% | +1.16% |
| +KNN-5 | +11.79% | +0.84% |
| +Random-5 | +21.92% | +4.82% |
去除碰撞控制(noco)导致显著性能下降;merge(合并相邻SID)也降低性能。更严格的碰撞控制和Random分配策略带来持续提升。
4.7 数据模态消融(Table 15)¶
| Method | S1 HR@100变化 | S1 HR@1000变化 |
|---|---|---|
| query2i | -10.03% | -4.62% |
| samecate | -7.76% | -4.58% |
| +sideinfo | +3.41% | +7.13% |
| +i2i | +3.83% | +7.49% |
query2i和samecate作为协同关系替代方案均不如i2i;额外加入sideinfo(卖家、价格、类目等)和i2i关系均可提升SID质量。
5. 实现细节¶
SID生成:RQ-VAE,输入维度512,codebook维度64,3层MLP编码解码器,CN-CLIP融合,AdamW优化,150 epochs。
生成式检索:
- T5-Base (0.2B):序列长度100,max length 1280,4 epochs,16 GPU (PPU-ZW810E),20h/epoch
- Qwen2.5-0.5B-Instruct:序列长度100,max length 1280,1 epoch,32 GPU,80h/epoch
- Qwen2.5-3B:同Qwen2.5-0.5B配置
Dynamic beam search:3层SID使用 {300, 600, 1200},2层SID使用 {600, 1200}。
训练优化:Optimized LM_HEAD(Algorithm 3)通过只计算序列中第一个有效label位置之后的logits,减少约20%训练时间和约70%内存占用。
6. 总结与贡献¶
- 首个工业级SID基准:FORGE包含140亿交互、2.51亿商品、131M用户,提供多模态特征和预构建SID,支持推荐和搜索任务
- 系统性SID优化:多模态融合 + i2i对比学习 + Random碰撞缓解的组合方案,在所有配置下提升13-35%
- 无需GR训练的SID评估:Embedding hitrate和Gini coefficient与最终HR强正相关,提供高效评估手段
- 工业部署加速:From UserAction离线预训练将在线收敛时间缩短一半,线上交易量提升0.35%
- 丰富的泛化验证:跨架构(T5/Qwen)、跨规模(0.2B-3B)、跨任务(推荐/搜索)、跨codebook配置均验证有效