什么是向量数据库
编辑原文地址: https://weaviate.io/blog/what-is-a-vector-database
向量数据库简介
什么是向量数据库?
向量数据库是一种对结构化或非结构化数据(如文本或图像)及其向量嵌入(数据的数值表示)进行索引、存储和提供访问的数据库。它允许用户在生产环境中快速查找和检索相似对象。
由于其搜索功能,它有时也被称为向量搜索引擎。
向量数据库的兴起与 ChatGPT 的发布密切相关。自 2022 年底以来,公众开始了解最先进的大型语言模型 (LLM)的能力,而开发人员则意识到向量数据库可以进一步增强这些模型。
向量数据库如何工作?
向量数据库通过向量搜索检索数据对象。向量搜索使用向量嵌入,这些嵌入是人类可理解数据对象(如文本文档、图像、歌曲、视频等)的机器可理解格式。向量数据库还使用向量索引来大规模检索数据对象。
向量嵌入
向量嵌入是由机器学习模型生成的固定长度的实数数组(通常包含数百到数千个元素)。将数据对象生成向量的过程称为向量化。
例如,对于文本数据,"猫"和"小猫"具有相似的含义,尽管字面比较时"猫"和"小猫"这两个词非常不同。对于语义搜索有效工作,"猫"和"小猫"的嵌入表示必须充分捕捉它们的语义相似性。
向量化这两个词可能会得到以下词嵌入:
猫 = [1.5, -0.4, 7.2, 19.6, 3.1, ..., 20.2]
小猫 = [1.5, -0.4, 7.2, 19.5, 3.2, ..., 20.8]
这两个向量具有很高的相似性。相比之下,"班卓琴"或"喜剧"的向量与这两个向量的相似性就不会很高。由此可见,向量可以捕捉词语的语义相似性。
向量嵌入可以用于多种数据类型,包括文本、图像、音频等,使计算机能够理解这些不同类型数据之间的语义关系。
向量索引与近似最近邻方法
向量索引是组织向量嵌入的过程,使数据能够被高效检索。
当你想要找到与给定查询向量最接近的项时,暴力方法是使用 k 最近邻 (kNN)算法。但是,在拥有数百万甚至数十亿数据点的大型数据集中,计算查询向量与向量数据库中每个条目之间的相似度需要大量计算资源。这是因为所需的计算随着数据点的维度和数量线性增加 (O (n))。
找到相似对象的更有效解决方案是使用近似最近邻 (ANN)方法。其基本思想是预先计算向量嵌入之间的距离。然后,你可以将相似的向量组织并存储在一起(例如,在集群或图中),以便以后更快地找到相似的对象。这个过程称为向量索引。请注意,速度提升是以一些准确性为代价的,因为 ANN 方法只返回近似结果。
有几种 ANN 算法可以对向量进行索引,可以分为以下几类:
- 基于聚类的索引(例如,FAISS)
- 基于邻近图的索引(例如,HNSW)
- 基于树的索引(例如,ANNOY)
- 基于哈希的索引(例如,LSH)
- 基于压缩的索引(例如,PQ 或 SCANN)
HNSW (分层可导航小世界)是 Weaviate 中默认的 ANN 算法。HNSW 通过将向量组织成分层的多层图结构来工作,这允许在搜索过程中快速浏览数据集。HNSW 的结构在上层平衡更长的距离以加快搜索速度,在下层平衡更短的距离以进行精确搜索。
向量数据库与传统 (关系型)数据库的比较
现代向量数据库和传统 (关系型)数据库的主要区别来自它们针对优化的数据类型。关系型数据库设计用于存储结构化的列式数据,而向量数据库也针对非结构化数据(如文本、图像或音频)及其向量嵌入进行了优化。
由于向量数据库和关系型数据库针对不同类型的数据进行优化,它们在数据存储和检索方式上也有所不同。在关系型数据库中,数据存储在列中,通过传统搜索中的关键词匹配进行检索。相比之下,向量数据库还存储原始数据的向量嵌入,使高效的语义搜索成为可能。由于向量搜索可以语义上理解你的搜索词,它不依赖于精确匹配来检索相关搜索结果。这使它对同义词具有鲁棒性。
例如,假设你有一个存储 Jeopardy 问题的数据库,你想检索所有包含动物的问题。由于传统数据库中的搜索依赖于关键词匹配,你必须创建一个包含所有动物的大型查询(例如,包含"狗",或包含"猫",或包含"狼"等)。而通过语义搜索,你可以简单地查询"动物"的概念。
由于大多数向量数据库不仅存储向量嵌入,还将它们与原始源数据一起存储,它们不仅能够进行向量搜索,还支持传统的关键词搜索。有些数据库(如 Weaviate)甚至支持将向量搜索与关键词搜索相结合的混合搜索功能。
向量数据库架构
由于向量数据库不仅存储向量嵌入,还存储原始数据对象,它们的架构由多个索引组成。
用户可以创建任意数量的索引,每个索引可以包含任意数量的分片。分片可以分布在集群中的节点上和/或在节点之间复制。分片始终包含对象存储、倒排索引和向量存储。
向量搜索解决方案
有几种不同的方式可以在应用程序中启用向量搜索:
向量索引库(如 FAISS、Annoy 和 ScaNN)针对内存中的相似性搜索进行了优化,只存储向量,而不存储它们来源的数据对象。它们的索引通常是不可变的,这意味着它们不能动态更新而无需重建。此外,向量库通常需要在查询之前导入所有数据,这可能限制它们在动态或不断更新的环境中的灵活性。这些库适用于涉及静态数据且不需要完整 CRUD 操作或持久性能力的应用程序。
支持向量的数据库通过向量搜索功能扩展传统数据库,使企业能够在利用现有数据库功能的同时整合语义搜索。这些解决方案通常在大规模应用时在可靠性和速度方面存在问题。
向量数据库(如 Weaviate)为语义搜索用例提供全面解决方案,支持向量索引,并管理数据持久性、扩展和与 AI 生态系统的集成。它们为各种用例提供灵活的解决方案,从大规模 AI 应用到刚刚入门的用户。
向量搜索引擎通常与向量数据库可互换使用,但在技术上它们是不同的:向量搜索引擎只关注检索层,而向量数据库包括存储、数据管理和聚类等额外功能。
向量数据库常见问题解答
为什么我们需要向量数据库
向量数据库对于高效管理和搜索高维向量嵌入至关重要。它们支持实时准确的相似性搜索,这在 AI 原生应用程序栈中至关重要。
为什么使用向量数据库?
向量数据库已成为 AI 原生应用栈中的关键组件,特别是对于管理组织生成的大量非结构化数据,如图像、文本和音频。与传统数据库不同,传统数据库难以处理非结构化数据,而向量数据库通过利用高维向量表示或嵌入来高效存储、搜索和分析这些数据。
例如,在推荐系统或 NLP 任务中,向量数据库使企业能够获取有价值的见解,从而做出更明智的决策并改进个性化。此外,它们实现了类似人类的语义搜索能力,使企业能够找到与用户查询紧密匹配的产品、内容或信息。这不仅提高了用户体验和参与度,还推动了客户特定的个性化。
随着企业的增长和数据量的增加,向量数据库的可扩展性和性能至关重要。这些数据库针对处理大规模、高维向量进行了优化,确保即使在规模扩大的情况下,数据检索仍然快速准确。这种可扩展性对于需要实时数据处理的 AI 应用至关重要,如聊天机器人、欺诈检测和其他交互式 AI 系统。
向量数据库可以与现有的 AI 工作流程无缝集成,包括 LLM 编排框架、嵌入模型提供者和推理引擎。这种集成简化了生产级 RAG 应用程序的部署和扩展,使企业更容易利用 AI 的全部潜力。通过提供用于存储和检索向量的专用基础设施,向量数据库降低了与 AI 开发相关的复杂性和成本,使组织能够专注于创新和为客户提供个性化体验。
如何使用向量数据库
在数据库中存储向量嵌入,对它们进行索引以便高效检索,并执行相似性搜索以找到最相关的数据点。
如何选择向量数据库
向量数据库的选择标准包括搜索延迟、对象数量增加时的内存占用、召回率和检索相关性、成本效率以及与现有堆栈和 AI 工具(如语言模型和嵌入模型)的集成能力。
总结
本文解释了向量数据库是一种索引、存储和提供对结构化或非结构化数据及其向量嵌入的访问的数据库。像 Weaviate 这样的向量数据库允许根据数据的向量距离或向量相似性在大规模上进行高效的相似性搜索和检索。
我们介绍了它们的核心概念,如向量嵌入,并讨论了它们如何通过利用 ANN 算法实现高效向量搜索。此外,我们还探讨了其他向量搜索工具,并讨论了向量数据库相对于传统数据库、支持向量的数据库和向量库的优势。
- 0
- 0
-
分享