首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何通过Elastic的向量数据库获得词汇和AI技术的最佳搜索效果?

如何通过Elastic的向量数据库获得词汇和AI技术的最佳搜索效果?

原创
作者头像
点火三周
发布2023-07-24 20:27:26
发布2023-07-24 20:27:26
2.5K0
举报
文章被收录于专栏:Elastic Stack专栏Elastic Stack专栏

最最近,“向量数据库”已成为数据库领域内最热门的术语,即使非搜索引擎数据库,也在添加向量搜索功能。也许您对向量数据库的火热感到困惑,这是一门新的、前沿技术吗?事实上,向量数据库 已经存在了好几年(很多新的向量库诞生于2019年)。如果您正在寻找最佳的检索性能,那么将基于关键字的搜索(有时称为分词搜索)与基于向量的方法相结合的混合方法代表了最先进的技术。 

在 Elasticsearch® 中,你可以同时获得词法和向量搜索的最佳体验。Elastic® 让基于词法的列式检索变得流行,这一方法在 Lucene 中实现,并已经完善了十多年。此外,Elastic 还投资了数年时间来开发向量数据库能力,例如使用分层可导航小世界(HNSW)的近似最近邻搜索的本地实现(可在 8.0 及以后版本中使用)。

图 1:Elastic 提供的搜索创新时间表,包括自 2019 年以来建立向量搜索功能
图 1:Elastic 提供的搜索创新时间表,包括自 2019 年以来建立向量搜索功能

Elastic 定位为快速发展的向量数据库市场的领导者,其能力包括:

  • 完全高性能和可扩展的向量数据库功能,包括存储嵌入和有效搜索最近邻居
  • 专有的稀疏检索模型,可实现开箱即用的语义搜索 
  • 行业领先的所有类型的相关性——关键词、语义和向量相关性
  • 能够应用生成式人工智能并以专有的、特定于业务的数据作为上下文来丰富大型语言模型 (LLM)
  • 所有功能集成在一个平台上:执行向量搜索,将非结构化数据嵌入到向量表示中,应用现成的和定制的模型,并在生产中实现搜索应用程序,包括解决方案以确保观测和安全性。

在这篇博客中,你将可以了解更多关于向量数据库的概念,它们的工作原理,适用于哪些用例,以及如何通过向量搜索实现更优质的搜索相关性。

向量数据库的基础知识

为什么向量数据库如此受关注?

向量数据库是一个系统,可以执行向量搜索。因此,为了了解向量数据库,让我们从向量搜索开始,以及为什么它最近引起了如此多的关注。

在最近关于人工智能如何彻底改变一切的讨论中,向量搜索扮演着重要角色,涵盖了从商业工作流程到教育的方方面面。那么为什么在这个话题上,向量搜索扮演如此重要的角色呢?首先,向量搜索使得我们能够对非结构化数据进行快速准确的语义搜索,而无需对元数据、关键词和同义词进行大量整理。其次,向量搜索为最近关于生成式人工智能的兴奋添加了一抹色彩,因为它可以从专有的数据源中提供准确的上下文信息,这些信息超出了大型语言模型在训练过程中“所知道”的范围(也就是说,这些信息不是它们在训练期间见过的)。

向量数据库有什么用?

大多数标准数据库允许您通过匹配结构化字段来检索相关信息,包括匹配描述中的关键字和数字字段中的值。相比之下,向量数据库捕获非结构化文本的含义,并且帮助我们理解“你想要的是什么”,而不仅仅是匹配文本——这也被称为语义搜索。

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

  • 搜索文本以外的非结构化数据,包括图像或音频。涉及不止一种数据类型的搜索被称为“多模态搜索”——就像使用文本描述搜索图像一样。
  • 通过在统计(向量)模型中对用户特征或行为进行建模并将其他模型与其他模型进行匹配,从而个性化用户体验。
  • 创建“生成”体验,系统不仅返回与用户发出的查询相关的文档列表,还让用户参与对话,解释多步骤流程,并生成远远超出阅读相关信息范围的交互。

什么是向量数据库,它是如何工作的?

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

  1. 索引和存储嵌入,这就是通常所说的非结构化数据的多维数字表示。嵌入是由深度神经网络生成的,这些网络经过训练可以对此类非结构化数据进行分类,并捕获“密集”向量中非结构化数据的含义、上下文和关联,该向量通常有数百到数千维深度——这是向量搜索的秘密武器。
  2. 一种搜索算法,可以有效地在高维“嵌入空间”中找到最近的邻居,其中向量接近意味着含义相似。存在不同的搜索索引的方法,也称为近似最近邻 (ANN) 搜索,HNSW 是向量数据库提供商最常用的算法之一。
图 2:执行向量搜索的关键组件
图 2:执行向量搜索的关键组件

一些向量数据库仅提供存储和向量相似性搜索的功能,如上图 2 中的 A 所示。然而,这种方法给开发人员带来了如何生成这些嵌入的挑战。通常,这需要访问嵌入模型(显示为 C)和 通过API (B)以将其应用到您的数据和查询。而且您可能只能存储非常有限的元数据以及嵌入,这使得在用户应用程序中提供全面的信息变得更加复杂。 

此外,专门的向量数据库让你自己去找到如何将搜索功能集成到你的应用程序中,就像图2右侧所示。这就好像你有一堆积木,但没有说明书告诉你如何把它们组装在一起。其次,为了解决这些问题,你需要管理软件架构的各个组成部分并需要评估来自不同供应商提供的许多解决方案,这些解决方案的质量和支持程度可能都不一样的。

Elastic 作为向量数据库

但 Elastic 能提供您期望从向量数据库获得的所有功能,甚至更多!

与专用向量数据库相比,Elastic 在单个平台中支持三种功能,这对于实现向量搜索支持的应用程序至关重要:存储嵌入 (A)、有效搜索最近邻居 (B) 以及通过推理实现文本嵌入到向量表示 (C)。

与通过 API 访问它们相比,这种方法消除了效率低下和复杂性的问题(这是其他向量数据库所必需的)。Elastic 在 Lucene 中使用本机 HNSW 实现近似最近邻搜索,而且它还允许我们用一个更聪明的方法来过滤搜索结果(作为预过滤,以获得准确的结果),该算法在暴力计算和近似最近邻之间切换(即,当预过滤器删除大部分ANN的候选结果列表时,会回退到暴力计算)。 

使用我们市场领先的学习稀疏编码器模型或自带您自己的嵌入模型。在此博客中了解有关将 PyTorch 创建的转换器加载到 Elastic 中的更多信息。

图 3:Elastic 将向量数据库的所有组件组合在一个平台中
图 3:Elastic 将向量数据库的所有组件组合在一个平台中

如何通过向量搜索获得最佳检索性能

实施向量搜索的挑战

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

  • 选择正确的嵌入模型:标准嵌入模型会在域外恶化,就像公共存储库中现成的模型一样 - 例如,如我们之前关于基准向量搜索的博客的表 2 所示。如果幸运的话,预训练的模型足以满足您的用例,但通常您必须使用领域数据来微调它们,这需要带注释的数据和训练深度神经网络的专业知识。您可以在此博客中找到模型适应过程的蓝图。
图 4:与 BM25 相比,预训练的嵌入模型在域外恶化
图 4:与 BM25 相比,预训练的嵌入模型在域外恶化
  • 实施有效的过滤:在搜索和推荐系统中,您通常不会返回相关文档的列表;用户想要应用过滤器。使用向量搜索过滤元数据具有挑战性:如果您在运行向量搜索后进行过滤,则可能会遇到与过滤条件匹配的结果太少(或没有)的风险(称为“后过滤”)。否则,如果您首先进行过滤,最近邻搜索的效率不高,因为它是在数据的一个小子集上执行的,而向量搜索期间使用的数据结构(如 HNSW 图)是为整个数据集创建的。对于许多用例来说,将搜索范围限制为相关向量对于提供更好的客户体验是绝对必要的。
  • 执行混合搜索:为了获得最佳性能,您通常必须将向量搜索与传统的词法方法结合起来

密集与稀疏向量检索

检索方法有两大类,通常称为“密集”和“稀疏”。两者都使用文本的向量表示,对含义和关联进行编码,并在第二步中执行接近匹配的搜索,如下图 5 所示。所有基于向量的检索方法都具有这个共同点。

我们通常所说的向量检索更具体地被称为“密集向量搜索”,其中使用嵌入模型将非结构化数据转换为数字表示,并且您可以在嵌入空间中找到与查询最近邻的匹配项。为了提供高相关性结果,密集向量搜索通常需要域内再训练。如果没有域内再训练,它们的表现甚至可能不如传统的词汇评分,例如 Elastic 的 BM25。向量搜索受到如此多关注的优点和原因是,经过微调后,它可以胜过所有其他方法,并且它允许您搜索文本以外的非结构化数据,例如图像或音频,这被称为“多模态搜索”。这种向量被认为是“密集的”,因为它的大多数值都是非零的。

与上述“密集”向量相比,“稀疏”表示包含很少的非零值。例如,使 Elasticsearch 流行起来的词法搜索 ( BM25 ) 就是稀疏检索方法的一个例子。它使用文本的词袋表示,并通过计算基本相关性评分方法(称为TF-IDF,即词频-逆文档频率)中的考虑因素,例如文档长度,从而实现高相关性。

图 5:了解密集 "向量 "搜索和稀疏 "向量 "搜索的共同点和不同点
图 5:了解密集 "向量 "搜索和稀疏 "向量 "搜索的共同点和不同点

学习型稀疏检索器 —— 开箱即用的高性能语义搜索

最新的稀疏检索方法通过学习(learn)来生成稀疏表示,与其他方法相比具有多种优势:

  • 高相关性,无需任何域内再训练:它们可以开箱即用,无需在文档的特定域上调整模型。 
  • 可解释性:您可以跟踪哪些术语被匹配上,稀疏编码器附加的分数表明术语与查询的相关程度 - 非常可解释 - 而密集向量搜索依赖于通过应用嵌入模型导出的含义的数字表示,与许多机器学习方法一样,这是“黑匣子”。
  • 快速:稀疏向量正好适合倒排索引,这使得 Lucene 和 Elasticsearch 等成熟的稀疏检索器速度飞快。但稀疏检索器仅适用于文本数据,不适用于图像或其他类型的非结构化数据。

基于稀疏和密集向量的检索之间的关键权衡

稀疏检索

基于密集向量的检索

无需调整即可获得良好的相关性(习得稀疏)

需要领域训练;(微调之后)可以击败其他方法

可解释的

不可解释

快速响应

多模态

Elastic 8.8 引入了我们自己的学习稀疏检索器,包含在 Elasticsearch Relevance Engine TM (ESRE TM ) 中,它可以使用相关的相关单词扩展任何文本。它的工作原理如下:创建一个结构来表示文档中找到的术语及其同义词。在称为词扩展的过程中,模型根据词与文档的相关性一个包含30K个固定标记、单词和子单词单元的静态词汇表中添加新词(同义词)。 

这与向量嵌入类似,因为在每个文档中创建并存储辅助数据结构,然后可以将其用于查询中的即时语义匹配。每个术语还有一个关联的分数,它捕获了其在文档中的上下文重要性,因此是可解释的——这与嵌入不同。

我们预先训练的稀疏编码器可让您实现开箱即用的语义搜索,并解决上述基于向量的检索的其他挑战:

  • 您无需担心选择嵌入模型 - Elastic 的学习稀疏编码器模型已预先加载到 Elastic 中,您只需单击一下即可激活它。
  • 实现混合搜索的方法有多种,包括排名倒数融合(RRF)和线性组合。
  • 通过使用量化向量(从float到byte)并利用 Elasticsearch 中降低数据存储要求的所有最新创新,控制内存和存储。 
  • 在可处理 PB 级规模的强化平台中获取所有这些。

您可以在这篇描述 Elastic Learned Sparse Encoder 的博客中了解该模型的架构、我们如何训练它以及它如何优于其他方法。

为什么选择 Elastic 作为向量数据库?

Elastic 的向量数据库是快速发展的向量搜索市场中的强大产品。它提供:

  • 开箱即用的语义搜索
  • 一流的检索性能:使用 Elastic 的ELSER 与 BM25 相结合的混合搜索优于SPLADE、ColBERT 和 OpenAI 提供的高端嵌入模型。
图 6:Elastic 的稀疏检索模型优于其他流行的向量数据库,使用 NDCG@10 在公共 BEIR 基准的子集上进行评估
图 6:Elastic 的稀疏检索模型优于其他流行的向量数据库,使用 NDCG@10 在公共 BEIR 基准的子集上进行评估
  • 灵活的选择模型:无论是使用我们市场领先的ELSER模型、还是选择任何现成模型或引入您自己的优化模型 - 这样您就可以跟上这个快速发展的领域的创新
  • 使用实用算法对HNSW进行高效预过滤,适当权衡速度与相关性损失
  • 大多数搜索应用程序所需的功能是专用向量数据库所不提供的,例如聚合、过滤、分面搜索和auto-complete

此外,与大多数其他产品不同,Elastic 与您的数据存储(本地或任何云提供商)无关,并允许您将两者结合起来(跨集群搜索)。

总结

使用 Elastic,您可以加入生成式人工智能革命,并将您专有的、领域特定的数据与公共的语言模型进行增强。将其快速引入市场,因为无需调整、配置、模型选择或领域训练。为了进一步优化性能,Elastic 提供了灵活性,可以在成熟且功能丰富的平台上利用高级方法,例如使用经过微调的嵌入模型或运行您自己的语言模型。

不要只相信我们的话 — 我们被行业分析师公认为领导者,并被搜索市场大规模采用,并且拥有充满活力的用户社区。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 向量数据库的基础知识
    • 为什么向量数据库如此受关注?
    • 向量数据库有什么用?
    • 什么是向量数据库,它是如何工作的?
    • Elastic 作为向量数据库
  • 如何通过向量搜索获得最佳检索性能
    • 实施向量搜索的挑战
    • 密集与稀疏向量检索
  • 学习型稀疏检索器 —— 开箱即用的高性能语义搜索
  • 为什么选择 Elastic 作为向量数据库?
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档