From a Static Multi-Level Small Semantic Codebook to a Dynamic Single-Level Large Semantic Codebook for Generative Recommendation
Tianlu Xie, Xin Ku, Mingjie Sun, Yunhao Sha, Lixiang Wang, Peng Wang, Yiyu Wang, Wenjin Wu, Zhaojie Liu, Peng Jiang, Wenwu Ou
cs.IR, cs.LG
2026-08-21
快手用单层大语义码本加消歧码替换三层残差 SID。OneRec 上 Recall@10 提高 5.0%–8.8%,2.5% 流量 A/B 主消费指标 +0.792%,解码 FLOPs 约降一半并抬高单卡吞吐。
生成式推荐把每个物品编成一串 Semantic ID (SID),再自回归预测下一件的 ID 序列。工业里常见三层:两层残差语义码,再加一层协同消歧。快手在约 15 亿样本上量过现网三层码:第二层语义码全局能用到词表的 93.31%,但在每个已激活的第一层码下面,平均只覆盖词表的 2.48%。多出来的那一层拉长了解码,换来的是条件稀疏的层次空间。静态码本还会漂:新物品进来、曝光分布一变,分区就跟当前流量对不上。
做法是把多层小语义码本收成单层大语义码本,协同消歧码留下,再加一套跟曝光走的动态更新。
物品 embedding 做 ℓ2 归一化后,只向量化量化进一个大语义码本,得到 SID1;SID2 是对稳定物品键的确定性哈希,只负责把撞到同一语义码的物品分开,不参与重建。公开数据上三层是 [256, 256, 256],两层是 [1024, 512]。自回归从三步变成两步,合法组合问题在源头上少了一截。
动态更新按天走。曝光次数先取 1+log10,再做时间衰减的状态权重;中心用指数滑动平均;换码时加一项与曝光成正比的罚,高频物品除非量化误差掉够多,否则不改 SID。SID2 跨版本保持不变,避免监督目标整批跳。
离线码本评估覆盖重建余弦、码利用率、簇负载、完整 SID 碰撞、时间稳定性,用来在重训生成模型之前筛候选。
Amazon Beauty 上,七个 OneRec 尺度取平均,S2 相对 S3:OneRec-V1 的 Recall@10 +5.0%、NDCG@10 +4.1%;OneRec-V2 为 +8.7% 和 +8.5%,每个尺度的 Recall@10 都是 S2 更好。SEATER、RPG、COBRA 也是 S2 更好,TIGER 仍是 S3 更好,效果跟模型有关。
KuaiRec 留二评估上,OneRec-V1 的 S2 / PV-S2 相对 S3,Recall@10 分别 +8.8% / +7.0%,NDCG@10 为 +5.1% / +4.8%。固定日期对比里,动态 C2 相对静态 C1:OneRec-V1 的 Recall@10 +1.4%、NDCG@10 +7.0%;V2 两项都是 +2.7%。这次更新只改了 10,728 个物品里的 46 个 SID1,物品级变化率 0.4288%。
现网七天快照上,静态码本重建余弦往下掉,动态 PV-S2 从 Day 1 的 0.821 收到 Day 7 的 0.827。五天、2.5% 流量的 A/B 里,主消费指标 +0.792%。Decoder / LazyAR / MTP 三条链路上,自回归解码 FLOPs 估降 47.93%–48.70%,单卡 QPS 分别 +47.0%、+28.57%、+33.3%。
生成式推荐的解码成本跟 SID 长度绑在一起。这篇用现网统计说明第二层语义码在条件上很空,然后用加宽词表换减层,而不是上并行解码再补合法性修复。动态部分很克制:高频物品几乎不改号,适应流量的同时保住训练目标稳定。离线码本指标让换码本不必每次都重训推荐模型。对已经在跑 OneRec 一类系统的人,这是可落地的结构简化,不是新的生成范式。
TIGER 在 Amazon Beauty 上 S3 更好,减层不是所有解码器的免费午餐。线上 A/B 只有五天、2.5% 流量,主消费指标没有公开定义。公开实验的 OneRec 去掉了生产特有特征和偏好对齐。动态增益在 Recall 上只有一到三个点,大头仍来自静态的两层结构。工业重建数字没有公开词表大小和碰撞率。SID2 用稳定哈希,协同信号进语义码的路径被关掉了。