这是一个基于生成式检索(Generative Retrieval)范式的序列推荐系统项目。
本项目复现并改进了 TIGER (Transformer Index for Generative Recommenders) 架构,实现了从 User History 到 Target Item Semantic ID 的端到端生成。项目包含三个递进的版本:***RQ-VAE Greedy Strategy版本、RQ-VAE Beam Search版本 以及 RQ-Kmeans 效率探索版。
- Zero-shot 冷启动推荐: 利用 Sentence-T5 提取 Item 多模态语义特征,替代传统 ID Embedding,实现对新物品的即时推荐。
- 训练稳定性攻坚: 在 VQ 训练中引入 Sinkhorn Algorithm (基于最优传输),解决 Codebook Collapse 问题,最大化码本利用率。
- 索引一致性工程: 设计并落地 "Sinkhorn重采样 + 后缀位修正" 的两阶段去重策略,将 Semantic ID 的哈希冲突率彻底降至 0%。
- 严格评估体系: 建立基于 Exact Match (全匹配) 的评估指标,确保生成序列在 Item 级别的精准度。
本项目不仅仅是论文复现,更包含对算法缺陷的思考与改进:
严格遵循 TIGER 论文设置,使用残差量化变分自编码器 (RQ-VAE) 将高维语义向量离散化为层次化 Tuple ID。
- 特点: 采用 Greedy Strategy 进行量化,使用 Adagrad 优化器训练。
针对基础版贪婪量化导致的局部最优问题,引入 Joint Quantization 思想。
- 改进: 在离线索引构建阶段,实现 Vectorized Beam Search。
- 效果: 显著降低重构误差 (Reconstruction Loss),从算法源头区分高相似商品,实现内源性冲突抑制。
基于奥卡姆剃刀原则 (Occam's Razor),探索非参数化方法的可行性。
- 改进: 使用 Faiss 实现 RQ-Kmeans 替代 RQ-VAE 神经网络。
- 效果: 在保留高质量预训练向量几何结构的同时,将索引构建效率提升 10倍+,且完全消除训练坍塌风险。
下载 Amazon Review 数据集 (Beauty/Toys等),运行预处理脚本(process.ipynb)提取语义向量 注:data文件中包含Beauty的数据集
选项 A: 训练 RQ-VAE (基础版)
注:默认 RQ-VAE 采取的是Greedy Strategy
- 运行rqvae/main.py
- 运行rqvae/generate_code.py
选项 B: 使用 Beam Search 生成索引 (优化版)
- 在rqvae/models/rqvae.py文件中,将导入文件改为 rq_beamsearch.py
- 根据rqvae/models/rqvae.py,rqvae/generate_code.py和model/main.py文件中的注释替换为beam search的代码
- 首先运行rqvae/main.py,然后运行rqvae/generate_code.py
选项 C: 使用 RQ-Kmeans (极速版)
- 运行rqkmeans/generate_kmeans_code.py
- 运行model/main.py文件
我们在 Amazon Beauty 数据集上对三个变体进行了详细对比。实验环境保持一致,均采用 TIGER 架构,仅改变语义索引 (Semantic Indexing) 的生成方式。
主要指标对比 (Performance on Beauty Dataset)
| Method | Indexing Strategy | Epochs to Converge | Train Loss | Recall@20 | NDCG@20 | Collision Rate* |
|---|---|---|---|---|---|---|
| Tiger-RQVAE (Base) | Greedy VQ | 96 | 1.941 | 0.1069 | 0.0490 | 0.061 |
| Tiger-Enhanced | Beam Search VQ | 129 | 1.861 | 0.1114 | 0.0513 | 0.077 |
| Tiger-RQKmeans | Faiss K-means | 82 | 2.000 | 0.1156 | 0.0516 | 0.0735 |
*注:Collision Rate 指未进行后缀修正前的原始哈希冲突率。最终系统均通过后缀修正保证了 0% 冲突。
-
精度换取效果 (Precision Matters):
- Tiger-Enhanced (RQ-VAE2) 相比基础版,NDCG@20 提升了约 4.7%。这证实了在离线索引阶段引入 Beam Search (Joint Quantization) 能更精准地还原 Item 语义,从而帮助下游生成模型更准确地进行推荐排序。
- 同时,Enhanced 版本的 Training Loss 最低 (1.86),说明高质量的 Semantic ID 序列更容易被 T5 模型学习和预测。
-
非参数化的胜利 (Simplicity Wins):
- Tiger-RQKmeans 取得了 最高的 Recall@20 (0.1156) 和 最优的 NDCG@20 (0.0516),且收敛速度最快 (Epoch 82)。
- 这有力地证明了:在 Sentence-T5 这种高质量预训练向量的基础上,保持原始几何结构的残差聚类 (K-means) 是一种比训练神经量化器 (VQ-VAE) 性价比更高的选择。它不仅消除了训练坍塌的风险,还带来了更强的泛化能力。
-
冲突率与性能的 Trade-off:
- 虽然 Enhanced 版本的原始冲突率 (0.077) 略高于基础版,但其推荐性能依然提升。这说明只要通过工程手段(后缀修正)解决了唯一性问题,语义的保真度 (Fidelity) 才是决定生成式推荐效果的核心因素。