网页
综合
更新时间 2026-11-13 16:16:31
美团搜索3.0:LLM 语义表征在排序模型的探索与应用 | 美团 · 技术团队
自动蜘蛛
tech.meituan.com
正文约 4945 字
在大语言模型(LLM)技术的深刻影响下,搜索引擎正经历第三次范式跃迁:从 1.0 时代的“关键词文本匹配”,到 2.0 时代的“行为统计与个性化搜索”,再到 3.0 时代向“复杂意图理解与认知决策”的全面进化。
美团搜索团队正依托团垂融合新架构与生成式大模型新技术,全面重构本地生活搜索底座。本系列技术博客将持续介绍美团搜索 3.0 的技术探索,本文聚焦 LLM 语义表征在服务零售排序场景上的三期实践——从单点特征验证到系统性表征体系构建,再到跨场景迁移复用,探索语义匹配信号在搜索排序中的应用路径。
服务零售是将服务销售给最终消费者的商业活动,与之对应的概念为商品零售。服务零售和商品零售是美团零售业务的两个主要组成部分。
在美团搜索场景下,相较于到家和其他到店业务,服务零售具有以下显著特点:
传统精排模型的语义建模高度依赖文本匹配,但这类特征构建成本高、泛化能力弱,在面对服务零售大量长尾品类、复杂 Query 意图时尤为明显。例如,"宠物 SPA+洗澡"这个 Query 对应的商品名称可能是"萌宠清洁护理套餐"、"春节大扫除"这个 Query 对应的商品名称可能是"深度保洁服务套餐",在这些 Case 中,搜索词和供给在文字上几乎没有重叠,但语义上是高度相关的。
这类语义 Gap 在美团服务零售搜索场景(生活服务、休闲娱乐等)尤为突出。服务零售的品类长尾分散、商品描述非结构化、Query 意图复杂多样,传统特征工程难以覆盖。而大语言模型(LLM)在语义理解方面的能力成熟度正在快速提升,给我们带来了新的解题思路。
从 2025 年 Q4 到 2026 年 Q2,服务零售搜索排序团队系统性地探索了 LLM 在精排模型中的应用,核心方向是用 LLM 为搜索词(Query)、商家(POI)和商品(Deal)生成高质量的语义向量表征,将语义匹配信息以 cosine 相似度的形式注入排序模型,弥补传统特征在语义理解上的不足。经过三期迭代,累计完成 3 个 Launch Review(LR),均已完成全量上线,带来了显著的线上收益。
下图展示了三期技术演进的整体脉络。每一期都在前一期的基础上进行系统性升级,从验证可行性到全面优化再到跨模块迁移复用,逐步构建起一套完整的语义表征体系。
服务零售精排在语义层面的建模几乎为零,排序模型主要依赖少量文本匹配和 Query 统计类特征。所以一期的目标很纯粹:验证 LLM 表征能否对精排模型有实质性帮助。如果用 LLM 生成的语义向量能带来正向收益,就值得投入更多资源深度优化。整个一期的设计都围绕「先把路走通」。
整体思路是:选择一个轻量级的 LLM 作为基座,对 Query 和 POI 的信息进行统一建模,通过微调,使模型仅依赖文本语义来判断"这个搜索词和这个商家是否匹配",然后全量推理出 Query 和 POI 各自的语义向量,计算它们的 cosine 相似度,作为特征注入精排模型。
一期选用小参数量的开源基座模型,采用全参数微调。
要提取语义表征,需要一个明确的"聚合点"——模型在哪个位置把输入文本的语义信息汇聚成一个向量。直接用序列末尾 Token 或整个 Token 序列 Mean Pooling 也可以,但缺少可学习性。一期的核心设计是在词表中新增三个特殊 Token——<|query|>、<|item|>、<|qi|>,作为专门的聚合锚点,在训练中与模型参数一起优化。特殊 Token 的嵌入采用平均初始化法,参考 vocab-expansion[1]。
设计三个而非一个 Token,是因为需要三种不同类型的表征:<|query|> 聚合 Query 侧语义,<|item|> 聚合 item 侧语义,<|qi|> 聚合双侧融合信息——前两者用于推理时独立提取各自的 Embedding 并计算 cosine 相似度,后者仅用于微调时的辅助 Loss。
三个特殊 Token 内嵌在同一条 Prompt 序列中,意味着训练时 Query 和 item 的文本信息是混在一条序列里的。如果不加干预,<|query|> 会自然"看到"后面的 item 文本,<|item|> 也会"看到"前面的 Query 文本。这本身对 <|qi|> 不是问题——它本来就要看两侧信息。但对 <|query|> 和 <|item|> 来说是个问题:推理时,Query 和 item 的 Embedding 是分别独立生成的,如果训练时 <|query|> "看到"了 item 信息,它学到的表征就会依赖 item 上下文,推理时只输入 Query 文本,产出的表征就失去了意义。
因此,通过 Attention Mask 对同一条输入序列进行三次独立 forward pass:提取 query 表征时,mask 将注意力范围限制在 Query 文本段,<|query|> 只能聚合查询信息;提取 item 表征时,mask 限制在 item 文本段,<|item|> 只能聚合商家信息;提取融合表征时使用完整 mask,<|qi|> 可以 attend 到整条序列。这样确保了 Query 和 item 各自的表征是自包含的,可以独立提取和存储。
表征提取方式是取 transformer 最后一层在特殊 Token 位置的 hidden state,经两层 MLP(hidden_size → 512 → ReLU → LayerNorm → 64)降至 64 维,作为最终的目标语义表征。
从服务零售垂直搜索链路的精排日志中抽取近 2 个月、共 3,000 余万条训练样本,其中下单:点击未下单:未点击 = 1:3:6。训练目标包含两个 Loss 协同优化:
Loss_2 基于 <|qi|> 融合 query 和 item 的双侧信息,经 MLP 后预测点击率,目的是让学到的语义表征对齐下游排序目标。
最终 Loss:L = Loss_1 + Loss_2。
双 Loss 设计的目的是让模型同时学习"单侧表征的质量"和"双侧匹配的判断"——前者直接服务于推理时的 cosine 相似度计算,后者辅助表征对齐下游点击率预估目标。
推理时分别独立生成 Query 和 item 的语义 Embedding,离线存储至 Hive 表,按天例行增量更新。
模型获得语义 Embedding 后,计算 Query 与 item 的 cosine 相似度,并按预设的分桶边界将相似度划分进 10 个分桶。分桶边界为[-0.40, -0.30, -0.18, -0.12, 0.00, 0.10, 0.16, 0.22, 0.30],设计时考虑了每个桶内的样本量分布,并尽可能区分下单与未下单、点击与未点击等行为标签。
通过抽取 2 万条搜索曝光样本,我们验证了不同类型样本在各分桶中的分布。如下图所示,Query 和 item 语义越相似,点击/下单的样本占比越高:
这意味着我们可以将 Query 和 item 的语义表征相似度作为一个强特征引入排序模型,以提升模型在点击/下单率预估方面的表现。
为了实现这一目标,我们为每个分桶分配一个可学习的 Embedding 向量(12 维),拼接到精排模型现有特征中。使用分桶而非直接使用连续相似度值的原因是:离散化后的特征能更好地被精排模型的特征交叉网络利用,同时降低噪声敏感度。使用可学习的 Embedding 向量则是为了增强模型对于不同相似度区间的表达能力。
离线验证显示,引入表征特征后点击 NDCG +9bp,下单 NDCG +13bp,验证了方案的有效性。
实验周期 2025 年 9 月 18 日至 10 月 1 日,20%流量 14 天,AA 校验通过。
大盘搜索支付订单显著+0.20%,服务零售订单显著+0.27%。更值得关注的是体验指标的表现:长尾 NDCG@5 显著+2.21pp,长尾 BadCase@1 显著-2.96pp。语义理解提升在长尾场景体感最明显——这正符合预期,因为长尾 Query 恰恰是传统词面匹配最薄弱的地方。
一个只有 64 维的语义表征,仅通过分桶拼接的方式注入精排,就带来了显著的订单增量——这个结果直接证明了 LLM 语义表征在精排场景的价值,坚定了后续深度投入的信心。
一期验证了 LLM 表征在精排中的可行性,但也暴露了四个明显短板。一是只覆盖 Query-商家两端,商品侧语义完全缺失——而在服务零售场景中,用户很多时候是在搜商品而非搜商家。二是全参数微调训练成本高、维护困难,不利于快速迭代。三是微调目标以点击率预估为主,对排序优化不够全面——下游精排同时也关注成单目标。四是三次 Forward Pass 的推理效率有优化空间,表征提取方式还有更高效的替代。这些问题成为二期系统性升级的起点。
一期验证了 LLM 表征在精排中的可行性,但四个短板制约了进一步迭代:仅覆盖 Query-商家两端,缺失商品语义、全参数微调成本高、点击率分类目标对排序不够全面、三次 Forward Pass 效率低。二期的目标不是单点优化,而是系统性重构表征生产的全流程——从训练数据、基座模型、微调方式、表征提取、降维方式到损失函数,逐一对应一期的短板进行升级,同时将下挂商品(Deal)纳入建模,构建 Query-POI-Deal 三元语义表征体系。
贯穿二期的核心矛盾是:一期的训练目标是"判断 Query 和商家是否匹配"的二分类问题,但排序模型真正需要的是"在多个候选中哪个更匹配"的相对序关系。这个矛盾直接驱动了从点击率分类到对比学习的损失函数重设计,也间接影响了训练数据构建(需要难负样本)、表征提取方式(需要更高效的聚合)等其他模块的决策。
一期每条样本只有 Query 和 POI 两部分,用于对齐下游目标的训练信号是"是否点击"。二期将每条样本扩展为五元组:Query、Deal 正样本、POI 正样本、Deal 难负样本、POI 难负样本。难负样本的选取是关键——Deal 难负样本来自同一请求、同一商家下曝光但未点击的商品,POI 难负样本来自同一请求下曝光但未点击的商家。这种"同请求"的难负采样策略确保了负样本与正样本在 Query 意图和上下文上高度相似,只在"是否被用户选择"上有差异,能迫使模型学到更精细的判别能力。最终我们构建了 2766 万条训练样本。
确定了"喂什么数据"后,下一步是"怎么组织成文本"。我们尝试了多种 Prompt 方案:精简信息陈述+总结引导、简单任务指令、丰富版任务指令、仅信息陈述。实验发现一个反直觉的结论:精简信息陈述+总结引导效果最好,过于复杂的任务指令反而降低表征质量。
这与常见的 LLM 问答任务的直觉相反。我们推测原因是:在 Embedding 训练场景中,Prompt 的作用是引导模型理解"要聚合哪些语义信息",而非传统的"指令遵循"。过于复杂的指令会干扰模型对核心语义信息的聚合,就像给一个本该专注于理解文本的人过多任务要求,反而分散了注意力。这一结论对后续其他表征场景有直接参考价值。
二期在商家的 Prompt 中也新增了"次级经营品类"、"热销商品"等信息,以期望学到更完整的商家语义表征。
一个值得注意的实验发现是:我们尝试在商品特征中引入 CPV(商品属性)信息后,排序评估效果反而下降:
我们推测原因是当前 CPV 信息过于繁杂,未经筛选地引入反而会带来噪声。这个反直觉的结果说明,在表征训练中,信息质量比信息量更重要。
基座模型选择上,我们横向对比了参数量在 0.5B~8B 的多个模型,涵盖通用、Embedding、Instruct 等多个系列。
实验发现,中等参数档位是效果与推理成本的最优平衡点——更大的模型在 NDCG 指标上提升有限且推理成本显著上升;最小参数档位则在各项指标上全面落后。最终选定专门为文本表征任务优化的 Embedding 模型变体,它在 Click-AUC 和 NDCG 上均优于同参数量的通用模型。
本页为82搜索生成的网页快照,内容来自站内索引;演示数据的原文链接仅作示例。