在语义搜索的世界里,密集向量搜索是一种强大的工具,它能够进行上下文的理解和语义分析,为我们提供高度相关的查询结果。然而,就像在CS(Counter-Strike)游戏中,仅有狙击枪是无法赢得比赛的一样,仅依赖向量搜索也无法满足所有的需求。尽管向量搜索能够进行深度的语义分析和理解,但它存在一些限制,如延迟高、成本大以及无法完全满足特定的查询需求。因此,我们需要在搜索领域探索更广阔的可能性,结合多种技术来提供更全面、高效的解决方案。
如果你是一个CS游戏的玩家,你可能知道,如果你的队伍里只有狙击枪,你是很难赢得比赛的。虽然狙击枪射程远,威力强,还能瞄准,但它也有很多缺点:射速慢,价格昂贵,在一些近战场景还不如一把手枪,甚至匕首。你需要根据不同的地图,敌人,战术等因素,选择合适的武器,才能发挥最大的效果。
同样的道理,如果你是一个搜索应用的开发者,你可能知道,如果你的搜索系统只有向量搜索,你也是很难做好相关性查询的。向量搜索是一种利用深度学习模型将文本转换为高维向量,再将查询与数据的向量进行相似性计算的方法,它能够进行上下文的理解及语义分析,从而提高搜索结果的质量。但它也有很多缺点:延迟高,成本大,在一些场景下还不如传统的基于词项匹配的搜索方法。你需要根据不同的数据源,用户,需求等因素,选择合适的搜索技术,才能发挥最大的效能。
另一方面,我们之所以现在这么关注向量搜索,实际上我们的内驱力更多地来自于与大模型相结合以提升理解能力、总结能力、交互能力与生成能力。然而,大模型的使用并不依赖于向量搜索!
在本文中,我们将探索向量搜索的世界,并分析为什么仅有向量搜索是不够的。我们将从以下几个方面进行讨论:
向量搜索是一种基于深度学习模型将文本转换为高维向量的方法。这些向量可以表示文本的语义信息,即文本的含义和主题。通过计算向量之间的相似度或距离,我们可以找到与给定查询最相关的文档。
向量搜索有以下几个优势:
向量搜索也有以下几个局限性:
因此,我们决策是否需要引入向量搜索时,需要对其各方面有充分的了解,而不是仅仅引入一个向量库的问题,特别是大部分向量库仅仅提供了向量存储,向量索引,向量相似性比较这三方面的能力,但这只解决了工程上问题,也就是说,向量库只解决了向量搜索搜得快不快,QPS高不高,吞吐大不大的问题,但没法解决搜索的准不准的问题,即在效果上的问题,需要依赖embedding模型的选择、调优和持续的训练。这并不是狭义上的“向量搜索”的问题,而是一个广义上的NLP(自然语言处理)的问题。
而且,在深度学习模型上,embedding模型仅仅只是整个分支中非常小的一部分,而其他大部分的NLP任务,输出的都是文本类的标签或token。在这些模型上,向量搜索是用不着的,反而是传统的全文检索,字段精确匹配和过滤更能适配这些NLP任务的推理输出。
这也首先回答了为什么只有向量搜索引擎是不够的。因为,向量生成比搜索更重要。
向量搜索并不是一种万能的搜索技术,它并不适合所有的场景和需求。我们需要根据不同的因素,如数据源,用户,需求等,来选择合适的搜索技术。以下是一些常见的场景和建议:
但这里需要注意的是,无论是跨语言还是跨模态,尽管我们应该在这种场景中选择使用向量搜索,但这并不意味着向量搜索是唯一的选择。
另外,这种选择应该是灵活可变的。一个健壮的系统中,我们需要随时可以根据需求的变化而进行数据结构的修改、模型的变更、向量维度的改变。
在实际应用中,我们往往需要结合向量搜索和其他搜索技术,甚至是结合机器学习与NLP推理技术来构建一个高效且灵活的搜索系统。这样可以充分利用各种技术的优势,同时避免各种技术的局限性。以下是一些常见的方法和建议:
而在灵活性上,系统应该具备以下特征:
大语言模型与搜索技术相结合的一个主要应用是生成式搜索引擎。生成式搜索引擎是一种不再返回文档列表,而是直接返回答案或内容的搜索引擎。生成式搜索引擎可以利用大语言模型的能力,处理自然语言中的复杂和模糊的表达方式,捕捉文本之间的语义关系,支持多语言和跨语言的搜索,支持多模态和跨模态的搜索等。
生成式搜索引擎的一个典型例子是OpenAI的ChatGPT,它是一个基于GPT-3.5/GPT-4的大语言模型的聊天机器人。ChatGPT可以根据用户的输入,生成各种类型的内容,例如摘要,简历,创意写作,甚至代码。ChatGPT还可以与用户进行自然和有趣的对话,展示其对世界知识和常识的理解。
但我们需要明确知道的是,无论是ChatGPT还是Bard,亦或是文心一言,通义千问等,其输入都是文本。我们提交给大模型进行总结,扩展,翻译,重写,创作的内容,都不是向量。虽然大模型内部会把输入变为向量特征,再根据这些信息进行理解和生成,但这是模型内部的事情,并不需要我们外部参与。
因此,与大模型的结合,向量搜索不是必须得。仅有向量搜索也是不够的。毕竟,我们的主要目标是能够高效、准确地找出相关的文档来作为背景知识,将其与问题一起交给大模型处理。如何搜得快、搜得准、能适应足够多的使用场景,绝不应该是只使用基于密集向量的向量相似性搜索来解决的。
在这里,有效的组合各种搜索方式,并正确的使用各种NLP任务来协助理解才是正确的解。
在搜索领域,向量搜索是一个重要的工具,但它并非解决所有问题的唯一选择。通过将多种技术和方法相结合,我们可以拓宽搜索的可能性,并提供更好的结果和用户体验。正如在CS游戏中,仅有狙击枪无法赢得比赛一样,仅仅依靠向量搜索也无法满足所有的搜索需求的。我们需要探索更广阔的搜索世界,不断创新和改进,以满足用户日益增长的需求,而非畸形的将用户期望的变更理解为某种技术的应用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。