一、什么是query理解?
通俗来讲,就是query整形。又可以理解为是一个转接头,把用户送来过来的奇奇怪怪的query(或者说是在搜索引擎看来是奇奇怪怪的query)转换为搜索引擎最想看到的query的。
在LLM当前能力的帮助下,实际上query理解的工作好做多了。即使没有太多基础的玩家,实际上完全可以依赖LLM来做这件事。对于任何一个环节,就是一个prompt的事情。这绝对是会有收益的。问题是成本,以及性能。一个检索需求的时延要求多数是3s内,如果只靠LLM是很难控制在3s内的。对于离线的任务,非实时交互的,对时间要求不高的,可以考虑使用LLM,效果可能比单独训练一个小模型效果都要好。
二、主要工作
在query理解方面,还是有很多工作要做的。
2.1 分词与词性标注
将用户输入的查询语句进行有效分词。
对分词后的词汇进行词性标注,区分名词、动词、形容词等。
对于这一块内容,已经有比较成熟的技术,例如StanfordNLP,就是一个模型一个包,拿过来就可以使用使用部署成服务。
这里还需要去做一个工作:关键词提取,从查询中提取出对搜索结果影响最大的关键词。这包括基于字符匹配的分词算法、基于统计的分词算法,以及基于理解的分词算法,后者在分词的同时进行句法、语义分析,处理歧义现象。进行权重分析,使用诸如TF-IDF算法等方法确定Query中各词汇的重要性,并据此优化搜索结果的相关性。
2.2 命名实体识别
识别查询中的专有名词,如人名、地名、组织名等。这里有一个做法,可以通过命名实体来做加分。优化排序效果。
2.3 查询意图识别
分析用户查询背后的意图,比如是信息检索、交易、导航还是其他特定意图。
意图分类的细化,例如将信息检索意图细分为新闻、学术、娱乐等。在RAG中,需要知道query应该是模型回答还是联网查询,故需要一个二分类的模型。
意图识别,实际上就是分类任务。
还可以通过意图分类和命名实体识别技术,理解用户的搜索意图,尤其是在Query中存在多个可能的意图时,需要结合知识图谱进行知识推理,完成意图识别。
2.4 情感分析
判定查询语句的情感倾向,如正面、负面或中性。
2.5 查询改写
包括Query纠错、Query对齐和Query扩展。对原始查询进行改写以更好地匹配搜索结果。Query纠错用于修正用户输入的错误,Query对齐用于将用户Query改写为与搜索引擎索引内容更匹配的形式,Query扩展则是为了提供更多相关搜索选项,帮助用户挖掘潜在需求。
包括同义词替换、语法调整、错别字纠正等。
通过同义词库或上下文分析扩展查询词,增加检索的全面性。这里同义词也可以做成类似于图谱的东西。通过同义词扩展策略,增加Query的表达范围,提高搜索结果的覆盖度和准确性。但是同义词并非总是有效,也会带来副作用。这对同义词的构建要求是比较高的。
此外,充分利用LLM的能力,也可以有不错的提升效果(不过处理时间比较长)。这里再分享一下我的这篇文章。
用十篇论文聊聊关于使用LLM做query Rewrite的问题_hyde+prf-CSDN博客
2.6 上下文理解
利用用户历史数据、地理位置等信息理解查询的上下文。
对于现在的很多LLM应用,多轮对话的作为上下文非常重要的组成部分。
对于不同的领域场景,这里会有比较大的出入。例如电商领域,可以结合用户画像,用户的历史搜索行为来对当前的query进行理解。而对于搜索引擎,可以对全部query做分类处理。而对于chat类型的则对多轮对话的内容进行理解和改写又是特别有意义的。
在chat方面指代消歧是一个重要的内容。
2.7 多语言处理
对于多语言搜索引擎,还需要处理不同语言之间的查询理解问题。
这里拼音也可以当做多语言处理。
多模态的内容,在一定程度上也可以算做多语言处理。
三、query理解领域的一些研究方向
深度学习应用:研究如何利用深度学习技术来提高分词、命名实体识别、意图识别等任务的准确性。
迁移学习:探索如何将在一个领域学到的知识迁移到另一个领域,特别是在数据稀缺的情况下。
跨语言理解:研究如何将一种语言的查询理解技术应用到另一种语言。
对话上下文理解:研究如何在多轮对话中更好地理解用户的意图。
对抗性学习:研究如何防御对抗性查询对搜索引擎的影响。
隐私保护查询理解:如何在保护用户隐私的前提下进行查询理解。
可解释性与透明度:提高查询理解算法的可解释性,使搜索引擎的行为更加透明。
弱监督学习:利用少量的标注数据来训练模型,减少对大量标注数据的依赖。
这些研究方向都是当前学术界和工业界的热点问题,不断有新的技术和论文涌现。作为搜索引擎算法工程师,关注这些前沿动态,并结合实际业务需求进行技术创新是非常重要的。