
最最近,“向量数据库”已成为数据库领域内最热门的术语,即使非搜索引擎数据库,也在添加向量搜索功能。也许您对向量数据库的火热感到困惑,这是一门新的、前沿技术吗?事实上,向量数据库 已经存在了好几年(很多新的向量库诞生于2019年)。如果您正在寻找最佳的检索性能,那么将基于关键字的搜索(有时称为分词搜索)与基于向量的方法相结合的混合方法代表了最先进的技术。
在 Elasticsearch® 中,你可以同时获得词法和向量搜索的最佳体验。Elastic® 让基于词法的列式检索变得流行,这一方法在 Lucene 中实现,并已经完善了十多年。此外,Elastic 还投资了数年时间来开发向量数据库能力,例如使用分层可导航小世界(HNSW)的近似最近邻搜索的本地实现(可在 8.0 及以后版本中使用)。

Elastic 定位为快速发展的向量数据库市场的领导者,其能力包括:
在这篇博客中,你将可以了解更多关于向量数据库的概念,它们的工作原理,适用于哪些用例,以及如何通过向量搜索实现更优质的搜索相关性。
向量数据库是一个系统,可以执行向量搜索。因此,为了了解向量数据库,让我们从向量搜索开始,以及为什么它最近引起了如此多的关注。
在最近关于人工智能如何彻底改变一切的讨论中,向量搜索扮演着重要角色,涵盖了从商业工作流程到教育的方方面面。那么为什么在这个话题上,向量搜索扮演如此重要的角色呢?首先,向量搜索使得我们能够对非结构化数据进行快速准确的语义搜索,而无需对元数据、关键词和同义词进行大量整理。其次,向量搜索为最近关于生成式人工智能的兴奋添加了一抹色彩,因为它可以从专有的数据源中提供准确的上下文信息,这些信息超出了大型语言模型在训练过程中“所知道”的范围(也就是说,这些信息不是它们在训练期间见过的)。
大多数标准数据库允许您通过匹配结构化字段来检索相关信息,包括匹配描述中的关键字和数字字段中的值。相比之下,向量数据库捕获非结构化文本的含义,并且帮助我们理解“你想要的是什么”,而不仅仅是匹配文本——这也被称为语义搜索。

此外,向量数据库允许您:

向量数据库由两个主要组件组成:

一些向量数据库仅提供存储和向量相似性搜索的功能,如上图 2 中的 A 所示。然而,这种方法给开发人员带来了如何生成这些嵌入的挑战。通常,这需要访问嵌入模型(显示为 C)和 通过API (B)以将其应用到您的数据和查询。而且您可能只能存储非常有限的元数据以及嵌入,这使得在用户应用程序中提供全面的信息变得更加复杂。
此外,专门的向量数据库让你自己去找到如何将搜索功能集成到你的应用程序中,就像图2右侧所示。这就好像你有一堆积木,但没有说明书告诉你如何把它们组装在一起。其次,为了解决这些问题,你需要管理软件架构的各个组成部分并需要评估来自不同供应商提供的许多解决方案,这些解决方案的质量和支持程度可能都不一样的。
但 Elastic 能提供您期望从向量数据库获得的所有功能,甚至更多!
与专用向量数据库相比,Elastic 在单个平台中支持三种功能,这对于实现向量搜索支持的应用程序至关重要:存储嵌入 (A)、有效搜索最近邻居 (B) 以及通过推理实现文本嵌入到向量表示 (C)。
与通过 API 访问它们相比,这种方法消除了效率低下和复杂性的问题(这是其他向量数据库所必需的)。Elastic 在 Lucene 中使用本机 HNSW 实现近似最近邻搜索,而且它还允许我们用一个更聪明的方法来过滤搜索结果(作为预过滤,以获得准确的结果),该算法在暴力计算和近似最近邻之间切换(即,当预过滤器删除大部分ANN的候选结果列表时,会回退到暴力计算)。
使用我们市场领先的学习稀疏编码器模型或自带您自己的嵌入模型。在此博客中了解有关将 PyTorch 创建的转换器加载到 Elastic 中的更多信息。

接下来,让我们来讨论实现高级语义搜索的关键问题,即密集向量搜索的挑战:

检索方法有两大类,通常称为“密集”和“稀疏”。两者都使用文本的向量表示,对含义和关联进行编码,并在第二步中执行接近匹配的搜索,如下图 5 所示。所有基于向量的检索方法都具有这个共同点。
我们通常所说的向量检索更具体地被称为“密集向量搜索”,其中使用嵌入模型将非结构化数据转换为数字表示,并且您可以在嵌入空间中找到与查询最近邻的匹配项。为了提供高相关性结果,密集向量搜索通常需要域内再训练。如果没有域内再训练,它们的表现甚至可能不如传统的词汇评分,例如 Elastic 的 BM25。向量搜索受到如此多关注的优点和原因是,经过微调后,它可以胜过所有其他方法,并且它允许您搜索文本以外的非结构化数据,例如图像或音频,这被称为“多模态搜索”。这种向量被认为是“密集的”,因为它的大多数值都是非零的。
与上述“密集”向量相比,“稀疏”表示包含很少的非零值。例如,使 Elasticsearch 流行起来的词法搜索 ( BM25 ) 就是稀疏检索方法的一个例子。它使用文本的词袋表示,并通过计算基本相关性评分方法(称为TF-IDF,即词频-逆文档频率)中的考虑因素,例如文档长度,从而实现高相关性。

最新的稀疏检索方法通过学习(learn)来生成稀疏表示,与其他方法相比具有多种优势:
基于稀疏和密集向量的检索之间的关键权衡
稀疏检索 | 基于密集向量的检索 |
|---|---|
无需调整即可获得良好的相关性(习得稀疏) | 需要领域训练;(微调之后)可以击败其他方法 |
可解释的 | 不可解释 |
快速响应 | 多模态 |
Elastic 8.8 引入了我们自己的学习稀疏检索器,包含在 Elasticsearch Relevance Engine TM (ESRE TM ) 中,它可以使用相关的相关单词扩展任何文本。它的工作原理如下:创建一个结构来表示文档中找到的术语及其同义词。在称为词扩展的过程中,模型根据词与文档的相关性一个包含30K个固定标记、单词和子单词单元的静态词汇表中添加新词(同义词)。
这与向量嵌入类似,因为在每个文档中创建并存储辅助数据结构,然后可以将其用于查询中的即时语义匹配。每个术语还有一个关联的分数,它捕获了其在文档中的上下文重要性,因此是可解释的——这与嵌入不同。
我们预先训练的稀疏编码器可让您实现开箱即用的语义搜索,并解决上述基于向量的检索的其他挑战:
您可以在这篇描述 Elastic Learned Sparse Encoder 的博客中了解该模型的架构、我们如何训练它以及它如何优于其他方法。
Elastic 的向量数据库是快速发展的向量搜索市场中的强大产品。它提供:

此外,与大多数其他产品不同,Elastic 与您的数据存储(本地或任何云提供商)无关,并允许您将两者结合起来(跨集群搜索)。
使用 Elastic,您可以加入生成式人工智能革命,并将您专有的、领域特定的数据与公共的语言模型进行增强。将其快速引入市场,因为无需调整、配置、模型选择或领域训练。为了进一步优化性能,Elastic 提供了灵活性,可以在成熟且功能丰富的平台上利用高级方法,例如使用经过微调的嵌入模型或运行您自己的语言模型。
不要只相信我们的话 — 我们被行业分析师公认为领导者,并被搜索市场大规模采用,并且拥有充满活力的用户社区。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。