什么是向量数据库?

向量数据库定义

向量数据库是一种以向量形式存储信息的数据库,向量是数据对象的数值表示,也称为向量嵌入。它利用这些向量嵌入的强大功能,对海量的非结构化数据半结构化数据(例如图像、文本或传感器数据)进行索引和搜索。向量数据库专为管理向量嵌入而构建,因此为管理非结构化和半结构化数据提供了完整的解决方案。

向量数据库不同于向量搜索库或向量索引:它是一种数据管理解决方案,支持元数据存储和过滤,可扩展,允许动态数据更改,执行备份,并提供安全功能。

向量数据库通过高维向量组织数据。高维向量包含数百个维度,每个维度对应于它所代表的数据对象的特定特征或属性。

什么是向量嵌入?

向量嵌入是主题、单词、图像或任何其他数据片段的数值表示。向量嵌入(也称为嵌入)由大型语言模型和其他AI 模型生成。

每个向量嵌入之间的距离使向量数据库或向量搜索引擎能够确定向量之间的相似性。距离可以表示数据对象的多个维度,使机器学习和 AI 能够理解模式、关系和底层结构。

相关内容:了解如何部署文本嵌入

向量数据库如何工作?

向量数据库使用算法对向量嵌入进行索引和查询。这些算法通过哈希、量化或基于图的搜索实现近似最近邻 (ANN) 搜索

为了检索信息,ANN 搜索会查找查询的最近向量邻居。与kNN 搜索(已知最近邻或真实 k 最近邻算法)相比,近似最近邻搜索的计算量更少,准确性也更低。但是,它可以高效地大规模处理高维向量的大型数据集。

向量数据库管道如下所示

Diagram of how a vector search engine works using vector embeddings

  1. 索引:向量数据库使用哈希、量化或基于图的技术,通过将向量映射到给定的数据结构来对向量进行索引。这可以加快搜索速度。

    • 哈希:哈希算法(例如局部敏感哈希 (LSH) 算法)最适合近似最近邻搜索,因为它可以实现快速的结果,并生成近似的结果。LSH 使用哈希表(类似于数独谜题)来映射最近的邻居。查询将被哈希到一个表中,然后与同一表中的一组向量进行比较,以确定相似性。
    • 量化:量化技术(例如乘积量化 (PQ))会将向量分解成更小的部分,并用代码表示这些部分,然后将这些部分重新组合在一起。结果是向量及其组件的代码表示。这些代码的集合称为码本。当被查询时,使用量化的向量数据库会将查询分解成代码,然后将其与码本进行匹配,以找到最相似的代码来生成结果。
    • 基于图: 图算法,例如分层可导航小世界 (HNSW) 算法,使用节点来表示向量。它对节点进行聚类,并在相似的节点之间绘制线或边,从而创建层次图。当启动查询时,算法将导航图层次结构,以找到包含与查询向量最相似的向量的节点。

    向量数据库还将索引数据对象的元数据。因此,向量数据库将包含两个索引:向量索引和元数据索引。

     

  2. 查询: 当向量数据库接收到查询时,它会将索引向量与查询向量进行比较,以确定最近的向量邻居。为了建立最近邻,向量数据库依赖于称为相似性度量的数学方法。存在不同类型的相似性度量

    • 余弦相似度 在 -1 到 1 的范围内建立相似度。通过测量向量空间中两个向量之间角度的余弦值,它可以确定完全相反的向量(用 -1 表示)、正交向量(用 0 表示)或相同向量(用 1 表示)。
    • 欧几里得距离 通过测量向量之间的直线距离,在 0 到无穷大的范围内确定相似度。相同向量用 0 表示,而较大的值表示向量之间的差异较大。
    • 点积 相似度度量在负无穷大到正无穷大的范围内确定向量相似度。通过测量两个向量的大小与其之间角度的余弦值的乘积,点积为彼此远离的向量分配负值,为正交向量分配 0,为指向相同方向的向量分配正值。
  3. 后处理: 向量数据库管道中的最后一步有时是后处理或后过滤,在此期间,向量数据库将使用不同的相似性度量来对最近邻重新排序。在此阶段,数据库将根据其元数据过滤在搜索中标识的查询的最近邻。

    一些向量数据库可能会在运行向量搜索之前应用过滤器。在这种情况下,它被称为预处理或预过滤。

为什么向量数据库很重要?

向量数据库很重要,因为它们保存向量嵌入并启用一组功能,包括索引、距离度量和语义搜索。换句话说,向量数据库专门用于管理非结构化数据半结构化数据。因此,向量数据库是机器学习和人工智能数字领域中的重要工具。

向量数据库的核心组件

向量数据库可能具有以下核心组件

  • 性能和容错能力: 分片和复制过程可确保向量数据库具有高性能和容错能力。分片涉及跨多个节点对数据进行分区,而复制涉及跨不同节点创建数据的多个副本。如果一个节点发生故障,这将启用容错能力并保持性能。
  • 监控功能: 为了确保性能和容错能力,向量数据库需要监控资源使用情况、查询性能和整体系统运行状况。
  • 访问控制功能: 向量数据库还需要数据安全管理。访问控制法规可确保合规性、问责制以及审核数据库使用情况的能力。这也意味着数据受到保护:只有拥有权限的人才能访问数据,并且会记录用户活动
  • 可扩展性和可调性: 良好的访问控制功能会影响向量数据库的可扩展性和可调性。随着存储数据量的增加,水平扩展的能力变得至关重要。不同的插入和查询速率以及底层硬件的差异会影响应用程序需求。
  • 多用户和数据隔离: 除了可扩展性和访问控制功能外,向量数据库还应支持多用户或多租户。与此同时,向量数据库应启用数据隔离,以便任何用户活动(例如插入、删除或查询)对其他用户保持私密,除非另有要求。
  • 备份: 向量数据库会创建定期数据备份。这是向量数据库在系统故障情况下的一个关键组件 - 如果数据丢失或数据损坏,备份可以帮助将数据库恢复到以前的状态。这可以最大限度地减少停机时间。
  • API 和 SDK: 向量数据库使用 API 来启用用户友好的界面。API 是应用程序编程接口或一种软件,它使应用程序能够通过请求和响应相互“对话”。API 层简化了向量搜索体验。SDK 或软件开发工具包通常会包装 API。它们是数据库用来进行通信和管理的编程语言。SDK 有助于开发人员友好地使用向量数据库,因为他们在开发特定用例(语义搜索、推荐系统等)时无需担心底层结构。

向量数据库与传统数据库有什么区别?

传统数据库以表格形式存储信息,并通过为数据点分配值来索引数据。查询时,传统数据库将返回与查询完全匹配的结果。

向量数据库以嵌入的形式存储向量,并启用向量搜索,后者根据相似性度量(而不是完全匹配)返回查询结果。向量数据库在传统数据库无法胜任的地方“更胜一筹”:它专为处理向量嵌入而设计。

在某些应用中,向量数据库也比传统数据库更适合,例如相似性搜索人工智能机器学习应用,因为它支持高维搜索和自定义索引,并且具有可扩展性、灵活性和高效性。

向量数据库的应用

向量数据库用于人工智能机器学习 (ML)自然语言处理 (NLP)和图像识别应用。

  • 人工智能/机器学习应用: 向量数据库可以通过语义信息检索和长期记忆来提高人工智能能力。
  • 自然语言处理应用: 向量相似性搜索是向量数据库的一个关键组件,它对自然语言处理应用非常有用。向量数据库可以处理文本嵌入,这使计算机能够“理解”人类语言或自然语言。
  • 图像识别和检索应用: 向量数据库将图像转换为图像嵌入。通过相似性搜索,它们能够检索相似图像或识别匹配图像。

向量数据库还可以服务于异常检测和人脸检测应用。

了解向量数据库如何为人工智能搜索提供支持。观看我们的网络研讨会,了解如何为您的项目构建现代搜索体验。

适用于 Elasticsearch 的向量数据库

Elasticsearch 包括一个用于向量搜索向量数据库。Elastic 使开发人员能够使用Elasticsearch 相关性引擎 (ESRE)构建自己的向量搜索引擎。

借助 Elasticsearch 工具,您可以构建一个向量搜索引擎,该引擎可以搜索非结构化和结构化数据,应用过滤器和分面,对文本和向量数据应用混合搜索,并利用文档和字段级安全性,同时在本地、云端或混合环境中运行。

探索 Elasticsearch 向量数据库

您接下来应该做什么

无论您何时准备就绪... 我们都可以通过以下 4 种方式帮助您将数据引入您的业务

  1. 开始免费试用,了解 Elastic 如何帮助您的业务。
  2. 浏览我们的解决方案,了解 Elasticsearch 平台的工作原理以及它们如何满足您的需求。
  3. 了解如何设置您的 Elasticsearch 集群,并通过我们 45 分钟的网络研讨会开始数据收集和提取。
  4. 与您认识的喜欢阅读本文的人分享本文。通过电子邮件、LinkedIn、Twitter 或 Facebook 与他们分享。

脚注

1 Gu, Huaping. “释放向量的力量:嵌入和向量数据库 - 领英。” 领英,2023 年 4 月 2 日,www.linkedin.com/pulse/unleashing-power-vectors-embeddings-vector-databases-huaping-gu