你搜“宠物SPA+洗澡”,结果商品叫“萌宠清洁护理套餐”——字面零重合,但语义高度相关。这种语义鸿沟在美团服务零售里比比皆是:品类长尾、商品描述非结构化、Query意图复杂。传统排序模型靠文本匹配特征,遇到这种Case基本抓瞎。美团搜索团队用LLM(大语言模型)生成语义向量,把匹配信号注入排序模型,三期迭代后全量上线,订单显著增长。这篇文章拆解他们的技术路径。

搜索排序正从关键词匹配走向复杂意图理解。服务零售是将服务销售给最终消费者,覆盖丽人、休闲娱乐、家政等,供给非标准化,用户搜“春节大扫除”对应商品可能是“深度保洁服务套餐”。传统特征工程难以覆盖这种语义Gap。美团从2025年Q4到2026年Q2,用LLM为Query(搜索词)、POI(商家)、Deal(商品)生成语义向量,以cosine相似度(余弦相似度,衡量两个向量方向一致程度)注入排序模型,累计完成3个上线评审并全量上线。

一期目标很纯粹:验证LLM表征对精排有没有用。他们选了一个轻量级开源模型做全参数微调,在词表里新增三个特殊Token——<|query|>、<|item|>、<|qi|>——作为聚合锚点。输入Prompt同时包含Query和商家信息,但用Attention Mask(注意力掩码,控制模型能看到哪些位置)做三次独立前向:提取Query表征时只让<|query|>看Query文本,提取商家表征时只让<|item|>看商家文本,融合表征则看全序列。这样保证推理时Query和商家向量各自独立生成。最后取Transformer最后一层对应位置的hidden state,经两层MLP降到64维。

训练数据来自精排日志近2个月共3000余万条,下单:点击未下单:未点击=1:3:6。两个Loss协同:一个基于单侧表征的cosine相似度做二分类,一个用融合表征预测点击率。推理时离线算出Query和POI的向量,存Hive表按天更新。线上计算相似度后按分桶边界[-0.40,-0.30,-0.18,-0.12,0.00,0.10,0.16,0.22,0.30]分成10桶,每桶学一个12维Embedding拼进精排模型。分桶比连续值更利于特征交叉,也降低噪声敏感度。

离线验证点击NDCG +9bp,下单NDCG +13bp。线上20%流量14天:大盘搜索支付订单显著+0.20%,服务零售订单+0.27%,长尾NDCG@5 +2.21pp,长尾BadCase@1 -2.96pp。长尾提升最明显,符合预期——长尾Query正是词面匹配最薄弱的地方。一个64维向量就有这个效果,坚定了后续投入。

但一期短板明显:只覆盖Query和商家,商品侧语义缺失;全参数微调成本高;分类目标对排序不够全面;三次前向推理效率低。二期不是单点优化,而是系统性重构。

二期把训练样本从二元组扩展成五元组:Query、Deal正样本、POI正样本、Deal难负样本、POI难负样本。难负样本来自同一请求下曝光但未点击的商品/商家,与正样本只在“是否被用户选择”上有差异,迫使模型学精细判别。共构建2766万条样本。

Prompt设计有个反直觉发现:精简信息陈述+总结引导效果最好,复杂任务指令反而降低表征质量。推测原因是Embedding训练中Prompt的作用是引导“聚合哪些语义信息”,不是指令遵循。另外,在商品特征里引入CPV(商品属性)信息后效果反而下降——信息质量比信息量更重要。

基座模型对比了0.5B到8B多个系列,中等参数档是效果和成本最优平衡。最终选了专门为文本表征优化的Embedding模型变体。微调从全参数换成LoRA(低秩适配,只训练少量参数的高效微调),r=8、α=32,目标模块q_proj和v_proj。LoRA在NDCG上优于全参,全参在AUC上略优,综合效率选LoRA。

表征提取彻底重构:不再把Query和item放同一条序列,而是各自独立序列;特殊Token从词表Token变成nn.Parameter可学习向量,放在序列末尾覆写最后一个有效位置的Embedding。一次前向可以同时处理五路输入,推理效率大幅提升。对比实验显示Last Special Token Embedding优于Mean Pooling和直接取最后有效Token。

降维从两层MLP改成MRL-E(嵌套维度表征学习,训练时对多个维度算损失,推理时直接截取前128维)。MRL-E的优势不是精度,而是灵活性:同一套表征可按场景需求截取不同维度,无需重新训练。这为三期跨模块迁移埋了伏笔。

损失函数是二期最核心升级。一期用BCE做点击率二分类,只学“是否匹配”的绝对判断;排序需要的是“哪个更匹配”的相对序。InfoNCE Loss(对比学习损失,从候选集中选出正确匹配)天然面向这个目标。他们设计了三组InfoNCE:Query↔POI、Query↔Deal、POI↔Deal,覆盖三元实体两两关系。但InfoNCE的负样本来自Batch内随机采样,难度不够,所以又引入Triplet Loss专门处理难负样本,欧氏距离margin=0.5。

消融实验验证了设计:引入Triplet Loss后,Q2I-Click-AUC +4.85pp,Q2I-Order-AUC +11.02pp。Order-AUC提升远高于Click-AUC,说明难负样本对下单信号的捕获比点击更难、更有价值——印证了“从分类到排序”的转型方向。

这套方法的核心启发:当你的搜索/推荐场景存在大量“字面不匹配但语义相关”的Case时,用LLM生成语义向量作为排序特征是一条可行路径。

几个坑值得注意:复杂Prompt不一定好,信息质量比信息量重要;难负样本设计决定模型判别上限;Embedding维度不是越高越好,MRL-E这类灵活降维能让你在不同模块间复用同一套表征。

美团的三期实践从单点验证到体系化构建,再到跨场景迁移,展示了一个技术方向从“能用”到“好用”的完整路径。对于做搜索排序的工程师,这套“LLM语义表征+对比学习+分桶注入”的组合可以直接借鉴。

阅读原文 → 返回 AI 技术文档

内容与图片版权归原作者所有 · 原文: https://tech.meituan.com/2026/08/20/01-meituan-Query-3.0.html