← 全部深度解读
📖 深度解读 · GENERATIVE

DualGR: Generative Retrieval with Long and Short-Term Interests Modeling

Zhongchao Yi, Kai Feng, Xiaojian Ma, Yalong Wang, Yongqi Liu, Han Li, Zhengyang Zhou, Yang Wang · Kuaishou · arXiv 2511.12518 · 发表 2026-08-05
12 分钟阅读时长 4770字 4.50综合分 第 1 名08-06 Generative 日报
目录 · 6 节1问题与动机2方法详解3核心技术贡献4实验结果分析5局限与未来方向6工业实践意义
相关 4新颖 4实用 4证据 5时效 5
对社区 UGC 搜索而言,长短期兴趣必须分开建模:近期会话控制即时意图,长期历史提供稳定偏好;粗粒度 SID 桶内再做受约束搜索,可降低生成空间和错误扩散。曝光未点击样本应作为兴趣衰减的硬负例纳入训练,并用线上 CTR、停留时长而非只看 Recall@K 验证价值。

1. 问题与动机

DualGR 解决的是工业生成式召回在“长历史、短期热点、严格延迟”三者同时存在时的失配问题。论文场景不是小规模离线推荐,而是快手双列 Explore 信息流:系统面对数亿用户、每天约 10 亿视频播放和 100 亿曝光,需要从数十亿视频中实时召回数千个候选,再交给下游排序。双列瀑布流每屏展示多个卡片,比单列全屏流更强调候选的相关性与多样性,也要求召回同时覆盖稳定偏好和突发兴趣。

作者指出,主流的 embedding-based retrieval(EBR)通常用双塔和 ANN 做用户—物品匹配,虽然可扩展,却难以显式表达多兴趣与目标感知交互,还会受到曝光偏差影响。生成式检索把物品离散成多级 Semantic IDs(SIDs),用自回归解码预测候选,可以在同一个离散空间内训练和服务,并通过 cross-attention 建立目标与用户历史的交互。但直接把它用于短视频流仍有三个故障模式:第一,长期偏好和短期热点共享注意力与梯度,兴趣信号相互稀释;第二,层级 SID 的细粒度解码会把无关历史噪声带入上下文,长历史又会增加延迟;第三,NTP 只学习点击或有效互动目标,曝光但未点击的物品没有被明确用作负反馈,非兴趣方向不能及时衰减。

因此论文的核心动机不是再堆一个更大的 Transformer,而是把兴趣时间尺度、层级搜索约束和负反馈训练分别显式化。它希望证明:在生成式召回中,结构化控制可以同时改善候选覆盖、实时性和线上业务指标。

2. 方法详解

2.1 三层 Semantic ID 与解码骨干

DualGR 先用 residual k-means 把每个视频量化为长度 L=3 的层级 SID。每一级 codebook 大小为 8192,模型学习如下的分解概率:先预测一级粗粒度 SID,再在已有前缀条件下预测二级和三级 SID。服务时用 beam search 产生 Top-K SID,再通过预建的 SID 到视频 ID 映射表还原成具体视频。这样做的好处是生成空间有限、每一级都可检查,也让 coarse bucket 成为后续过滤和搜索的边界。

模型采用 encoder-free、decoder-centric 的轻量结构:输入端只做 embedding 和 LayerNorm,decoder 由 4 个 Transformer block 组成,模型维度 512、8 个 attention heads、feed-forward 维度 1024。作者用逐步 cross-attention 处理动作列表,避免为每次 SID 预测重复编码完整历史;这相当于用较低的前端开销实现目标感知交互。训练历史最多取用户最近 1000 条正向互动,包含视频 ID、作者、互动标签和观看时长等行为字段。

2.2 Dual-Branch Long/Short-Term Router

DBR 把同一份行为历史切成两个窗口:long branch 使用长度 L_long=1000 的长期窗口,short branch 使用长度 L_short=64 的近期窗口。每条行为先映射到一级 SID 的词表 embedding,再分别池化成长期摘要 r_long 和短期摘要 r_short。训练时,模型拿真实目标视频的一级 SID embedding 与两个摘要计算余弦相似度,选择相似度更高的分支作为 coarse-step 的监督历史。这是一个 target-aware hard gate:长期或短期不是固定分工,而是由目标类别决定。

服务时则同时实例化两个分支,各跑一次 beam search,分别得到长期与短期的一级 SID,再继续解码二级和三级 SID,最后合并两路候选。这个设计看似多了一次 forward,但用两路有限候选换取了长期稳定兴趣和短期热点的联合覆盖;论文将它与多兴趣模型依赖被动多 beam 分化的做法区分开来。对搜索系统的类比是:长期用户画像和当前 query/session 不能共用一个不可解释的向量,应允许两路召回并在后续融合。

2.3 Search-based SID Decoding

S2D 只在确定一级 coarse bucket 后,才从原始行为列表中搜索属于该 bucket 的历史行为,选出同桶且较新的动作作为二、三级 SID 解码上下文。训练阶段使用真实一级 SID;推理阶段使用模型预测的一级 SID,再对完整 action list 做同桶过滤。由于每一级 codebook 通常至少有 256、最高可到 8192 个 token,同桶历史规模近似为 |H|/|V^(1)|,远小于完整历史,因此长历史在固定延迟预算下仍然可用。

S2D 的关键不是简单截断,而是先由生成模型判断“要去哪一个粗类别”,再在该类别内部做历史搜索。它同时提供三种控制:搜索空间被粗粒度 bucket 限制,细粒度上下文更少受无关行为干扰,SID 前缀的一致性更强。对社区 UGC 搜索,可以把话题、实体或 query 意图当成类似 coarse bucket,先确定语义区域,再从区域内挑选能支持精确匹配的短文本片段。

2.4 Exposure-aware NTP Loss

ENTP-Loss 用二元标签 c 区分正向互动和曝光未点击。对于正样本,保留标准 NTP,在三级 SID 上都最小化负对数似然;对于未点击曝光,只在一级 SID 上加入 -alpha log(1-p^(1)) 的惩罚,作者实验默认 alpha=0.1。也就是说,未点击样本不会被当成精确的细粒度错误目标,而只会抑制其粗粒度兴趣方向,从而避免把噪声负例扩散到二、三级 SID。

这个损失把“兴趣衰减”变成可训练目标:点击过的类别继续在完整 SID 路径上被强化,曝光后没有点击的类别在 coarse 层被压低。alpha 过大时会过度惩罚未点击曝光,误伤真实兴趣并使训练不稳定;alpha 过小时非兴趣衰减太慢。作者的敏感性实验显示,中等 alpha 能在两者之间取得平衡。

3. 核心技术贡献

第一,DBR 把长期与短期兴趣显式拆成两个目标感知分支,训练时用目标一级 SID 的余弦相似度进行硬路由,推理时分别解码再合并,解决了稳定偏好与热点兴趣的梯度稀释问题。它比单纯依赖多 beam 被动产生多兴趣更可控。

第二,S2D 将层级生成与行为检索结合:一级 SID 决定搜索边界,二、三级 SID 只在同桶历史中生成。它同时解决上下文噪声和延迟问题,使模型可以使用更长历史,而不需要把全部历史送入每一步解码。

第三,ENTP-Loss 将曝光未点击行为引入生成式召回,但只施加在一级粗粒度 token 上。这个设计保留正样本的完整生成学习,又避免对未知原因的未点击行为施加过细的错误监督,实现了及时而较安全的兴趣衰减。

第四,论文将三项机制放在一个工业可服务的 encoder-free decoder 中,而不是只在离线数据集上展示概念。它在快手双列 Explore feed 的周级线上 A/B 中使用 6% 流量,且端到端延迟没有可测上升,说明结构化的生成式召回可以进入现有多阶段推荐链路。

4. 实验结果分析

4.1 离线/线上对比

论文使用快手双列 Explore 流,比较 ComiRec、PDN、KuaiFormer、TIGER 和 DualGR,指标是线上 Hit Rate。结果如下:

方法HR@100HR@500HR@1000
ComiRec2.539%6.134%8.249%
PDN2.343%5.483%7.249%
KuaiFormer4.495%7.251%12.356%
TIGER4.936%8.184%14.442%
DualGR6.827%10.319%19.529%

相对 TIGER,DualGR 的 HR@100 从 4.936% 提升到 6.827%,HR@500 从 8.184% 提升到 10.319%,HR@1000 从 14.442% 提升到 19.529%。这说明提升并不只出现在很小的候选截断处,在 1000 个候选的较宽召回池中也保留了明显优势。论文还报告了一周线上 A/B:实验占 6% 流量,视频播放量提升 0.527%,观看时长提升 0.432%,端到端延迟保持在服务级别预算内且没有可测响应时间增加。对于搜索业务,这类线上结果比单独的 Recall@K 更能证明生成式召回是否能传导到用户行为。

4.2 消融与敏感性

三项消融均明显落后完整模型:去掉 DBR 后 HR@100/500/1000 为 5.134%/8.892%/15.379%;去掉 S2D 后为 6.257%/9.182%/16.287%;去掉 ENTP-Loss 后为 6.672%/9.837%/17.576%;完整 DualGR 为 6.827%/10.319%/19.529%。从 HR@1000 的绝对差看,DBR 最重要,去掉后损失 4.150 个百分点;S2D 损失 3.242 个百分点;ENTP 损失 1.953 个百分点。这个排序表明长短期路由是主要收益来源,S2D 对长历史和层级一致性同样关键,曝光负反馈提供的是增量稳定性与兴趣淘汰能力。

敏感性实验还显示,短期窗口过小会漏掉近期兴趣,过大则与长期窗口边界模糊;因此 L_short=64 这类中等窗口较平衡。ENTP 的 alpha 也不是越大越好:过大会压制真实兴趣,过小则非兴趣衰减太慢。需要注意的是,论文报告的效果来自一个已经拥有巨量行为流量和成熟 SID 量化体系的生产系统,不能直接把 0.527% 播放提升外推到小规模社区产品。

5. 局限与未来方向

论文没有设置单独的 Limitations 章节,结论部分也主要强调三项模块和线上效果,没有列出作者明确承认的失败案例。按照作者实际实验范围,当前证据集中在快手双列短视频推荐、数亿用户规模和三级 SID 上,论文没有展示 UGC 短文本搜索、冷启动物品或跨域迁移的结果,也没有给出不同硬件下的绝对 P95 延迟数字。这里应把它们视为证据边界,而不是虚构成作者已经承认的局限。

作者给出的未来方向没有在结论中展开,因此实践上最值得补充的验证是:把一级 SID 换成 query/话题/实体层级,测新帖子进入索引后的冷启动;把点击、停留、负反馈和内容安全信号同时纳入 ENTP;并比较单路生成、双路生成与传统 ANN 召回在同一延迟预算下的覆盖和成本。

6. 工业实践意义

对社区搜索团队,最可借鉴的不是直接复制 4 层 Transformer,而是复制“分时间尺度、分层级搜索、分粗细负反馈”的设计原则。第一步可以在现有召回中增加短期 session 分支:对最近 32–64 次 query、点击或浏览单独编码,和较长的用户兴趣摘要并行召回,再在融合层检查新鲜度、主题覆盖和重复率。这样能先验证 DBR 的思想,不必马上迁移全部系统。

第二步是引入受约束的生成或重排。把帖子、问题和评论的语义表示量化为层级 token,先预测实体/话题/意图等粗 token,再在该 bucket 内检索具体 UGC;对不存在、违规或已删除内容,用候选表和安全过滤做 constrained decoding。S2D 的经验提示,生成模型不应在整个内容库上自由展开,粗粒度边界能同时降低幻觉候选和 GPU 计算。

第三步是正确使用未点击曝光。搜索中未点击不一定等于不相关,可能是位置、摘要或时机问题,所以不能像论文一样无条件强惩罚所有负例。应结合曝光位置、停留、query 改写、屏蔽和重复展示等信号,先在粗粒度主题层使用小权重负反馈,再用在线实验调节衰减强度。评价需要同时覆盖 nDCG、CTR、长尾覆盖、重复率、P95/P99 延迟、GPU 成本和安全拦截率。

部署上,DualGR 的 encoder-free 前端、4 个 block、512 维和 3 级 8192 codebook 是一个有参考价值的规模起点,但它仍依赖稳定的 SID 量化、映射索引和行为流。建议采用“传统召回保底 + 生成式召回增量频道”的灰度方式,先使用 1%–5% 流量做 A/B,监测是否出现热点过拟合、热门内容挤压长尾、删除内容残留和延迟尖峰。只有当生成式通道在 nDCG/CTR 与成本上都稳定优于基线,才扩大候选配额;否则保留其作为 query 理解或重排信号更稳妥。

← 全部深度解读 出现于报告:2026-08-06 · Generative #1 (4.50) 原文 ↗