← 返回论文列表
🔵 快手电商 · 端到端生成式搜索 · 工业落地

OneSearch:第一个工业部署的电商搜索端到端生成式框架

OneSearch: A Preliminary Exploration of the Unified End-to-End Generative Framework for E-commerce Search

作者
Ben Chen, Xian Guo 等 · 快手电商搜索团队
年份
2025
来源
arXiv 2509.03236
核心成果
CTR +1.67% · 订单量 +3.22% · 运营成本 -75.40%
💬
一句话总结
OneSearch 是快手首个工业部署的电商搜索端到端生成式框架,通过 RQ-OPQ 层次量化编码(保留商品独特属性)+ 三视图用户行为序列注入(User ID 构建/显式短序列/隐式长序列)+ 多阶段 SFT 与自适应奖励系统,将传统多阶段级联架构(召回-粗排-精排)统一为一个 Transformer encoder-decoder 模型,在快手商城搜索 A/B 测试中实现商品 CTR +1.67%、买家数 +2.40%、订单量 +3.22%,同时将运营成本降低 75.40%、MFU 从 3.26% 提升至 27.32%。
🎯
§1 背景与动机

论文:OneSearch: A Preliminary Exploration of the Unified End-to-End Generative Framework for E-commerce Search

机构:快手(Kuaishou),电商搜索算法团队

发表:arXiv 2509.03236,2025

链接:arxiv.org/abs/2509.03236

1.1 传统多阶段级联架构(MCA)的根本局限

电商搜索系统的目标是:在用户输入搜索词后,从数亿候选商品中,在 1 秒内返回同时满足语义相关性个性化偏好的商品列表。为此,传统系统普遍采用多阶段级联架构(Multi-stage Cascading Architecture, MCA)

传统 MCA 搜索流程

全量候选池
~10亿商品
召回阶段
(EBR 向量检索)
→ 万级候选
粗排阶段
(轻量模型)
→ 千级候选
精排阶段
(复杂模型)
→ 百级结果

MCA 通过逐步收窄候选池,平衡了计算效率和排序精度。但它存在两个根本性缺陷:

缺陷 1:计算碎片化(Fragmented Compute)

绝大多数 serving 资源被消耗在各阶段之间的通信和存储,而非真正的数值计算。每一阶段需要独立的模型服务、特征存储、候选传递——系统越复杂,浪费越严重。

量化表现:快手 MCA 的 MFU(模型 FLOPs 利用率)仅为 3.26%,绝大多数算力被浪费在碎片化的通信开销上。

缺陷 2:优化目标冲突(Objective Collision)

召回阶段追求高召回率(尽量不漏掉相关商品),精排阶段追求高精度(尽量把最好的排最前)。两者目标本质上存在冲突,且精排只能对召回/粗排的幸存者重排——如果用户真正想要的商品在召回阶段就被过滤,后续再好的精排也无能为力。

实验验证:论文发现粗排阶段倾向于聚合高曝光商品(HitRate 高但 MRR 低),而精排只能在此基础上重排,这是 MCA 性能天花板的根源。

Figure 1: OneSearch 端到端框架 vs 传统 MCA 对比
Figure 1(论文原图):OneSearch 端到端生成式框架(左)与传统 MCA(右)的对比。端到端框架将召回+精排统一为一个模型的生成过程,从根本上消除阶段间目标冲突和计算碎片化。

1.2 电商搜索场景的独特挑战

与视频推荐(OneRec)不同,电商搜索面临三个额外的核心挑战,导致推荐领域的 GR 方法无法直接迁移:

挑战 1:商品文本噪声严重

商家为了增加曝光,会在商品标题中堆砌大量无关关键词(如"男女通用 学生 成人 老人 礼物 送父母...")。这些语义顺序弱、冗余噪声多的文本会严重误导 SID 的编码质量,导致同类商品的 SID 聚类混乱。

挑战 2:强相关性约束

搜索查询通常只有 2-3 个关键词(如"耐克跑鞋 男 42码"),任何一个属性不匹配都会导致严重的相关性问题。传统基于 SID 的 GR 模型倾向于学习共享的 SID 信息,会丢失每个商品的独特属性(如"42码"这一关键信息),破坏查询-商品的相关性约束。

挑战 3:用户搜索意图隐含

用户输入的搜索词往往非常简短,背后的真实购买意图需要结合用户历史行为来推断。例如同样搜索"跑鞋",一个马拉松选手和一个休闲跑步用户的真实需求完全不同,必须将 query 与用户画像有效融合。

生成式搜索 vs 推荐的根本差异

如 Figure 3 所示:推荐的输入输出都是闭合词汇 item,纯 SID 方法可行;查询建议的输入输出都是开放词汇文本,Transformer 直接生效;但搜索的输入是开放词汇(query 文本),输出是闭合词汇(商品 SID)——这种混合开-闭词汇的特性使得两种方法都不能直接套用。

Figure 3: 推荐/搜索/广告/查询建议输入输出差异对比
Figure 3(论文原图):推荐、搜索/广告、查询建议和导航栏四类任务的输入-输出词汇差异。电商搜索(输入开放词汇 query → 输出闭合词汇 SID)是最特殊的混合类型,现有 GR 方法无法直接适用。
OneSearch 的定位:业界首个工业部署的电商搜索端到端生成式框架。之前 OneRec(视频推荐)、OneSug(查询建议)、EGA(广告)均已落地,但电商搜索因其独特挑战(强相关性约束 + 混合词汇类型)一直是空白,OneSearch 填补了这一空缺。
⚙️
§2 方法详解:OneSearch 四大模块
Figure 4: OneSearch 整体框架图
Figure 4(论文原图):OneSearch 框架总览。四个模块从商品表示、用户建模、架构设计、训练优化四个维度协同解决电商搜索端到端生成的核心挑战。

2.1 KHQE:关键词增强层次量化编码

KHQE(Keyword-enhanced Hierarchical Quantization Encoding)是 OneSearch 的商品/查询表示模块,解决两个核心问题:(a) 商品文本噪声多、属性无序;(b) 普通 RQ-VAE/RQ-Kmeans 会丢失商品的独特属性。它分三步构建 SID:

Step 1:协同-语义对齐表示

首先训练一个对齐编码器,使商品和查询的 embedding 同时反映内容语义和用户行为协同信号。训练数据来自真实用户搜索日志,包含 query-query、item-item、query-item 三类配对(由 ItemCF 和 Swing 挖掘)。

对齐总损失为:

$$\mathcal{L}_{\text{align}} = \lambda_1 \cdot \mathcal{L}_{q2q} + \lambda_2 \cdot \mathcal{L}_{i2i} + \lambda_3 \cdot \mathcal{L}_{q2i} + \lambda_4 \cdot \mathcal{L}_{\text{rank}} + \lambda_5 \cdot \mathcal{L}_{\text{rel}}$$
符号说明
  • $\mathcal{L}_{q2q}, \mathcal{L}_{i2i}$:query-query / item-item 对比损失,拉近协同相似 pair 的表示
  • $\mathcal{L}_{q2i}$:query-item 对比损失,使 embedding 反映真实业务相关性
  • $\mathcal{L}_{\text{rank}}$:margin loss,区分不同行为级别(曝光 / 点击 / 下单)的 query-item pair
  • $\mathcal{L}_{\text{rel}}$:相关性校正损失,对相似度阈值附近的样本用 LLM 打分并让 BGE 模型拟合该得分
  • $\lambda_i$:各损失的调节权重

Step 2:核心关键词增强

商品文本中充斥大量卖家为刷曝光而堆砌的无关词。KHQE 使用命名实体识别(NER)从快手电商平台中识别 18 类结构化属性(品牌、材质、适用人群、场景等),挖掘过去 1 年的点击 query-item 对作为标注数据,用 Qwen-VL 为每个商品识别对应的核心关键词。

最终查询和商品的增强表示为:

$$e_q^o = \frac{1}{2}\!\left(e_q + \frac{1}{m}\sum_{i=1}^{m} e_k^i\right), \quad e_i^o = \frac{1}{2}\!\left(e_i + \frac{1}{n}\sum_{j=1}^{n} e_k^j\right)$$
符号说明
  • $e_q, e_i$:查询/商品的原始 BGE 编码向量
  • $e_k^i$:第 $i$ 个核心关键词对应的向量(与商品分布对齐)
  • $m, n$:查询/商品对应的核心关键词数量
  • $e_q^o, e_i^o$:关键词增强后的最终表示,均值融合保证关键词权重不超过原始内容
💡 举例:关键词增强如何减少噪声?

一个商品的原始标题可能是:「耐克 2024 新款男女通用跑步鞋 学生 情侣 父母礼物 减震防滑 42码 黑色 送礼首选」

没有关键词增强时:BGE 编码器看到的是整段文本,"男女通用"、"礼物"、"情侣"等无关词会稀释"耐克"、"42码"、"跑步"等核心属性的权重,导致该商品被聚类到混合类别下。

关键词增强后:NER 识别出核心属性:品牌=耐克、尺码=42码、类型=跑步鞋、颜色=黑色。这 4 个关键词的向量平均后与原始 embedding 各取 50% 权重,使最终表示中核心属性占主导,编码结果更精准,RQ-Kmeans 聚类时同类商品(同品牌+同功能)会被分配相近的 SID 前缀。

Step 3:RQ-OPQ 混合量化

KHQE 的核心创新:将 RQ-Kmeans(处理层次语义)和 OPQ(处理独特属性的残差)结合使用。

RQ-Kmeans:层次语义 SID(3层)

用残差量化 K-means 对 $e_i^o$ 进行 3 层层次聚类,生成 3 个 SID 码字。CodeBook 配置:(4096, 1024, 512)——前层码本大以覆盖粗粒度类别,后层码本小以区分细节。仅对第 3 层使用 balanced k-means(全层 balanced 会导致层次聚类坍缩)。

OPQ:独特属性 SID(2层)

RQ-Kmeans 量化后的残差向量包含商品独特属性(如"42码"这一信息)。用 OPQ(Optimized Product Quantization)对残差量化,生成 2 个额外码字(256-256)。最终每个商品的完整 SID 长度为 5 层,前 3 层捕获层次语义,后 2 层保留独特属性。

RQ-OPQ vs 纯 RQ-Kmeans(实验数据):在 CodeBook 利用率(CUR)和独立编码率(ICR)两个指标上,RQ-OPQ 均显著优于纯 RQ-Kmeans。加入关键词增强后,3 层配置的 ICR 提升 57.15%,验证了 OPQ 残差编码对保留商品独特属性的有效性。同时 RQ-OPQ 面对新商品加入(如 11.11 大促)时,CUR 下降幅度(0.43%)远小于纯 RQ-Kmeans(1.11%)。

2.2 多视图用户行为序列注入(Mu-Seq)

为了让搜索模型理解用户的真实购买意图,OneSearch 从三个视角将用户历史行为注入模型:

Figure 5: 不同层次量化编码对商品的表示
Figure 5(论文原图):不同层次量化编码配置的商品表示对比。RQ-OPQ (2/256) 实现了最佳的层次语义表示和独特属性保留,其他配置(4层 OPQ、全层 OPQ)因过度量化导致大量商品聚集到相同 SID 下。

视角 1:行为序列构建的 User ID

传统方法(如 TIGER)用随机哈希为每个用户分配一个固定 ID,导致不同行为偏好的用户可能获得相同 ID,个性化能力极弱。OneSearch 提出用行为序列加权平均来构建 User ID:

$$SID_{\text{short}} = \left\lceil \sum_{i=1}^{m} \lambda_i \cdot SID_{s_i} \right\rceil, \quad \text{where}\ \lambda_i = \frac{\exp(\sqrt{i})}{\sum_{i}^{m}\exp(\sqrt{i})}$$
$$SID_{\text{long}} = \left\lceil \sum_{j=1}^{n} \mu_j \cdot SID_{l_j} \right\rceil, \quad \text{where}\ \mu_j = \frac{\exp(\sqrt{j})}{\sum_{j}^{n}\exp(\sqrt{j})}$$
符号说明
  • $Seq_{\text{short}} = \{s_1, \ldots, s_m\}$:用户最近点击的 $m$ 个商品
  • $Seq_{\text{long}} = \{l_1, \ldots, l_n\}$:用户长期历史行为序列(按时间顺序)
  • $\lambda_i, \mu_j$:指数递增权重(越近的行为权重越大),用 $\sqrt{i}$ 代替线性 $i$ 以减缓衰减速度
  • $SID_{s_i}$:第 $i$ 个商品的 RQ-OPQ SID 向量
  • $\lceil \cdot \rceil$:取整操作,将连续的加权平均转化为离散 SID 表示
  • User ID 最终长度为 10(短序列和长序列各贡献 5 个 token)
💡 举例:行为序列 User ID 如何区分不同用户?

假设有两个用户,都搜索过"跑鞋":

用户 A(马拉松选手):最近 5 次点击 = [耐克 Zoom X, 专业马拉松鞋垫, 压缩裤, 能量胶, 运动水壶]。这些商品的 SID 加权平均后,User ID 的语义重心在「专业运动装备」聚类附近。

用户 B(休闲跑步者):最近 5 次点击 = [回力帆布鞋, 运动T恤, 健身房会员卡, 瑜伽垫, 耳机]。User ID 的语义重心在「休闲运动生活」聚类附近。

推理时:模型输入两个用户的 User ID + 相同 query "跑鞋",会因为 User ID 不同而生成不同的商品 SID 列表——用户 A 倾向于专业竞技跑鞋,用户 B 倾向于舒适休闲跑鞋。这是随机哈希 ID 无法做到的。

视角 2:显式短期行为序列(Explicit Short Seq)

直接将用户最近的历史查询序列($Seq_{\text{query}}$)和短期点击商品序列($Seq_{\text{short}}$)的 SID 拼接到 prompt 中,作为 encoder 的显式输入。模型可以直接"看到"用户最近在搜什么、点了什么,学习其近期偏好变化。同时使用滑动窗口数据增强(最大窗口 5)生成多个训练样本,帮助模型学习兴趣变化规律。

视角 3:隐式长期行为序列(Implicit Long Seq)

长期历史序列可能包含数千条记录($|Seq_{\text{long}}| \sim 10^3$),无法直接拼接到 prompt 中。OneSearch 设计了一种聚合压缩方式:将每个商品的 RQ-Kmeans 3 层聚类中心向量按层求和,再通过 QFormer 压缩为固定长度的隐式表示。

$$\mathbf{M}_{\text{click}} = \left\{\sum_{i=1}^{m}\mathbf{Item}_{emb}^{L_1},\ \sum_{i=1}^{m}\mathbf{Item}_{emb}^{L_2},\ \sum_{i=1}^{m}\mathbf{Item}_{emb}^{L_3}\right\}$$
$$\mathbf{Q} = \text{QFormer}(\mathbf{M}_{\text{click}},\ \mathbf{M}_{\text{order}},\ \mathbf{M}_{\text{RSU}}), \quad \mathbf{Q} \in \mathbb{R}^{N_M \times 768}$$
符号说明
  • $\mathbf{M}_{\text{click}}, \mathbf{M}_{\text{order}}, \mathbf{M}_{\text{RSU}}$:分别为点击/下单/搜索相关行为序列的层级聚合向量
  • $\mathbf{Item}_{emb}^{L_k}$:商品在第 $k$ 层 RQ-Kmeans 聚类中心的 embedding
  • $\mathbf{Q}$:经 QFormer 压缩后的长期行为隐式表示,维度为 $N_M \times 768$
  • $N_M$:QFormer 输出的固定 token 数量
  • 三类行为(点击/下单/RSU)的权重不同,隐式反映了不同强度的行为信号

2.3 统一 Encoder-Decoder 架构

OneSearch 基于 BART(或 mT5 / Qwen3)的 encoder-decoder 架构。Encoder 接收用户和查询的所有特征,Decoder 自回归生成商品 SID 列表。

模型的完整输入 $\mathbf{X}_U$ 包含:

OneSearch Encoder 输入构成

$[BOS]$
+
User ID
(行为序列构建,10 token)
+
Query 文本
+ Query SID
+
短期行为序列
(历史查询 + 点击商品 SID)
+
隐式长期序列
$\mathbf{Q}$(QFormer 压缩)
+
用户画像
$\mathcal{U}$
Decoder
生成 top-K 商品 SID

推理公式:

$$\mathcal{I} := \mathcal{M}(uid,\ q,\ SID_q,\ Seq_q,\ Seq_{\text{short}},\ Seq_{\text{long}}^{emb},\ \mathcal{U})$$
符号说明
  • $uid$:行为序列构建的用户 ID(10 token)
  • $q$:输入查询文本;$SID_q$:查询的 KHQE 编码 SID
  • $Seq_q$:用户历史查询序列;$Seq_{\text{short}}$:短期点击商品序列
  • $Seq_{\text{long}}^{emb}$:QFormer 压缩后的长期行为隐式向量 $\mathbf{Q}$
  • $\mathcal{U}$:用户画像(平台人群标签)
  • $\mathcal{I}$:生成的商品 SID 列表(beam search 大小 = 512)
Beam Search 策略选择:OneSearch 测试了约束 beam search(只输出合法 SID)和非约束 beam search。与 GRID 的发现一致,两种策略性能相近,但约束 beam search 解码复杂度更高(需维护 trie 树)。最终在线部署使用 beam size = 512 的非约束 beam search,平衡了生成质量和延迟。

2.4 PARS:偏好感知奖励系统

电商搜索需要同时满足相关性约束(搜"耐克 42 码"不能出现阿迪达斯)和个性化偏好(同样的鞋,不同用户排序不同)。PARS 通过三阶段 SFT + 自适应奖励模型来平衡这两个目标。

三阶段监督微调(Multi-stage SFT)

阶段 1:语义内容对齐

三个子任务:(a) query/item 文本 → SID(文本到 ID 的映射);(b) SID → 原始文本(ID 到文本的逆映射);(c) 文本 → 品类信息(强化相关性)。前两个任务建立 SID ↔ 文本的双向对齐,第三个确保 SID 的品类语义准确。

阶段 2:共现同步

忽略用户特征,只学习 query ↔ item 的内在语义和协同关系。包含:query ↔ item 互相预测,以及 query SID ↔ item SID 的互相预测。使用大规模在线交互语料,学习搜索场景中商品的语义协同关系。

阶段 3:用户个性化建模

加入完整用户信息(User ID + query + $SID_q$ + 短期序列 + 长期序列)作为输入,以目标商品 SID 为标签,指导模型学习个性化的用户-查询-商品匹配。短期序列使用滑动窗口增强(窗口最大 5),生成额外训练样本来学习兴趣演变。

💡 举例:三阶段 SFT 如何循序渐进地建立搜索理解?

阶段 1(语义对齐):模型学到"query='耐克跑鞋'对应 SID=[142, 37, 89, 201, 55]",以及"SID=[142, 37, 89, ...]的商品是'耐克 Zoom X跑鞋'"。模型此时能在文本和 SID 之间双向翻译,但还不知道用户偏好。

阶段 2(共现同步):模型大量学习"搜了'跑鞋'的用户会点什么商品",内化了查询-商品的协同关系(比如"马拉松鞋"和"跑步鞋"在用户行为上高度相关,应该聚在一起)。

阶段 3(个性化):加入具体用户信息。同一查询"跑鞋",对于历史主要购买专业装备的用户,输出倾向于竞技跑鞋 SID;对于历史购买休闲用品的用户,输出倾向于休闲跑鞋 SID。三个阶段层层递进,让模型逐步具备:理解 SID → 理解商品关系 → 理解用户偏好。

自适应奖励系统(Adaptive Reward System)

PARS 的奖励系统通过两个阶段让模型超越 SFT 学到的分布:

① 用户行为 6 级权重:将用户交互分为 6 个层次,分配基础奖励权重 $\lambda = [2.0, 1.5, 1.0, 0.5, 0.2, 0.0]$:

  • Level 1:搜索场景内购买的商品(最强正信号)
  • Level 2:推荐场景同品类购买的商品
  • Level 3:点击的商品
  • Level 4:曝光未点击的商品
  • Level 5:同品类未曝光商品
  • Level 6:其他品类随机商品(无信号)

② 校准 CTR/CVR,计算自适应奖励:

$$Cnt_T = \log\!\left((Cnt_{\text{pos}}+10)\cdot(Cnt_{\text{clk}}+10)\cdot(Cnt_{\text{order}}+10)\right)$$
$$Ctr_i = \frac{\log(Cnt_{\text{clk}}+10)}{Cnt_T}, \quad Cvr_i = \frac{\log(Cnt_{\text{order}}+10)}{\log(Cnt_{\text{clk}}+10)}$$
$$r(q, i) = 2\lambda \cdot \frac{Ctr_i \cdot Cvr_i}{Ctr_i + Cvr_i}$$
符号说明
  • $Cnt_{\text{pos}}, Cnt_{\text{clk}}, Cnt_{\text{order}}$:商品的曝光次数、点击次数、下单次数
  • $Cnt_T$:综合流量规模的对数归一化,消除"仅曝光一次就点击"导致 CTR=100% 的偏差
  • $r(q,i)$:最终调和平均奖励分,同时考虑 CTR 和 CVR,避免偏重其中一项
  • $\lambda$:行为等级对应的基础权重($[2.0, 1.5, 1.0, 0.5, 0.2, 0.0]$)

③ Reward Model + List-wise DPO 混合排序:先训练一个三塔 SIM 奖励模型(CTR/CVR/CTCVR 三个 tower + 相关性分 $S_{\text{Rel}}$,权重系数 10 倍以确保相关性约束),用奖励模型对 OneSearch 生成的 beam search 结果重排,收集排序变化样本做 list-wise DPO 训练。DPO 优化目标:

$$\hat{r}_\theta(x_u, i_{w/l}) = \beta \log \frac{\pi_\theta(i_{w/l}|x_u)}{\pi_{\text{ref}}(i_{w/l}|x_u)}$$
符号说明
  • $\hat{r}_\theta(x_u, i_w)$:语言模型隐式定义的偏好奖励,正样本 $i_w$(点击/升排的商品)应高于负样本 $i_l$
  • $\pi_\theta, \pi_{\text{ref}}$:当前模型和参考模型的条件概率,比值体现偏好程度
  • $\beta$:KL 散度系数,控制新模型与参考模型的偏离程度
  • $rw_\Delta$:正负样本奖励差,差值越小,损失权重越大(鼓励区分细微差异)
两阶段 RL 训练节奏:第一阶段(奖励模型引导)每周训练一次,使模型对齐 MCA 排序模型的分布;第二阶段(用户真实交互对齐)尽量做到流式更新,让模型持续从最新用户行为中学习,突破 MCA 性能上限。全球大促期间(11.11、6.18)会加强第一阶段奖励模型的训练频次。
📊
§3 实验结果

3.1 实验设置

数据集

快手商城搜索平台 2025 年 5-8 月用户交互数据(约 10 亿 PV),训练集 90 天,测试集最后 1 天,包含点击和下单行为两类。

评估指标

离线指标:HitRate@KMRR@K(K=350/10),模拟真实 Top-K 召回+排序场景。在线指标:商品 CTR、PV CTR、PV CVR、买家数、订单量(均为相对于在线 MCA 的变化量)。

基线

Online MCA:快手商城搜索线上多阶段级联系统(召回+粗排+精排),包含数千特征和多个独立模型。论文未构建离线 MCA 仿真,直接与线上系统对比,更真实。

实现细节

基座模型:BART-B(线上部署选择,已在快手多个场景验证)。线上实际使用模型参数量至少是 BART-B 的 100 倍(保密)。Beam size = 512,SFT batch = 512,DPO batch = 128,RQ-OPQ 配置:(4096, 1024, 512 | 256, 256)。

3.2 离线性能对比(Table 5)

方法Order HR@350Order MRR@350Click HR@350Click MRR@350
Online MCA(基线)51.74%19.26%64.40%16.89%
MCA w/o ranking(仅召回+粗排)75.75%4.19%80.23%3.00%
OPQ only (8/256)19.43%9.55%22.57%7.42%
RQ-Kmeans (1024-1024-1024)57.39%9.12%63.63%7.46%
RQ-Kmeans (4096-1024-512)59.58%14.29%62.49%11.82%
+ keywords62.38%14.30%66.14%12.10%
+ l3 balanced63.16%13.59%68.26%11.67%
+ Adaptive RS64.33%16.11%68.94%13.80%
RQ-OPQ (2/256)65.05%15.33%68.88%12.90%
RQ-OPQ (2/256) + Adaptive RS(OneSearch)66.46%18.38%71.06%16.33%
关键发现:OneSearch 在 HR@350 上大幅超越 Online MCA(66.46% vs 51.74%,Order 场景提升 28.5%),MRR@350 达到相当水平(18.38% vs 19.26%)。这说明 OneSearch 能召回更多用户真正想要的商品,同时个性化排序能力基本追平了拥有数千特征的 MCA 精排。MCA "仅粗排" 的 MRR@350 仅 4.19%,印证了精排的重要性,也说明 OneSearch 真正做到了召回+精排的统一。

3.3 消融研究

行为序列注入消融(Table 6)

消融配置Order HR@350Order MRR@350Click HR@350Click MRR@350
OneSearch(完整)66.46%18.38%71.06%16.33%
w/o User SIDs(改用随机哈希 ID)-0.94%-0.37%-1.72%-0.36%
w/o 短期行为序列($Seq_{\text{short}}$)-3.43%-1.53%-4.15%-1.32%
w/o 隐式长期序列($Seq_{\text{long}}^{emb}$)-2.26%-1.01%-3.00%-1.05%
w/o 滑动窗口增强-1.95%-0.81%-1.80%-0.70%

短期行为序列贡献最大(HR -3.43%~-4.15%),说明近期点击行为是搜索意图推断的最强信号。隐式长期序列次之(HR -2.26%~-3.00%),行为序列构建的 User ID 贡献相对小但不可忽略。滑动窗口增强验证了数据增强对学习兴趣演变的有效性。

RQ-OPQ 配置消融(Table 7)

RQ-OPQ (2/256) 是最优配置。增加 OPQ 层数(4/256)因序列变长和解码复杂度上升,反而使性能下降 2-3%。对全部 embedding 使用 OPQ(4*2/256、4*4/256)效果极差,类似于全层 balanced k-means 导致的层次聚类坍缩——过度量化破坏了层次语义结构,使大量商品被聚集到相同 SID 下。

3.4 在线 A/B 测试(Table 8)

方法Search PVsItem CTRPV CTRPV CVRBuyer 数Order 数
MCA w/o ranking--9.97%---28.78%-39.14%
OneSearch¹(无 RQ-OPQ 和长序列)与 MCA 相当(统计不显著)
OneSearch²(完整配置)-+1.45%+1.40%---
OneSearch²_RM(+奖励模型重排)+1.10%+1.67%+3.14%+1.78%+2.40%+3.22%
A/B 测试亮点:
  • 纯 OneSearch²(无奖励模型)已在 Item CTR 上超越 Online MCA,证明端到端生成式方法本身的排序能力
  • 加入奖励模型重排后(OneSearch²_RM),订单量提升 +3.22%,买家数 +2.40%,在大规模搜索场景中这是显著增量
  • "仅召回+粗排"版本的订单量暴跌 -39.14%,间接验证了 OneSearch 的精排能力已达到完整 MCA 水平

3.5 计算效率与工程收益

Figure 7: MFU 和 OPEX 对比
Figure 7(论文原图):MFU 和运营成本(OPEX)对比。OneSearch 将 MFU 从 3.26% 提升至 27.32%(提升 8.4×),同时将运营成本降低 75.40%,从根本上解决了 MCA 的计算碎片化问题。

MFU 提升:3.26% → 27.32%

MCA 的绝大多数算力消耗在各阶段间的通信、存储和候选传递,实际有效计算占比极低(仅 3.26%)。OneSearch 将所有计算集中在一个 Transformer 模型中,MFU 达到 27.32%——接近 LLM 在 H100 上的典型水平(约 40%),相当于以更少的总算力实现了更好的效果。

OPEX 降低 75.40%

消除多个独立模型服务(召回 embedding 服务 + 粗排 + 精排 + 独立相关性模型)及其对应的存储、通信基础设施,OneSearch 的运营成本仅为 MCA 的 24.60%。对于日均数千万 PV 的平台,这是数量级的成本节省。

3.6 人工评估与进一步分析

随机抽取 200 个 query,提取 3200 个 query-item pair,由专家评估三个维度(相关性评级:Good / Fair / Bad):

  • 页面优质率(整体用户体验):OneSearch² 提升 +1.03%
  • 商品质量(排除假冒、图文不符、价格异常):提升 +2.12%
  • 查询-商品相关性:提升 +1.87%(主题和核心关键词均匹配的 Good 比例)
💡 举例:OneSearch 如何提升长尾搜索和冷启动场景?

MCA 的困境:对于冷启动 query(用户第一次搜索某个品类)或长尾商品(历史交互数据少),MCA 的召回模型(基于用户历史向量相似性)几乎无法找到相关商品,精排模型因无历史特征而退化为流行度排序。

OneSearch 的优势:论文发现在热门 query(top 频率)OneSearch 相对 MCA 提升 0.37%,普通 query 提升 1.27%,长尾/冷启动 query 提升高达 3.13%。这是因为 OneSearch 的 KHQE 基于内容语义而非协同统计,能通过关键词-语义对齐理解新品类;多阶段 SFT 中的 Co-occurrence 阶段学习了大量 query-item 语义对,具备处理未见过的 query 的能力。

行业维度分析:Top-30 行业中 28 个行业 CTR 上升,平均提升 2.49%,说明 OneSearch 在几乎所有商品类目下都有增益,而非仅在某些垂类有效。

💡
§4 总结与个人理解

4.1 核心亮点

创新 1:RQ-OPQ 混合编码

RQ-Kmeans(层次语义)+ OPQ(残差独特属性)+ 关键词增强(消除噪声)的组合是 OneSearch 最核心的技术贡献。它解决了 SID 编码的一个本质矛盾:共享 SID 前缀有利于层次语义共享,但会丢失每个商品的独特属性。RQ-OPQ 通过在残差上补充 OPQ 编码同时保留了两者。

创新 2:三视图用户建模

User ID 构建(行为序列加权平均)+ 显式短序列(prompt 文本拼接)+ 隐式长序列(QFormer 压缩)的三层次建模,在不同的信息密度和时效性之间取得平衡。这套框架对推荐场景同样适用,是用户建模的一个通用范式。

创新 3:PARS 两阶段 RL

第一阶段(奖励模型引导)确保模型不离 MCA 分布太远,第二阶段(用户真实交互)突破 MCA 上限。这种"先对齐后超越"的训练策略,是解决端到端 GR 从零训练不稳定问题的实用方案,值得借鉴。

工程价值:效率飞跃

MFU 从 3.26% 到 27.32%,OPEX 降低 75.40%,这不仅是学术成果,更是工业落地的核心说服力。说明端到端 GR 框架不只是效果更好,还在算力利用率上有质的提升,对大规模搜索系统有根本性的 ROI 优势。

4.2 不足与局限

  • 商品 SID 需要预计算:RQ-OPQ tokenizer 需要离线构建,大促期间新品爆发会带来 SID 分布漂移(虽然实验显示 CUR/ICR 下降很小,但长期积累效应未充分探讨)。
  • 奖励模型依赖 MCA 数据:第一阶段 RL 的奖励模型基于 MCA 系统收集的训练数据,天然存在 MCA 分布偏差,需要第二阶段用户真实交互来矫正,增加了训练管道复杂度。
  • beam search 搜索空间大:5 层 SID(3层 RQ-Kmeans + 2层 OPQ)的 beam size=512 解码,计算开销远高于简单的 3 层 SID,序列长度和解码速度的 trade-off 需要持续优化。
  • 跨场景泛化:论文部署在快手商城搜索/详情页/首页三个场景,但三个场景的用户行为分布差异显著(首页偏浏览、商城偏意图购买),OneSearch 是否需要针对不同场景单独训练未详细讨论。

4.3 启发与对比

与 OneRec 的对比:OneRec(视频推荐)是纯闭合词汇输入输出,SID 编码相对简单(3层 RQ-VAE/Kmeans),奖励系统使用 P-Score + GRPO。OneSearch 面向电商搜索,需要处理开放词汇输入(query 文本),因此必须引入 KHQE(关键词增强 + RQ-OPQ)来应对强相关性约束,同时放弃 GRPO(在搜索场景引入不相关 SID),改用 list-wise DPO + 用户交互直接训练。这是两篇论文在技术路线上的核心差异,体现了搜索和推荐在 GR 落地路径上的本质不同。
给电商推荐/搜索系统的启发:OneSearch 的成功说明,在计算资源允许的情况下,端到端生成式框架相比 MCA 有全面优势——不只是效果更好,还有成本更低、目标更一致。但核心难点在于 SID 编码质量(RQ-OPQ 保留独特属性)和训练稳定性(多阶段 SFT 循序渐进),缺一不可。
OneSearch 是快手首个工业部署的电商搜索端到端生成式框架,通过 RQ-OPQ 层次量化编码(保留商品独特属性)+ 三视图用户行为序列注入(User ID 构建/显式短序列/隐式长序列)+ 多阶段 SFT 与自适应奖励系统,将传统多阶段级联架构(召回-粗排-精排)统一为一个 Transformer encoder-decoder 模型,在快手商城搜索 A/B 测试中实现商品 CTR +1.67%、买家数 +2.40%、订单量 +3.22%,同时将运营成本降低 75.40%、MFU 从 3.26% 提升至 27.32%。