1. 研究背景与动机¶
搜索查询建议(Query Suggestion)是电商搜索系统的核心模块,根据用户输入的前缀(prefix)推荐相关的完整查询词,帮助用户精准定位需求。传统方法通常采用多阶段级联架构(Multi-stage Cascading Architecture, MCA):
- 召回阶段(Recall):从约 $10^6$ 候选中筛选
- 粗排阶段(Pre-ranking):约 $10^4$ 候选
- 精排阶段(Ranking):约 $10^2$ 候选
这种架构存在三大问题: 1. 前一阶段的性能决定了下一阶段的上限 2. 各阶段优化目标不一致,导致整体次优 3. 对未见前缀(unseen prefix)的长尾场景表现不佳
与视频推荐等闭集任务不同,查询建议的输入(prefix)和输出(query)都是开放词汇(open-vocabulary),这使得 OneRec [13] 等视频推荐领域的端到端方案无法直接迁移。OneSug 的目标是构建首个面向电商查询建议的端到端生成式框架。
2. OneSug 框架¶
OneSug 包含三个核心组件:
2.1 Prefix2Query 表示增强(PRE)¶
用户输入的前缀通常很短(通常只有一个词),语义模糊(如"apple"可能指水果或公司)。PRE 模块通过三个步骤增强前缀表示:
(1)Prefix-Query 对齐
基于 BGE(bge-base-zh-v1.5)作为初始表示模型,通过对齐训练融入电商检索知识:
$$E_{\text{trigger}} = \text{BGE}(T_{\text{trigger}}),$$ $$E_{\text{target}} = \text{BGE}(T_{\text{target}}),$$ $$\mathcal{L}_{\text{align}} = \text{Batch-Contrastive}(E_{\text{trigger}}, E_{\text{target}}).$$
使用 ItemCF [41] 和 Swing [50] 等检索模型生成高质量的 prefix2query 和 query2query 对,选择语义相关的配对数据训练对齐后的 BGE。
(2)前缀表示增强
对给定前缀 $p$,利用对齐后的 BGE 模型从共现查询中获取增强表示:
$$e_q^c = \frac{1}{k}\sum_{i=1}^{k} e_{q_i}^c,$$ $$e_p^* = (1-w) \cdot e_p + w \cdot e_q^c \quad \text{where } w \in (0,1),$$
其中 $e_p$ 是原始前缀嵌入,$e_q^c$ 是共现查询嵌入的均值,$w$ 在训练时设为 0.5。
(3)层级量化语义 ID 生成器(RQ-VAE)
采用 RQ-VAE [51] 将增强后的前缀嵌入转换为层级量化语义码,训练目标为:
$$\mathcal{L}(x) := \mathcal{L}_{\text{recon}} + \mathcal{L}_{\text{rqvae}},$$ $$\mathcal{L}_{\text{recon}} := \|x - \bar{x}\|^2,$$ $$\mathcal{L}_{\text{rqvae}} := \sum_{i=0}^{m-1} \|\text{sg}[r_i] - e_{c_i}\|^2 + \beta \|r_i - \text{sg}[e_{c_i}]\|^2,$$
其中 $x$ 和 $\bar{x}$ 分别是 DNN 编码器的输入和解码器的输出,$\text{sg}[\cdot]$ 是 stop-gradient 操作,$r_i$ 是第 $i$ 层残差嵌入,$e_{c_i}$ 是最近质心嵌入的索引。RQ-VAE 的编码器/解码器 block 数 $L=3$,codebook 层数 $C=4$,codebook 大小 $W=512$。
通过语义 ID 进行由粗到细的聚类检索:先匹配相同语义 ID 的高质量查询,再接受共享相同 codeword 的查询,最后基于多样性和相关性筛选 top-$k$ 查询。取 10 条相关查询用于前缀表示增强。
2.2 统一编码器-解码器架构¶
OneSug 采用统一的 Transformer encoder-decoder 架构,直接通过 beam search 生成目标查询:
$$Q := M(p, \mathcal{H}_p, \mathcal{H}_u, \mathcal{U}),$$
其中 $p$ 是用户输入前缀,$\mathcal{H}_p = \{q_1^a, q_2^a, \ldots, q_m^a\}$ 是 prefix2query 增强序列(来自 RQ-VAE),$\mathcal{H}_u = \{q_1^h, q_2^h, \ldots, q_n^h\}$ 是用户历史搜索查询,$\mathcal{U}$ 是用户画像信息。
编码器输入格式为:
$$x_u = \{t_{[\text{CLS}]}, p, t_{[\text{SEP}]}, \mathcal{H}_p, t_{[\text{SEP}]}, \mathcal{H}_u, t_{[\text{SEP}]}, \mathcal{U}\}.$$
编码器使用堆叠的多头自注意力层处理输入,生成历史交互特征 $\mathcal{H} = \text{Encoder}(p, \mathcal{H}_u, \mathcal{H}_p, \mathcal{U})$。解码器以目标查询的 token 为输入,自回归生成候选查询。训练使用 next-token prediction 的交叉熵损失,得到种子模型 $M_t$。
可选用 encoder-decoder 模型(BART [29]、mT5 [48])或 decoder-only 模型(Qwen2.5 [37])作为基座。
2.3 用户偏好对齐:奖励加权排序(RWR)¶
2.3.1 奖励加权排序¶
受 RLHF [31, 38] 启发,将用户在搜索系统中的交互行为划分为六个层级:
| 行为 | 说明 |
|---|---|
| Order | 用户通过特定查询购买商品 |
| Item Click | 用户通过特定查询点击商品 |
| Click | 用户点击特定查询 |
| Show | 特定查询在面板中展示 |
| Not Show | 查询存在于召回结果但未展示 |
| Rand | 排序候选中的随机查询 |
为每个层级分配奖励权重 $r(x_u, q) = \lambda \cdot e^{pi}$,其中 $\lambda$ 为基础权重(各层级分别为 [2.0, 1.5, 1.0, 0.5, 0.2, 0.0]),$pi$ 是同层级内交互查询的比率。
构造九种 $\langle$positive, negative$\rangle$ 对,来自 {Order, Item Click, Click} 的正样本和 {Show, Not Show, Rand} 的负样本。每对的偏好差异为:
$$rw_\Delta = \frac{1.0}{r(x_u, q_w) - r(x_u, q_l)},$$
其中 $q_w$ 是胜出样本,$q_l$ 是失败样本。较小的 $rw_\Delta$ 表示更大的偏好差异。
2.3.2 混合排序框架¶
Pair-wise DPO 损失:
$$\mathcal{L}_{\text{pair-wise}} = -\mathbb{E}\left[\log\sigma\left(rw_\Delta(max(0, \hat{r}_\theta(x_u, q_w) - \hat{r}_\theta(x_u, q_l) - \delta))\right) + \alpha \log\pi_\theta(q_w|x_u)\right],$$
其中:
$$\hat{r}_\theta(x_u, q_{w/l}) = \beta \log \frac{\pi_\theta(q_{w/l}|x_u)}{\pi_{\text{ref}}(q_{w/l}|x_u)},$$
$\delta \gt 0$ 是目标奖励边距,$\alpha$ 控制 SFT 损失的权重。
List-wise 损失(受 S-DPO [10] 和 Plackett-Luce [12, 33] 模型启发):
$$\mathcal{L}_{\text{list-wise}} = -\mathbb{E}\left[\log\sigma\left(-\log\sum_{q_l \in Q_l} \exp\left(rw_\Delta \cdot \max\left(0, \hat{r}_\theta(x_u, q_l) - \hat{r}_\theta(x_u, q_w) - \delta\right)\right)\right) + \alpha \log\pi_\theta(q_w|x_u)\right],$$
其中 $Q_l$ 是负样本集合。list-wise 建模将 pair-wise 对比扩展为完整的偏序排列,配合 margin loss [5] 使模型对训练数据中的噪声更鲁棒。
3. 实验设置¶
数据集¶
从快手电商搜索引擎 2025年2月至2025年3月的在线日志中提取用户交互数据,约1亿 PV。数据跨度32天,前30天用于训练,最后2天作为测试集。
评估指标¶
- HitRate@K:召回性能指标
- MRR(Mean Reciprocal Ranking):排序性能指标
Baseline 方法¶
- MCA(Multi-stage Cascading Architecture):BGE 召回 + DCN [43] 粗排 + DIN [55] 精排
- onlineMCA:线上系统的多阶段级联输出(包含数百种特征的多路召回和复杂排序)
- GRA_SFT / GRA_DPO:生成式检索架构,采用 $\langle$prefix, historical sequence, user profile$\rangle$ 作为输入
实现细节¶
- BGE 版本:bge-base-zh-v1.5
- beam search size:32(线上系统展示16条,beam=32 平衡质量与延迟)
- SFT batch size:512;DPO batch size:128
- prefix2query 取 10 条相关查询,历史查询取 10 条
- 基座模型:BART-B [29](线上部署版本)、BART-L、mT5-S、mT5-B、Qwen2.5-0.5B/1.5B/3B
4. 实验结果¶
4.1 离线性能(Table 2)¶
| Method | Click HR@16 | Click MRR | Order HR@16 | Order MRR |
|---|---|---|---|---|
| MCA | 73.89% | 39.95% | 80.71% | 44.03% |
| onlineMCA | 78.61% | 45.97% | 84.55% | 51.85% |
| GRA_SFT | 73.16% | 40.06% | 79.25% | 44.28% |
| GRA_DPO | 75.50% | 41.19% | 81.68% | 45.30% |
| OneSug_{Bart-B} | 82.14% | 50.55% | 87.40% | 56.34% |
| OneSug_{Bart-L} | 82.84% | 51.27% | 88.12% | 56.80% |
| OneSug_{mT5-S} | 82.01% | 50.40% | 87.26% | 55.87% |
| OneSug_{mT5-B} | 83.63% | 53.01% | 88.19% | 57.63% |
| OneSug_{Qwen2.5-0.5B} | 85.58% | 55.34% | 90.13% | 60.00% |
| OneSug_{Qwen2.5-1.5B} | 89.60% | 60.49% | 94.95% | 63.48% |
| OneSug_{Qwen2.5-3B} | 93.37% | 66.31% | 95.13% | 67.40% |
关键发现:
- MCA 因多阶段信息损失,HitRate 和 MRR 远低于 onlineMCA(后者使用数百种特征的多路召回)
- GRA_DPO 优于 GRA_SFT,但仍不及 onlineMCA,因无法深入挖掘前缀语义丰富性和不同行为层级的偏好差异
- OneSug_{Bart-B} 相比 onlineMCA 在 HR@16 和 MRR 上分别平均提升 3.19% 和 4.54%
- OneSug_{Qwen2.5-3B} 相比 onlineMCA 提升幅度高达 12.67% 和 17.95%
- Encoder-decoder 模型(BART 与 mT5)同规模性能相近;decoder-only 模型(Qwen2.5)随规模增大性能显著提升
4.2 消融实验(Table 3)¶
| Method | Click HR@16 | Click MRR | Order HR@16 | Order MRR |
|---|---|---|---|---|
| OneSug_{list-wise} | 82.14% | 50.55% | 87.40% | 56.34% |
| - w/o margin | 81.63% | 49.70% | 86.91% | 55.63% |
| OneSug_{pair-wise} | 79.39% | 47.42% | 85.12% | 53.01% |
| - w/o margin | 78.81% | 46.89% | 84.62% | 52.57% |
| - w/o $rw_\Delta$ | 77.90% | 44.41% | 84.17% | 49.18% |
| - w/o RWR | 77.28% | 42.28% | 82.48% | 46.66% |
| - w/o PRE&RWR | 73.16% | 40.06% | 79.25% | 44.28% |
关键发现:
- PRE + list-wise RWR 组合使 GR 模型在 HR@16 上平均提升 8.57%,MRR 提升 11.28%
- list-wise 替换为 pair-wise 导致 HR@16 下降 2.52%、MRR 下降 3.23%,说明多负样本有助于学习不同行为层级的偏好差异
- margin loss 和 $rw_\Delta$ 的增量贡献:去除 $rw_\Delta$ 使 HR@16 下降 2.38%,MRR 下降 5.75%
- 去除 RWR 模块使 MRR 大幅下降(42.28% vs 50.55%),说明奖励加权排序是核心
- 去除 PRE 模块导致 HitRate 下降 3.68%、MRR 下降 2.30%
4.3 在线 A/B 测试(Table 4)¶
| Method | IPL | TCP | CTR | Order | Revenue |
|---|---|---|---|---|---|
| OneSug_{pair-wise} | -1.99% | -9.02% | +1.78% | +1.97% | +1.49% |
| OneSug_{list-wise} | -1.82% | -9.33% | +2.01% | +2.04% | +1.69% |
关键发现:
- OneSug_{list-wise} 使用户平均输入前缀长度(IPL)降低 1.82%,首位点击位置(TCP)降低 9.33%
- CTR 提升 2.01%,订单量提升 2.04%,总收入提升 1.69%
- 系统响应时间平均减少 43.21%(替代了多阶段召回、粗排流程)
- OneSug_{list-wise} 已在快手电商搜索引擎全量部署超过1个月,服务数百万用户和数十亿 PV
4.4 人工评估(Table 5)¶
| Method | full recall rate | page good rate | query good rate |
|---|---|---|---|
| OneSug_{pair-wise} | +6.72% | +9.44% | +20.49% |
| OneSug_{list-wise} | +8.48% | +11.02% | +22.51% |
| OneSug_{Qwen2.5-0.5B} | +11.25% | +18.55% | +32.50% |
随机选取 2000 个前缀、提取 32000 个 prefix-query 对进行人工评估。full recall rate 要求 16 个查询全部满足语义标准。
4.5 进一步分析¶
行业维度:30 个行业中 27 个 CTR 提升,平均提升 2.12%,其中 P-value < 0.05 的有统计显著性。
前缀流行度维度(Table 6):
| Method | Top | Middle | Long-tail |
|---|---|---|---|
| OneSug_{pair-wise} | +0.97% | +1.03% | +3.26% |
| OneSug_{list-wise} | +1.15% | +1.32% | +3.59% |
长尾前缀的 CTR 提升远大于头部和中部,说明 PRE 模块中的语义和交互查询增强对长尾场景尤为有效。
模型更新频率:不进行每日更新时,OneSug 性能衰减(-0.6%/天)小于 onlineMCA(-1.1%/天)。仅用最近3天数据更新 DPO 对齐阶段(OneSug_daily),即可以极低计算成本维持模型效果。
特征类型分析:四类特征(ID-based、List-wise、Bucketing、Target-aware)对生成模型影响不同。ID-based 特征会显著降低效果(无意义 ID 干扰输入语义),而 target-aware 特征(query、item、prefix 序列的交叉注意力特征)干扰较小但需精心设计 prompt。
5. 核心贡献总结¶
- Prefix2Query 表示增强:利用共现查询和语义对齐增强短前缀的语义表示,结合 RQ-VAE 生成层级语义 ID 实现高效聚类检索
- 统一 Encoder-Decoder 架构:将召回、粗排、精排统一为单一生成模型,避免多阶段目标不一致
- 奖励加权排序(RWR):将用户行为分为六级,通过 reward-weighted DPO 和 list-wise 偏好学习实现精细化个性化排序
- 首个工业级端到端查询建议系统:在快手电商搜索引擎全量部署,CTR +2.01%、Order +2.04%、Revenue +1.69%、响应时间 -43.21%