TL;DR:
使用搜索引擎进行文献检索或资料收集时,由于操作者的背景不同,会使用不同的搜索词,从而导致搜索结果具有了差异性,因此搜索行为具有了一定的技巧性。使用大模型可以对搜索关键词进行同义枚举,增强知识的召回覆盖面和搜索行为的可重复性。
正文
几乎所有应用程序都依赖于搜索功能,这项功能虽然在用户界面上看似简单实则很难。近年来,随着机器学习技术的兴起,语义搜索作为一项创新成果,显著提高了搜索的智能化水平。然而,语义搜索的黑盒特性在需要可重复和可解释的搜索结果场景中却成为问题。本文将探讨搜索技术的发展及其存在的局限性。
搜索技术的发展历程中,最初的方法是简单的字符串匹配,例如UNIX系统中的grep工具。这种方法虽然直观,但存在诸多不足,如容易产生误匹配和速度缓慢,无法满足大规模数据集的搜索需求。为了解决这些问题,全文搜索技术应运而生。数据库系统如Postgres内置了全文搜索功能,通过复杂的启发式方法和索引技术,实现了在大型数据集中的快速和准确搜索。Elastic 公司便是利用全文搜索技术建立了价值百亿美元的业务。然而,随着通用机器学习驱动的搜索技术的出现,传统的全文搜索技术逐渐被超越。
语义搜索的核心在于使用数学方法将单词转换为能够表示其基本概念的高维向量,这一过程称为嵌入(embedding)。这些向量构成了一个被称为潜在空间的概念搜索空间,使得搜索系统能够基于语义相关性而非仅仅是文字匹配来检索信息。从20世纪50年代的早期想法到Word2vec(2013年)和Google的BERT(2018年)等技术里程碑,语义搜索已经发展成为一个强大的工具。尽管如此,语义搜索在处理自然语言的复杂性和细微差别时仍面临挑战,需要更先进的技术,如大型语言模型,来捕捉输入文本的深层含义。
高维空间中的嵌入,彼此距离越近的词有相似的语义。即单词 "train" 和 "car" 有着相似的语义向量。其中距离的计算方式与计算地图上两点之间的距离相同。
对于更复杂的短语,我们可以简单地计算每个单词的嵌入并求和再取均值,但这种方法不是绝对正确的。例如,"相比于语音识别我更擅长RL" 和 "相比于RL我更擅长语音识别" 仅仅调换了语序,拥有相类似的求和均值结果,但含义却差之千里。
为了深入理解和处理自然语言的复杂性,大型语言模型(LLM)的应用变得至关重要。与传统的单词独立处理方式不同,LLM将文本视为一系列连续的块,这使得模型能够更全面地捕捉到语言的丰富语义。这种处理方式的结果是生成了能够更精确反映输入文本含义的嵌入向量。尽管生成高质量的嵌入是一个新兴技术,但它已经迅速被商品化,例如OpenAI提供的嵌入API,它允许开发者轻松地将高质量的搜索功能集成到他们的应用程序中。
尽管语义搜索在许多应用场景中表现出色,但它并非没有缺陷。嵌入模型和密集向量搜索算法可能导致同一查询在不同运行中产生不同的搜索结果。此外,这些模型的黑盒特性使得最终用户和研究人员难以理解搜索结果的排名逻辑,另外如果想要对搜索过程解释,并确保多次搜索的正确性(大模型每次输出都是随机的),以及全面性(例如应该包含对同义词的搜索结果),这都是以上方法的局限性。
解决方法是查询扩展。语言模型已经建立了一个关于术语如何相互关联的高维图,这就是我们上面描述的嵌入的潜在空间。使用此映射,我们可以自动找到与用户查询在语义上相关的术语,并使用模型建议的术语丰富查询。然后,这些术语会被输入到常规全文搜索中,从而提高搜索的准确性。这种方法是透明且易于理解的,因为中间步骤对人类来说是直接可读的。
与手动增加同义词相比,它显然更快、更准确,并且需要的人力更少,另外还可以针对特定领域训练自定义语言模型,例如,针对计算机和法律等领域中使用的特定术语。
原文始发于微信公众号(青木生长):如何组织搜索词可以搜的全面,大模型举一反三来帮忙
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论