搜索查询理解与LLM:从构想到生产
引言
从用户输入搜索查询到我们呈现结果列表的那一刻,理解用户意图对于满足他们的需求至关重要。Yelp已将大语言模型集成到众多功能中,从创建基于一手评论突出商家最知名特点的商家摘要,到智能引导消费者通过个性化相关问题向服务提供商请求报价的Yelp助手。在这些应用中,查询理解是开创性项目,已成为最完善的用例,为Yelp创新使用LLM改善用户搜索体验奠定了基础。
特别是需要查询理解的任务,如拼写纠正、分割、规范化和评论高亮,都具有一些共同且有利的特征。这些包括:(1)所有这些任务都可以在查询级别缓存,(2)需要读取和生成的文本量相对较低,(3)查询分布遵循幂律分布 - 少量查询非常流行。这些特征使查询理解成为使用LLM的高效领域。
任务定义
查询分割
给定查询,我们希望分割并标记该查询的语义部分。例如,“pet-friendly sf restaurants open now"可能有以下分割:{topic} pet-friendly {location} sf {topic} restaurants {time} open now。这可用于在适当时进一步优化搜索位置,隐式重写地理边界框以匹配用户意图。
评论高亮
给定查询,我们希望获得创造性扩展的短语列表以进行匹配 - 特别是帮助我们为每个商家找到有趣的"评论片段”。评论片段帮助用户了解每个显示的商家如何与其搜索查询相关。例如,如果用户搜索"dinner before a broadway show",在简短评论片段中加粗"pre-show dinner"短语对他们的决策非常有帮助。
任务制定
在此步骤中,我们的初始目标是:(1)确定LLM是否适合该问题,(2)定义任务的理想范围和输出格式,(3)评估将多个任务合并到单个提示中的可行性。
查询分割
与传统命名实体识别技术相比,LLM在分割任务中表现出色,并且足够灵活,可以轻松自定义各个类别。经过几次迭代,我们为查询分割确定了六个类别:topic、name、location、time、question和none。
查询分割提示中的少样本示例:
|
|
我们还注意到拼写纠正不仅是分割的前提条件,而且是概念上相关的任务。拼写纠正和分割可以由足够强大的模型一起完成,因此我们添加了一个元标签来标记拼写纠正的部分,并决定将这两个任务合并到单个提示中。
在RAG方面,我们使用为该查询查看过的商家名称来增强输入查询文本。这有助于模型学习并从常见主题、位置和拼写错误中区分商家名称的多个方面。
评论高亮
LLM在创造性任务中也表现出色,利用其世界知识扩展概念。在此任务中,我们使用LLM生成适合高亮的术语,并设定了较低的包含门槛 - 选择包含任何比完全不显示片段更好的短语。
此任务最困难的部分是设计出色的短语列表示例。仅使用查询文本中的单词,我们在高亮评论片段方面的选择非常有限。不仅如此,这个复杂任务中还有许多细微差别,使得传统的文本相似性模型难以解决。
评论高亮提示中策划示例的演变:
|
|
在RAG方面,我们使用与该查询最相关的商家类别(来自我们内部预测模型)增强了输入原始查询文本。这有助于LLM为我们的需求生成更相关的短语,特别是对于具有不明显主题(如特定餐厅名称)或模糊搜索(如pool - 游泳vs台球)的搜索。
概念验证
在制定任务并定义输入/输出格式后,我们的重点转向构建概念验证,以证明新方法在实践中的有效性。
查询分割
为了离线评估,我们观察了新分割对下游任务以及专门数据集的影响。我们在名称匹配和位置意图的人类标记数据集上比较了LLM提供的分割与现状系统的准确性。在这种分割信号的不同应用中,我们能够(a)利用(名称)标签的令牌概率改进我们的查询到商家名称匹配和排名系统,以及(b)使用(位置)标签通过隐式位置重写实现在线指标胜利。
原始查询文本 | 原始位置 | 重写位置(仅由搜索后端使用) |
---|---|---|
Restaurants near Chase Center | San Francisco, CA | 1 Warriors Way, San Francisco, CA 94158 |
Ramen Upper West Side | New York, NY | Upper West Side, Manhattan, NY |
Epcot restaurants | Orlando, FL | Epcot, Bay Lake, FL |
评论高亮
生成短语质量的离线评估是主观的,需要具有良好产品、定性和工程理解的强大人类注释者。我们交叉检查了人类注释者的意见,并对片段执行了一些定量方法,如查看短语的常见程度。经过彻底审查,我们使用新高亮短语进行了在线A/B实验。
扩展规模
如果概念验证的在线实验显示出有意义的积极影响,就是时候改进模型,并将其利用扩展到更大数量的查询。然而,扩展到数百万查询(或实时模型,以支持前所未见的查询)带来了成本和基础设施挑战。
目前,我们已经确定了一个从原型阶段扩展到服务100%流量的模型的多步骤过程:
- 使用"昂贵"模型(GPT-4/o1)迭代提示
- 为微调较小模型创建黄金数据集
- 在用于微调之前尽可能提高数据集质量
- 微调较小的模型(GPT4o-mini),我们可以在数千万的规模上离线运行
- 可选地,微调更小、成本更低且速度更快的模型(仅针对长尾查询实时运行)
评论高亮
在微调我们的模型并在多样化和随机测试集上验证响应后,我们通过使用OpenAI的批量调用为这些查询预计算片段扩展,扩展到95%的流量。生成的输出经过质量检查并上传到我们的查询理解数据存储。由于搜索查询的幂律分布,使用基于缓存的系统(如键/值数据库)来改进检索延迟。
通过这个预计算信号,我们进一步利用它们在其他下游任务中拥有的"常识"知识。例如,我们使用相关扩展短语的CTR信号进一步优化我们的排名模型,并另外使用短语(在商家类别上平均)作为启发式方法,为我们预计算未覆盖的剩余5%流量获取高亮短语。
未来工作
将LLM更深地集成到我们的搜索系统中,对于改变用户搜索体验具有巨大潜力。随着LLM格局的发展,我们继续适应这些新功能,这可以解锁使用我们内容的新方式。对于某些需要复杂逻辑推理的搜索任务,与之前的生成模型相比,我们开始看到最新推理模型生成的输出质量带来巨大好处。
结论
LLM在改变用户搜索体验方面具有巨大潜力。要实现这些可能性,涉及构思、概念验证测试和全规模生产推出的战略方法至关重要。这需要持续迭代和适应基础模型的新进展,因为某些查询理解任务可能需要更复杂的逻辑推理,而其他任务则需要更深的知识库。