小红书搜索优化:多任务学习模型QP-OneModel实践
1. 项目背景与核心价值在小红书这类内容社区平台中搜索功能的质量直接影响用户体验和平台活跃度。传统搜索系统通常采用多模型串联的架构——先用一个模型理解查询意图再用另一个模型处理改写最后交给排序模型。这种方案存在两个明显痛点第一是响应延迟叠加。每个模型调用都会增加几十到几百毫秒的延迟当多个模型串联时整体延迟可能突破用户可忍受的阈值。我们实测发现当搜索响应超过800ms时用户跳出率会显著上升。第二是信息传递损耗。前序模型的输出作为后续模型的输入时不可避免会丢失部分原始query的语义信息。比如在适合油皮的平价粉底液这个query中经过意图识别模型处理后平价这个关键属性在后续改写阶段可能被弱化。QP-OneModel正是为了解决这些问题而生。通过统一的多任务学习框架我们让单个模型同时完成查询意图识别、语义改写、敏感词识别等核心任务。实测显示端到端延迟降低57%而在美妆、穿搭等垂类场景下的搜索准确率提升12.8%。2. 模型架构设计解析2.1 基础骨干网络选型我们对比了T5、BART和LLaMA三种架构作为backbone的优劣T5的encoder-decoder结构天然适合生成任务但在分类任务上需要额外设计输出头BART的噪声恢复预训练目标与查询改写任务高度契合LLaMA的纯decoder架构在自回归生成上表现优异但处理分类任务时需要特殊设计最终选择BART-large作为基础架构主要考虑三点小红书搜索query平均长度在15-20字BART处理短文本的效率优于T5改写任务需要保持原始语义BART的文本重建能力更强通过添加多任务适配层可以较好平衡生成与分类任务2.2 多任务学习设计模型需要同时处理三类任务意图分类7类商品搜索、攻略查询、问答等查询改写生成标准搜索query敏感词识别二分类我们采用共享底层任务特定头的设计前12层Transformer共享参数最后3层分支出三个任务头分类头线性层softmax生成头标准自回归生成敏感词检测头带注意力池化的MLP损失函数采用加权求和 L_total 0.4L_gen 0.3L_intent 0.3*L_safety2.3 小红书场景适配技巧针对社区内容特点我们做了三项关键优化表情符号处理将emoji转换为[EMOJI_xxx]特殊token在生成任务中保留原始emoji分布例如这个妆绝了[EMOJI_1f60d]会被正确处理网络用语理解在词典中添加绝绝子、yyds等社区高频词通过对比学习让模型理解这些词的语义多模态query处理对类似这张图片的裙子类query用CLIP编码图像特征作为附加输入3. 训练与优化细节3.1 数据准备策略构建了三个核心数据集意图分类数据人工标注20万条历史query通过聚类采样确保类别平衡添加对抗样本增强鲁棒性改写数据基于用户点击日志构建pair原始query → 高CTR的标题清洗后获得150万高质量样本敏感词数据平台审核日志中的违规query人工筛选出5万条正样本负样本来自正常搜索query3.2 训练技巧实录渐进式训练第一阶段仅训练生成任务第二阶段冻结底层训练分类头第三阶段联合微调所有参数动态温度采样 在生成任务中采用变化温度 T max(0.7, 1.2 - epoch*0.05) 早期鼓励探索后期稳定输出对抗训练 在embedding层添加FGM扰动 Δ ε * g / ||g||₂ g为梯度ε0.33.3 关键参数配置batch_size: 64 max_seq_len: 64 learning_rate: 3e-5 warmup_steps: 5000 gradient_accumulation: 2 label_smoothing: 0.14. 线上部署与性能优化4.1 服务化架构采用Triton推理服务器实现每个GPU卡加载1个模型实例动态批处理(max_batch_size32)支持FP16量化关键优化点请求队列优先处理高优query对长尾query启动后备模型实现基于LRU的模型热更新4.2 性能压测数据在NVIDIA T4环境下的测试结果并发数P50延迟P99延迟吞吐量1068ms122ms142qps5089ms213ms480qps100132ms345ms620qps相比原有串联模型方案吞吐量提升2.1倍99分位延迟降低57%4.3 内存优化技巧注意力缓存共享 不同任务共享KV cache激活值压缩 对中间激活使用8bit量化动态卸载 长时间无请求时释放部分权重5. 效果评估与案例分析5.1 离线评估指标在测试集上的表现任务类型评估指标单任务模型QP-OneModel意图分类F189.287.6查询改写BLEU-462.160.3敏感词识别AUC98.797.9端到端准确率-81.484.2虽然单项指标略有下降但端到端效果更好说明多任务学习带来了协同效应。5.2 典型case分析成功案例 原始query小个子怎么穿显高 改写结果150cm矮个子显高穿搭技巧 意图识别穿搭建议 敏感词无改进案例 原始query怎么判断护肤品真假 旧系统识别为购物咨询 新系统识别为真假鉴别并触发防伪攻略失败案例 原始queryjk裙子 错误改写日本学生制服 原因对亚文化术语理解不足5.3 A/B测试结果在1%流量桶中观察7天指标旧系统新系统变化搜索CTR21.3%23.1%8.5%结果页停留时长46s51s10.9%二次搜索率18.7%16.2%-13.4%6. 常见问题与解决方案6.1 多任务冲突处理现象当提高生成任务权重时分类准确率下降 解决方案采用GradNorm进行梯度标准化添加任务不确定性权重在损失函数中加入相关性惩罚项6.2 长尾query处理对于低频query如汉服形制构建领域专属词典在finetune时过采样垂类样本实现基于检索的增强生成6.3 模型更新策略采用双阶段更新每周一更新意图分类模块 用户搜索习惯变化较慢每天更新敏感词库 新风险词出现频率高7. 工程实践心得数据质量比数据量更重要清洗20%的低质量样本后效果提升比增加50%数据更明显延迟优化要端到端考虑单模型优化到100ms后发现网关序列化成了新瓶颈监控体系要立体化不仅监控模型指标还要跟踪业务指标变化建立query质量分级报警机制模型解释性很重要用LIME方法生成解释报告帮助运营理解模型决策过程