前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >探索向量搜索的世界:为什么仅有向量搜索是不够的?

探索向量搜索的世界:为什么仅有向量搜索是不够的?

原创
作者头像
点火三周
修改2023-07-06 18:03:41
2.5K0
修改2023-07-06 18:03:41
举报
文章被收录于专栏:Elastic Stack专栏Elastic Stack专栏

在语义搜索的世界里,密集向量搜索是一种强大的工具,它能够进行上下文的理解和语义分析,为我们提供高度相关的查询结果。然而,就像在CS(Counter-Strike)游戏中,仅有狙击枪是无法赢得比赛的一样,仅依赖向量搜索也无法满足所有的需求。尽管向量搜索能够进行深度的语义分析和理解,但它存在一些限制,如延迟高、成本大以及无法完全满足特定的查询需求。因此,我们需要在搜索领域探索更广阔的可能性,结合多种技术来提供更全面、高效的解决方案。

如果你是一个CS游戏的玩家,你可能知道,如果你的队伍里只有狙击枪,你是很难赢得比赛的。虽然狙击枪射程远,威力强,还能瞄准,但它也有很多缺点:射速慢,价格昂贵,在一些近战场景还不如一把手枪,甚至匕首。你需要根据不同的地图,敌人,战术等因素,选择合适的武器,才能发挥最大的效果。

同样的道理,如果你是一个搜索应用的开发者,你可能知道,如果你的搜索系统只有向量搜索,你也是很难做好相关性查询的。向量搜索是一种利用深度学习模型将文本转换为高维向量,再将查询与数据的向量进行相似性计算的方法,它能够进行上下文的理解及语义分析,从而提高搜索结果的质量。但它也有很多缺点:延迟高,成本大,在一些场景下还不如传统的基于词项匹配的搜索方法。你需要根据不同的数据源,用户,需求等因素,选择合适的搜索技术,才能发挥最大的效能。

另一方面,我们之所以现在这么关注向量搜索,实际上我们的内驱力更多地来自于与大模型相结合以提升理解能力、总结能力、交互能力与生成能力。然而,大模型的使用并不依赖于向量搜索!

在本文中,我们将探索向量搜索的世界,并分析为什么仅有向量搜索是不够的。我们将从以下几个方面进行讨论:

  • 向量搜索是什么?它有什么优势和局限性?
  • 什么时候应该使用向量搜索?什么时候应该使用其他搜索技术?
  • 如何结合向量搜索和其他搜索技术,构建一个高效且灵活的搜索系统?
  • 大语言模型是如何与搜索技术相结合的?

向量搜索是什么?它有什么优势和局限性?

向量搜索是一种基于深度学习模型将文本转换为高维向量的方法。这些向量可以表示文本的语义信息,即文本的含义和主题。通过计算向量之间的相似度或距离,我们可以找到与给定查询最相关的文档。

向量搜索有以下几个优势:

  • 它可以处理自然语言中的复杂和模糊的表达方式,例如同义词,近义词,语言变体等。
  • 它可以捕捉文本之间的语义关系,例如上下位关系,因果关系,相似关系等。
  • 它可以支持多语言和跨语言的搜索,即用一种语言查询另一种语言的文档。
  • 它可以支持多模态和跨模态的搜索,即用文本查询图像或视频等非文本类型的文档。

向量搜索也有以下几个局限性:

  • 向量搜索在自然语言中的理解能力来自于深度学习模型,而非向量索引和向量相似性计算:
    • 需要大量的计算资源和存储空间来训练和部署深度学习模型。
    • 需要大量的标注数据来训练深度学习模型。如果数据质量不高或不足以覆盖所有可能的场景,模型可能无法泛化到新的数据上。
    • 需要定期更新深度学习模型以适应数据和用户行为的变化。如果模型过时或不准确,可能会影响搜索结果的质量和用户满意度。
  • 它需要考虑向量的维度和稠密程度,以选择合适的索引和查询方法。如果向量维度过高或过低,或者向量分布不均匀,可能会影响搜索效率和准确度。
  • 向量搜索的实施和维护成本较高,涉及大量的计算资源和专业知识。对于一些资源有限的应用场景,这可能不是一个可行的选择。
  • 在短文本搜索的场景中,向量搜索可能会面临语义理解的挑战。虽然向量搜索可以对查询进行语义分析,但当涉及到短文本时,语义的表示和理解可能不够准确,导致结果的相关性不佳。
  • 向量搜索以词嵌入的方式表示数据,在搜索的透明性和可解释性上对人类有天然的障碍,人类即无法轻易理解两个嵌入到底第为何相似,也难以知道应该具体如何修改特征,以提升相关性;
  • embedding模型的修改、调优、再训练对于大多数的开发团队来说,门槛太高,ROI也充满了不确定性。

因此,我们决策是否需要引入向量搜索时,需要对其各方面有充分的了解,而不是仅仅引入一个向量库的问题,特别是大部分向量库仅仅提供了向量存储,向量索引,向量相似性比较这三方面的能力,但这只解决了工程上问题,也就是说,向量库只解决了向量搜索搜得快不快,QPS高不高,吞吐大不大的问题,但没法解决搜索的准不准的问题,即在效果上的问题,需要依赖embedding模型的选择、调优和持续的训练。这并不是狭义上的“向量搜索”的问题,而是一个广义上的NLP(自然语言处理)的问题。

而且,在深度学习模型上,embedding模型仅仅只是整个分支中非常小的一部分,而其他大部分的NLP任务,输出的都是文本类的标签或token。在这些模型上,向量搜索是用不着的,反而是传统的全文检索,字段精确匹配和过滤更能适配这些NLP任务的推理输出。

各种常见的NLP任务
各种常见的NLP任务

这也首先回答了为什么只有向量搜索引擎是不够的。因为,向量生成比搜索更重要

什么时候应该使用向量搜索?什么时候应该使用其他搜索技术?

向量搜索并不是一种万能的搜索技术,它并不适合所有的场景和需求。我们需要根据不同的因素,如数据源,用户,需求等,来选择合适的搜索技术。以下是一些常见的场景和建议:

  • 如果数据源是长文本或富文本,例如新闻,博客,论文等,且用户需要基于语义和主题进行搜索,那么向量搜索是一个很好的选择。向量搜索可以提供更深入和广泛的搜索结果,而不仅仅是基于词项匹配的结果
  • 如果数据源是短文本或结构化文本,例如商品名称,标签,属性等,且用户需要基于精确和完整的匹配进行搜索,那么传统的基于词项匹配的搜索技术是一个更好的选择。传统的搜索技术可以提供更快速和准确的搜索结果,而不会引入不必要的噪音和歧义。
  • 如果数据源是多语言或跨语言的文本,例如社交媒体,评论,反馈等,且用户需要基于不同语言进行搜索,那么向量搜索是一个很好的选择。向量搜索可以支持多语言和跨语言的搜索,而不需要进行翻译或对齐。
  • 如果数据源是多模态或跨模态的文档,例如图像,视频,音频等,且用户需要基于文本进行搜索,那么向量搜索是一个很好的选择。向量搜索可以支持多模态和跨模态的搜索,而不需要进行特征提取或转换。

但这里需要注意的是,无论是跨语言还是跨模态,尽管我们应该在这种场景中选择使用向量搜索,但这并不意味着向量搜索是唯一的选择。

另外,这种选择应该是灵活可变的。一个健壮的系统中,我们需要随时可以根据需求的变化而进行数据结构的修改、模型的变更、向量维度的改变。

如何结合向量搜索和其他搜索技术,构建一个高效且灵活的搜索系统?

在实际应用中,我们往往需要结合向量搜索和其他搜索技术,甚至是结合机器学习与NLP推理技术来构建一个高效且灵活的搜索系统。这样可以充分利用各种技术的优势,同时避免各种技术的局限性。以下是一些常见的方法和建议:

  • 使用混合索引(Hybrid Index)来存储文档。混合索引是一种同时包含词项索引(Term Index)和向量索引(Vector Index)的索引结构。词项索引用于存储文档中出现的词项及其频率等信息。向量索引用于存储文档经过深度学习模型转换后得到的向量。这样可以在查询时根据不同的需求选择使用词项索引还是向量索引。
  • 使用双层检索(Two-stage Retrieval)来执行查询。双层检索是一种先使用词项索引进行粗排(Coarse Ranking),再使用向量索引进行精排(Fine Ranking)的查询方法。粗排用于从海量文档中快速筛选出一批候选文档。精排用于从候选文档中进一步筛选出最相关的文档。这样可以在保证查询效率的同时提高查询质量。
  • 使用多路检索(Multi-stage Retrieval)来执行查询。多路检索是一种使用多个不同类型或来源的索引进行检索,并将各个检索结果进行融合(Fusion)或重排(Re-ranking)的查询

而在灵活性上,系统应该具备以下特征:

  • 能够部署不同类型的NLP推理任务,既可以对数据源进行向量化以进行向量搜索,也能提取出数据中的深度理解的特征与标签信息,以进行词索引的过滤和检索
  • 能够支持向量数据的重建和分配,当需要调整数据维度,精度,或者嵌入的生成模型时,可以通过重建向量索引的方式进行原地更新。而当查询频率,流量吞吐发生变化时,也能调整数据对应的资源,以保持高效及合适的成本。

大语言模型是如何与搜索技术相结合的?

大语言模型与搜索技术相结合的一个主要应用是生成式搜索引擎。生成式搜索引擎是一种不再返回文档列表,而是直接返回答案或内容的搜索引擎。生成式搜索引擎可以利用大语言模型的能力,处理自然语言中的复杂和模糊的表达方式,捕捉文本之间的语义关系,支持多语言和跨语言的搜索,支持多模态和跨模态的搜索等。

生成式搜索引擎的一个典型例子是OpenAI的ChatGPT,它是一个基于GPT-3.5/GPT-4的大语言模型的聊天机器人。ChatGPT可以根据用户的输入,生成各种类型的内容,例如摘要,简历,创意写作,甚至代码。ChatGPT还可以与用户进行自然和有趣的对话,展示其对世界知识和常识的理解。

但我们需要明确知道的是,无论是ChatGPT还是Bard,亦或是文心一言,通义千问等,其输入都是文本。我们提交给大模型进行总结,扩展,翻译,重写,创作的内容,都不是向量。虽然大模型内部会把输入变为向量特征,再根据这些信息进行理解和生成,但这是模型内部的事情,并不需要我们外部参与。

因此,与大模型的结合,向量搜索不是必须得。仅有向量搜索也是不够的。毕竟,我们的主要目标是能够高效、准确地找出相关的文档来作为背景知识,将其与问题一起交给大模型处理。如何搜得快、搜得准、能适应足够多的使用场景,绝不应该是只使用基于密集向量的向量相似性搜索来解决的。

在这里,有效的组合各种搜索方式,并正确的使用各种NLP任务来协助理解才是正确的解。

总结

在搜索领域,向量搜索是一个重要的工具,但它并非解决所有问题的唯一选择。通过将多种技术和方法相结合,我们可以拓宽搜索的可能性,并提供更好的结果和用户体验。正如在CS游戏中,仅有狙击枪无法赢得比赛一样,仅仅依靠向量搜索也无法满足所有的搜索需求的。我们需要探索更广阔的搜索世界,不断创新和改进,以满足用户日益增长的需求,而非畸形的将用户期望的变更理解为某种技术的应用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 向量搜索是什么?它有什么优势和局限性?
  • 什么时候应该使用向量搜索?什么时候应该使用其他搜索技术?
  • 如何结合向量搜索和其他搜索技术,构建一个高效且灵活的搜索系统?
  • 大语言模型是如何与搜索技术相结合的?
  • 总结
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档