生成式召回 —— COBRA 精读笔记

文章链接:https://arxiv.org/pdf/2503.02453

机构:百度

发布时间:2025.03

参考文献:

Copyright (c) Wang-Luning. All Rights Reserved.

TIGER等通过预测下一个物品的ID(SID)的生成式召回方法相比于稠密检索方法的计算效率更高,但其将量化生成SID的过程和序列建模过程进行了分离,导致信息丢失,难以建模精细的相似性关系。

因此,COBRA(Cascaded Organized Bi-Represented generAtive retrieval)希望结合生成式方法和稠密检索方法的优势,通过一个级联的过程来结合稀疏SID和稠密向量的优势。其交替地依次生成下一个物品的SID和稠密向量表征,分别用来捕捉粗粒度的语义信息和细粒度的细节信息。先生成的SID作为粗粒度类别语义信息可以作为条件来辅助该物品稠密向量的生成,降低了稠密表征的学习难度,并促进了两种表征协同学习。在推理时结合Beam Search的思路来高效地生成一组多个候选ID,然后再通过BeamFusion分数得到兼顾准确性和多样性的召回集。

image-20260221133755115

 

物品表征的构建:

最终,将每个物品t,将其稀疏ID表征IDt和稠密表征vt结合起来作为其级联表征(IDt,vt),它既可以提供稳定的粗粒度类别基础信息,也可以提供连续稠密的细粒度特征信息,使得模型既能捕捉到物品的高层次语义信息又能捕捉到细粒度细节信息。

image-20260221134056899

序列建模与训练:

用户历史交互序列由各个历史交互物品的ID和稠密向量交替而成。设第i个物品的稀疏ID为IDi,该ID对应的code为et=Embed(IDi),则:

S1:t=[h1,,ht]=[e1,v1,e2,v2,,et,vt]

对于下一个物品的概率建模被分解为了两步。首先基于历史交互序列S1:t生成下一个物品的稀疏ID IDt+1,然后再基于历史交互系列和这个ID进一步生成物品的稠密向量表征vt+1

P(IDt+1,vt+1|S1:t)=P(IDt+1|S1:t)P(vt+1|IDt+1,S1:t)

模型是一个Transformer Decoder,在生成下一个物品的ID时,将最后一层输出作为logits通过softmax后即可得到预测的ID,生成下一个物品的稠密向量表征时则直接拿最后一层输出作为其稠密向量表征v^t+1

用公式表示这一过程,设历史序列S1:t通过模型后产生的向量序列为yt,然后再进一步得到下一个物品ID的预测logits zt+1,得到对应的ID code et+1后将其接到历史序列后边得到S¯1:t,再将其输入模型后可得下一个物品的稠密向量预测v^t+1

yt=TransformerDecoder(S1:t)zt+1=SparseHead(yt)S¯1:t=[S1:t,et+1]=[e1,v1,,et,vt,et+1]v^t+1=TransformerDecoder(S¯1:t)

训练时,端到端的训练过程可以联合优化稀疏ID和稠密表征的预测。其中,稀疏ID的预测loss就是一个多分类loss,希望最大化每个位置的ground truth的ID的预测概率:

Lsparse=t=1T1logexp(zt+1IDt+1)j=1Cexp(zt+1j)

其中T为历史序列长度,C为码本大小。

稠密表征的loss是希望预测生成的稠密向量能够尽可能接近下一个物品的真实向量,同时尽可能远离和其他负样本的向量的距离:

Ldense=t=1T1logexp(cos(v^t+1,vt+1))itemjBatchexp(cos(v^t+1,vitemj))

生成每个物品的ground truth稠密向量表征的Encoder在该训练过程中也是可训练的,可以不断地迭代来为物品生成更好的表征。

总的loss为稀疏和稠密两部分之和:

L=Lsparse+Ldense

image-20260221134139301

推理过程

在推理中也使用了由粗到精到生成思路,首先生成稀疏的IDs,然后再进一步通过生成稠密向量来修正。具体而言,首先生成一组候选ID和一组对应的稠密向量:

然后,使用BeamFusion策略来生成召回物品集。对于预测得到的每个候选ID I^DT+1k,首先使用ANN分别召回一批这些ID各自对应的最相关的物品集Ak

Ak=ANN(ID^T+1k,C(ID^T+1k),N)

其中C(ID^T+1k)表示该ID对应的总物品集,N为召回数量。

然后,针对每个ID召回候选集中的每个物品a,再结合它们对应ID和其他ID相比的置信度(也即前面生成ID时的beam score ϕ)和它们与对应ID的预测稠密向量之间的相似度(也即同一个ID的召回集合内部比较),为其生成一个全局可比的BeamFusion分数:

Φ(v^T+1k,ID^T+1k,a)=Softmax(τϕID^T+1k)×Softmax(ψcos(v^T+1k,a))

其中τ,ψ为系数。

最后,每个候选物品都得到自己的BeamFusion分数后,再在全局选出Top-K个分数最高的,作为最终召回物品集R

R=TopK(k=1MAk,Φ,K)