快手OneRetrieval:可编辑生成式电商召回
核心问题:电商搜索召回想从多分支合并走向单模型,但倒排分支虽然转化低,仍承担“新热词当天可干预”的生产能力。
核心方案:OneRetrieval 用 Keyword-Aligned Encoding,把 SID 的每个位置绑定到可解释属性词,而不是训练时固定的量化向量。
关键机制:6 个属性组、非均匀码本容量、每组 10 个 reserved slot,让运营可把新词绑定到目标商品集合,无需更新模型。
实验结论:HR@350 接近最强生成式基线 OneSearch;IHR@350 比闭码本量化编码高一个数量级;线上替换倒排分支后 Order +0.710%。
论文基本信息
| 论文标题 | OneRetrieval: Unifying Multi-Branch E-commerce Retrieval with an Editable Generative Model |
|---|---|
| 论文链接 | https://arxiv.org/abs/2606.13533 |
| 论文作者 | Xuxin Zhang, Ben Chen, Yue Lv, Siyuan Wang, Yupeng Li, Yufei Ma, Zihan Liang, Tong Zhao, Ying Yang, Huangyu Dai, Lingtao Mao, Zhipeng Qian, Xinyu Sun, Chenyi Lei, Wenwu Ou, Kun Gai |
| 机构 | Kuaishou Technology |
| 一句话总结 | OneRetrieval 用“属性词对齐的可编辑 SID”把电商搜索召回从多分支手工融合推进到单个生成式模型,同时保留倒排索引式的热词实时干预能力。 |
背景与动机
工业电商搜索召回通常由三类分支拼起来:倒排索引负责词面匹配,Dense 向量负责语义泛化,协同过滤负责行为相似。这个结构能兜底,但每个分支单独训练,最后靠手工 merge,跨分支冗余和目标不一致长期存在。
论文指出真正卡住单模型替换的不是 HR,而是editability:倒排分支转化低于平台平均,但运营可以在小时级把新品牌、新 IP、新营销词绑到目标商品集合。已有生成式召回要么用闭码本 SID,把 slot 绑定到训练期量化 embedding;要么生成自由文本片段,缺少“把某个新词确定路由到某批商品”的显式机制。
整体架构
OneRetrieval 由三块组成:KAE 编码、四阶段 SFT、线上 serving 与实时干预旁路。
端到端数据流:商品与 query 文本先经过属性词典匹配,得到 6 位 SID;BART-base 编码器-解码器在四阶段 SFT 后学习从 query、query SID、历史 query、历史商品 SID 到目标商品 SID 的生成;线上用 beam search 生成 Top-K SIDs,再通过 SID-to-item lookup index 展开成候选商品。新热词走虚线旁路:更新属性词典,把新词绑定到 reserved slot,再把该 slot 绑定到目标商品集合。
逐模块方案拆解
3.1 召回形式化
模块作用:把召回改写为条件生成问题,模型不直接检索 item embedding,而是生成 item 的结构化语义标识 SID。
输入:queryq、用户上下文c_u;输出:候选商品集合R(q,c_u) ⊆ I。每个商品i的 SID 为长度L的 token 序列。
s i = ( s i ( 1 ) , s i ( 2 ) , … , s i ( L ) ) s_i = (s_i^{(1)}, s_i^{(2)}, \ldots, s_i^{(L)})si=(si(1),si(2),…,si(L))
变量说明:
i ∈ I:商品,I是平台商品集合。s_i ∈ \mathbb{N}^{L}:商品i的结构化 SID,论文部署配置中L=6。s_i^{(\ell)} ∈ V_\ell:第\ell个位置的 SID token,来自位置专属码本V_\ell。V_\ell:第\ell个属性组的 codebook,稠密组核心容量为 2048,轻量组核心容量为 1024,另各有 10 个 reserved slot。
R ( q , c u ) = T ( TopK s π θ ( s ∣ q , c u ) ) R(q,c_u)=T\left(\operatorname{TopK}_{s}\ \pi_\theta(s \mid q,c_u)\right)R(q,cu)=T(TopKsπθ(s∣q,cu))
变量说明:
q:当前搜索 query,文本序列长度记为T_q。c_u:用户上下文,包含近期搜索 query 与近期交互商品 SID。\pi_\theta:生成式召回策略,论文使用扩展 SID 词表后的 BART-base。TopK_s:对 SID 序列做 unconstrained beam search,论文离线使用 beam size 512。T:预计算的 SID-to-item lookup index,是一对多映射;一个 SID 可展开为多个语义等价商品。R(q,c_u):最终候选商品集合,展开后通常超过K个 item。
自回归分解为:
π θ ( s ∣ q , c u ) = ∏ ℓ = 1 L π θ ( s ( ℓ ) ∣ s ( < ℓ ) , q , c u ) \pi_\theta(s \mid q,c_u)=\prod_{\ell=1}^{L}\pi_\theta\left(s^{(\ell)} \mid s^{(<\ell)},q,c_u\right)πθ(s∣q,cu)=ℓ=1∏Lπθ(s(ℓ)∣s(<ℓ),q,cu)
变量说明:
s^{(<\ell)}=(s^{(1)},\ldots,s^{(\ell-1)}):第\ell位之前已经生成的 SID 前缀,shape 为B×(\ell-1)。B:batch size。\pi_\theta(s^{(\ell)} | ·):第\ell位 token 的分类分布,shape 为B×|V_\ell|。
3.2 Keyword-Aligned Encoding
模块作用:把商品和 query 都映射到同一套属性词驱动的 6 位 SID,使每个 SID 位置有可解释的属性含义。
输入:商品记录x_i,由 title、结构化属性、详情页文本、图片 OCR 拼接;或 query 文本x_q。输出:s_i ∈ \mathbb{N}^{6}或s_q ∈ \mathbb{N}^{6}。
处理流程:
用 Aho-Corasick 在生产属性词典
A中做确定性匹配。把 18 类细粒度属性合并成 6 个 ECOM6 组。
若同组命中多个词,用主商品词优先级和 posterior importance score 选一个代表词。
将代表词映射到该组 codebook slot;未命中则使用 empty slot。
s x ( ℓ ) = slot ℓ ( select ℓ ( match ( x , A ) ) ) s_x^{(\ell)} = \operatorname{slot}_\ell\left(\operatorname{select}_\ell\left(\operatorname{match}(x,A)\right)\right)sx(ℓ)=slotℓ(selectℓ(match(x,A)))
变量说明:
x:输入文本,可来自商品或 query。A:生产属性词典,论文去重后约1.08×10^6个 typed attribute words。match(x,A):确定性词典匹配结果,输出若干(word, category)。select_\ell(·):第\ell个属性组内的代表词选择函数。slot_\ell(·):代表词到第\ell个码本 slot 的映射。s_x ∈ \mathbb{N}^{6}:最终 6-token SID。
3.3 信息论属性组合并
模块作用:把 18 个属性类别压缩到 6 个 SID 位置,在降低生成长度的同时保留区分信息。
论文把每个属性类别X看成商品上的 Bernoulli 激活变量:商品携带该类属性词时X(i)=1,否则为 0。两个类别合并的损失定义为对称条件熵:
I L ( X , Y ) = 1 2 ( H ( X ∣ Y ) + H ( Y ∣ X ) ) = 1 2 ( H ( X ) + H ( Y ) ) − M I ( X , Y ) IL(X,Y)=\frac{1}{2}\left(H(X\mid Y)+H(Y\mid X)\right) =\frac{1}{2}\left(H(X)+H(Y)\right)-MI(X,Y)IL(X,Y)=21(H(X∣Y)+H(Y∣X))=21(H(X)+H(Y))−MI(X,Y)
变量说明:
X,Y ∈ {0,1}:两个属性类别在商品上的激活变量,shape 可视为N维 0/1 向量,N为商品数。H(X):类别X的二元熵,衡量该类别激活的不确定性。H(X|Y):知道Y后X仍剩余的不确定性。MI(X,Y):互信息,表示两个类别共现提供的信息重叠。IL(X,Y):把X和Y放到同一位置带来的信息损失,越小越适合合并。
3.4 可扩展码本设计
模块作用:在每个 SID 位置提供可解释、可扩容、可实时编辑的 slot 空间。
论文将每个位置的 codebook 拆成四块:empty、cluster、solo、reserved。
| 区块 | 作用 | 细节 |
|---|---|---|
| Empty | 表示该属性组缺失 | index 0;query 或商品未命中该组属性词时使用。 |
| Cluster | 承接长尾属性词 | 对同组尾部属性词 embedding 做 k-means,slot 表示一簇近义词。 |
| Solo | 承接高频头部属性词 | 高频词基本一词一 slot;近似别名或拼写变体可共享。 |
| Reserved | 上线后绑定新热词 | 每个位置额外 10 个 reserved slot;训练期不绑定具体属性词,部署后由运营绑定。 |
部署配置是L6-D3:前三个稠密属性组使用V_\ell=2048,后三个轻量组使用V_\ell=1024,核心 slot 总数 9216;再加 60 个 reserved token,总 SID 扩展词表为 9276。
3.5 Reserved slot 实时干预
模块作用:让新词在不改模型参数的情况下进入生成式召回链路。
设新热词为w_new,所属属性组为\ell,运营为它分配一个未使用 reserved slot⟨\ell v⟩。
w n e w → dictionary edit ⟨ ℓ v ⟩ , ⟨ ℓ v ⟩ → lookup edit I t a r g e t w_{new}\xrightarrow{\text{dictionary edit}}\langle \ell v\rangle, \quad \langle \ell v\rangle\xrightarrow{\text{lookup edit}}I_{target}wnewdictionary edit⟨ℓv⟩,⟨ℓv⟩lookup editItarget
变量说明:
w_new:新出现的品牌、IP、类目或营销词。\ell ∈ {1,...,6}:w_new被归入的 ECOM6 属性组。⟨\ell v⟩:该组中的 reserved token,训练期存在于词表中但未绑定具体词。I_target ⊆ I:运营指定的目标商品集合。dictionary edit:更新属性词典,让包含w_new的 query 或 item 被确定性编码到⟨\ell v⟩。lookup edit:更新 SID-to-item index,让该 reserved code 指向目标商品集合。
论文给出三条支撑:
P1 可达:unconstrained beam search 允许 decoder 生成任意 SID token,reserved token 已在训练期加入词表。
P2 自路由:Stage 3 用极小比例样本训练
prefix(⟨\ell v⟩) → prefix(⟨\ell v⟩),让 reserved prefix 能被复制到生成结果。P3 确定编码:query 侧通过词典和表查确定性落到 reserved slot,运营控制绑定关系。
3.6 四阶段监督微调
模块作用:把“召回质量”和“可编辑性”拆到不同训练阶段里分别建立。
| 阶段 | 训练任务 | 输入 / 输出 Shape | 主要贡献 |
|---|---|---|---|
| Stage 0 | 属性词与 SID slot 双向对齐 | 输入文本 tokenB×T_attr;输出 slot tokenB×1,反向任务相反。 | 让 slot 绑定属性词语义,建立位置偏置。 |
| Stage 1 | query / item title 与 SID 对齐,附加类目预测 | 输入B×T_text;输出 SIDB×6或类目 token。 | 主要支撑 query-to-SID、item-to-SID 的召回质量。 |
| Stage 2 | 点击和订单日志中的 query-item 共现 | 输入 query、item title 或 query SIDB×6;输出 item SIDB×6。 | 建立 query SID 到 item SID 的路由,是可编辑性的关键阶段。 |
| Stage 3 | 个性化召回与 reserved-slot self-routing | 输入(q,s_q,hist_q,hist_s);输出s_i ∈ \mathbb{N}^{B×6}。 | 形成线上策略,并保持 reserved token 可生成。 |
Stage 3 的主任务为:
( q , s q , h i s t q , h i s t s ) → s i (q, s_q, hist_q, hist_s) \rightarrow s_i(q,sq,histq,hists)→si
变量说明:
q:当前 query 文本,shape 为B×T_q。s_q ∈ \mathbb{N}^{B×6}:query 经过 KAE 得到的 SID。hist_q:用户近期搜索 query 序列,shape 可记为B×H_q×T_h。hist_s ∈ \mathbb{N}^{B×H_i×6}:近期交互商品 SID 序列。s_i ∈ \mathbb{N}^{B×6}:真实点击或成交商品的 SID。
训练目标 / 损失函数
四个 SFT 阶段共用按 token 求和的最大似然目标:
L ( θ ) = − ∑ ( q , c u , s ) ∈ D ∑ ℓ = 1 L log π θ ( s ( ℓ ) ∣ s ( < ℓ ) , q , c u ) \mathcal{L}(\theta)=-\sum_{(q,c_u,s)\in D}\sum_{\ell=1}^{L}\log \pi_\theta\left(s^{(\ell)}\mid s^{(<\ell)},q,c_u\right)L(θ)=−(q,cu,s)∈D∑ℓ=1∑Llogπθ(s(ℓ)∣s(<ℓ),q,cu)
变量说明:
D:训练三元组集合,每个样本包含 query、用户上下文和目标商品 SID。q:当前 query。c_u:用户上下文,在 Stage 3 中由s_q、hist_q、hist_s等组成。s:监督目标 SID,shape 为B×L,部署配置L=6。\theta:BART-base 编码器-解码器参数及扩展 SID token embedding。\pi_\theta(s^{(\ell)}|·):第\ell位目标 token 的条件概率。
实验与分析
5.1 离线主结果
离线 benchmark 来自连续 31 天电商搜索日志:前 30 天采样5×10^6用户请求作为训练集,第 31 天抽取 29,964 个点击样本和 29,953 个订单样本作为测试集。商品侧总计 20,165,617 items;query 侧总计 7,629,195 queries。
| 方法 | 类型 | Order HR@350 | Order MRR@350 | Click HR@350 | Click MRR@350 |
|---|---|---|---|---|---|
| BM25 | 传统 | 0.2215 | 0.0166 | 0.2914 | 0.0282 |
| DPR | 传统 Dense | 0.4346 | 0.0293 | 0.5027 | 0.0455 |
| LC-Rec | 生成式 | 0.3751 | 0.0869 | 0.4164 | 0.0982 |
| OneSearch | 生成式闭码本 | 0.5550 | 0.1333 | 0.6007 | 0.1539 |
| OneRetrieval | 生成式可编辑码本 | 0.5482 | 0.0880 | 0.6055 | 0.1076 |
OneRetrieval 在深召回 HR@350 上接近 OneSearch:订单侧 0.5482 vs 0.5550,点击侧 0.6055 vs 0.6007。它的 MRR 明显低于 OneSearch,说明优势不是头部精排能力,而是召回深度和可编辑性。
5.2 码本长度与容量分配
L=6是质量和时延的折中点;L6-D3将容量投给 3 个高密属性组,在核心 slot 总数 9216 下达到 Order HR@350 0.5482、Click HR@350 0.6055。L6-D6继续加容量能到 0.5522 / 0.6072,但总容量增至 12288,论文选择L6-D3作为 Pareto knee。
5.3 可编辑性与消融
| 编码范式 | Order HR@350 | Click HR@350 | Total IHR@350 |
|---|---|---|---|
| KAE | 0.5452 | 0.6033 | 0.0806 |
| RQ-VAE | 0.5075 | 0.5516 | 0.0025 |
| RQ-kmeans | 0.5355 | 0.5837 | 0.0030 |
| RQ-OPQ | 0.5376 | 0.5848 | 0.0021 |
KAE 的 Total IHR@350 为 0.0806,闭码本量化方案只有 0.0021–0.0030,差距来自结构本身:量化 code 没有从新词到指定 slot 的确定性路由。
与可编辑的 BM25 倒排分支相比,OneRetrieval 的 Total IAR@350 为 0.5530,BM25 为 0.7610。OneRetrieval 没有完全追平倒排分支的词面激活,但 Order HR@350 从 0.2215 提升到 0.5482,Click HR@350 从 0.2914 提升到 0.6055。
SFT 消融显示:去掉 Stage 2 后 Total IHR@350 从 0.1340 掉到 0.0030,说明 Stage 2 的 query-SID 到 item-SID 共现路由是 reserved slot 生效的核心;去掉 Stage 1 主要影响 HR;Stage 0 对可解释性和位置偏置有支撑。
5.4 线上 A/B
| 线上替换配置 | Item CTR | Buyer | Order |
|---|---|---|---|
| 替换倒排索引分支 | +0.074% | +0.450% | +0.710%† |
| 替换近乎全部召回分支 | +0.821%† | -0.028% | +0.255% |
第一组实验替换倒排索引分支,Order 显著提升 0.710%。第二组进一步替换 dense 分支,CTR 显著提升 0.821%,Buyer 与 Order 无显著变化,说明单个生成式模型可以覆盖更大范围召回,而不明显损伤转化。
行业拆分中,Top 20 行业有 16 个 CTR 正向,平均 +1.00%。增益集中在女鞋、内衣、玩具、男装、女装、美妆等属性结构丰富的行业,符合 KAE 对品牌、风格、人群、颜色等属性词更敏感的机制解释。
优势与局限
优势:
把生成式召回的 SID 从不可解释量化 code 改成属性词锚定 code,运营和模型共享同一套语义接口。
reserved slot 把“新词绑定目标商品集合”从模型更新问题改成词典和索引更新问题,贴近倒排索引的生产可编辑性。
线上实验覆盖单分支替换和近全召回替换,证明方案不只是在离线 HR 上可行。
局限:
浅层排序能力不如 OneSearch,Order MRR@350 为 0.0880,明显低于 OneSearch 的 0.1333。
词级激活能力仍低于 BM25 倒排分支,Total IAR@350 为 0.5530,未达到 BM25 的 0.7610。
方案依赖高质量生产属性词典、属性抽取、主商品词优先级和行为统计;这些上游资源的质量会直接影响 SID。
reserved slot 只提供可生成和自路由能力,不是硬约束保证;论文也明确用 intervention probe 来量化其强度。