0

什么是向量相似性?了解它在 AI 应用中的作用。

Qdrant 团队

·

2024年2月24日

What is Vector Similarity? Understanding its Role in AI Applications.

理解向量相似性:赋能下一代 AI 应用

广泛的 AI 应用的核心功能是首先理解用户查询背后的含义,然后为用户提出的问题提供相关答案。随着接口和应用程序的日益先进,这种查询可以是语言、图像、音频、视频或其他形式的非结构化数据。

例如,在电子商务平台上,用户可能会尝试搜索“徒步服装”,而他们实际想要的是“防水夹克”或“冬季袜子”等结果。关键词搜索、全文搜索甚至同义词搜索都无法为此类查询提供任何响应。同样,在音乐应用程序上,用户可能正在寻找与他们听过的音频片段相似的歌曲。或者,他们可能想查找与他们在旅行中看到的一件家具外观相似的家具。

向量相似性如何运作?

那么,算法如何捕捉用户查询的本质,然后挖掘出相关结果呢?

概括来说,过程如下:

  • 非结构化数据首先使用深度学习模型转换为数值表示,称为向量。这里的目标是捕捉这些数据的“语义”或关键特征。
  • 然后将向量存储在向量数据库中,并附带对其原始数据的引用。
  • 当用户执行查询时,查询首先使用相同的模型转换为其向量表示。然后使用某种度量进行搜索,以查找与查询向量最接近的其他向量。
  • 返回的结果列表对应于找到的最接近的向量。

所有此类搜索的核心是向量相似性的概念,它使我们能够衡量两个数据点之间的密切关系、它们的相似性或差异性,或查找其他相关数据点。

在本文档中,我们将深入探讨向量相似性的本质,研究向量相似性搜索如何在 AI 背景下使用,查看一些真实世界用例,并向您展示如何利用向量相似性和向量相似性搜索的强大功能来构建 AI 应用程序。

理解向量、向量空间和向量相似性

机器学习和深度学习模型需要数值数据作为输入来完成其任务。因此,在处理非数值数据时,我们首先需要将它们转换为捕捉该数据关键特征的数值表示。这就是向量的用武之地。

向量是一组数字,表示数据,可以是文本、图像、音频或任何多维数据。向量存在于高维空间(向量空间)中,其中每个维度捕捉数据的特定方面或特征。

Working

工作原理

向量的维数可以从几十或几百到数千不等,每个维度都作为数组的元素存储。因此,向量是固定长度的数字数组,它们整体编码了它们所代表数据的关键特征。

向量嵌入由 AI 模型创建,这个过程被称为向量化。然后它们被存储在 Qdrant 等向量存储中,这些存储能够快速搜索向量空间,并找到相似或不同的向量,对它们进行聚类,找到相关的向量,甚至找到完全的异常值。

例如,在文本数据中,“coat”和“jacket”的含义相似,尽管单词完全不同。这两个词的向量表示应该使得它们在向量空间中彼此靠近。衡量它们在向量空间中接近程度的过程就是向量相似性。

因此,向量相似性是衡量向量空间中两个数据点之间关系密切程度的度量。它根据两个数据点各自的向量表示来量化它们的相似或不同程度。

假设我们有“king”、“queen”和“apple”这些词。给定一个模型,含义相似的词在向量空间中彼此靠近。“king”和“queen”的向量表示将比“king”和“apple”或“queen”和“apple”更接近,因为它们存在语义关系。向量相似性就是您计算这个的方法。

向量一个极其强大的方面是它们不仅限于表示文本、图像或音频。事实上,可以从任何类型的数据中创建向量表示。例如,您可以创建 3D 模型或视频片段、分子结构,甚至蛋白质序列的向量表示。

向量化有多种方法。例如,在创建文本的向量表示时,该过程涉及使用Transformer模型分析文本的语言元素。这些模型通过剖析其语言成分,本质上学习捕捉文本的精髓。

向量相似性如何计算?

有几种方法可以计算两个向量之间的相似度(或距离),我们称之为度量。最常用的是:

点积:通过将向量的对应元素相乘然后将这些乘积相加而获得。较大的点积表示更大的相似度。

余弦相似度:通过两个向量的点积除以它们的大小(范数)的乘积计算。余弦相似度为 1 表示向量完美对齐,而值为 0 表示没有相似度。值为 -1 表示它们方向相反(或不相似)。

欧几里德距离:假设两个向量在向量空间中像箭头一样,欧几里德距离计算连接这两个箭头头部的直线的长度。欧几里德距离越小,相似度越大。

曼哈顿距离:也称为出租车距离,如果沿着网格状路径,它计算向量空间中两个向量之间的总距离。曼哈顿距离越小,相似度越大。

Metrics

度量

经验法则是,最佳相似度度量的选择取决于向量的编码方式。

在这四种度量中,余弦相似度最受欢迎。

向量相似性的重要性

向量相似性在赋能机器学习应用方面至关重要。通过将查询的向量表示与所有数据点的向量进行比较,向量相似性搜索算法可以检索最相关的向量。这有助于构建强大的相似性搜索和推荐系统,并在图像和文本分析、自然语言处理以及处理高维数据的其他领域有大量应用。

让我们看看向量相似性的一些主要利用方式。

图像分析

一旦图像转换为其向量表示,向量相似性就可以帮助创建识别、分类和比较它们的系统。这可以实现强大的反向图像搜索、面部识别系统,或用于对象检测和分类。

文本分析

文本分析中的向量相似性有助于理解和处理语言数据。向量化文本可用于构建语义搜索系统,或用于文档聚类,或剽窃检测应用。

检索增强生成 (RAG)

向量相似性可以帮助表示和比较语言特征,从单个单词到整个文档。这有助于构建检索增强生成(RAG)应用程序,其中数据根据用户意图进行检索。它还支持细致入微的语言任务,如情感分析、同义词检测、语言翻译等。

推荐系统

通过将用户偏好向量转换为数据集中的项目向量,向量相似性可以帮助构建语义搜索和推荐系统。这可以应用于电子商务或OTT服务等一系列领域,帮助推荐相关产品、电影或歌曲。

由于其广泛的应用,向量相似性已成为 AI 工具中的关键组件。然而,在大规模生产环境中实施它会带来一些难题。下面我们将讨论其中一些问题,并探讨 Qdrant 如何帮助解决这些挑战。

这个领域最大的挑战来自研究人员所说的“维度诅咒”。像 k-d 树这样的算法在低维(2D 或 3D 空间)中查找精确匹配可能效果很好。然而,当您跳到高维空间(数百甚至数千维,这在向量嵌入中很常见)时,这些算法变得不切实际。传统的搜索方法以及 OLTP 或 OLAP 数据库难以有效地处理这种维度诅咒。

这意味着构建利用向量相似性的生产应用程序涉及应对多个挑战。以下是一些需要注意的关键挑战。

可扩展性

各种向量搜索算法最初是为了处理小到足以完全容纳在单台计算机内存中的数据集而开发的。

然而,在实际生产环境中,数据集可能包含数十亿个高维向量。随着数据集的增长,维护和搜索向量空间所需的存储和计算资源急剧增加。

对于构建可扩展应用程序,利用允许分布式架构并具有分片、分区和负载均衡能力的向量数据库至关重要。

效率

随着向量维度的增加,在低维度下工作的算法在测量真实相似度方面效果会降低。这使得在高维空间中查找最近邻居的计算成本高昂且不准确。

为了高效地处理查询,选择使用索引技术来加速高维向量空间搜索并减少延迟的向量搜索系统非常重要。

安全

对于实际应用,向量数据库通常存储敏感隐私数据。这可能包括客户记录中的个人身份信息 (PII)、专有文档等知识产权 (IP) 或受严格合规性法规约束的专业数据集。

为了数据安全,向量搜索系统应提供防止未经授权访问敏感信息的功能。此外,它应授权组织保留数据主权,确保其数据符合其自身的法规和法律要求,而与平台或云提供商无关。

这些是开发人员在尝试在生产应用程序中利用向量相似性时面临的众多挑战中的一部分。

为了直接应对这些挑战,我们在 Qdrant 中做出了几项设计选择,这些选择有助于支持超越简单 CRUD 应用程序的向量搜索用例。

Qdrant 如何解决向量相似性搜索挑战

Qdrant 是一个高性能、可扩展的向量搜索系统,采用 Rust 从头开发。Qdrant 利用了 Rust 著名的内存效率和性能。它支持水平扩展、分片和副本,并包含基于角色的身份验证等安全功能。此外,Qdrant 可以部署在各种环境中,包括混合云设置

以下是我们如何应对向量搜索应用程序在生产中面临的一些关键挑战。

效率

我们选择 Rust 极大地促进了 Qdrant 向量相似性搜索功能的效率。Rust 对安全性和性能的强调,无需垃圾回收器,有助于更好地处理内存和资源。Rust 以其性能和安全功能而闻名,尤其是在并发处理方面,我们大量利用它来高效处理高负载。

此外,Qdrant 的一个关键特性是我们同时利用了向量索引和传统索引(payload 索引)。这意味着向量索引有助于加速向量搜索,而传统索引有助于过滤结果。

Qdrant 中的向量索引采用分层可导航小世界 (HNSW) 算法进行近似最近邻 (ANN) 搜索,根据基准测试,这是最快的算法之一。

可扩展性

对于大规模数据集和高负载工作,Qdrant 从 v0.8.0 开始支持分布式部署。在此模式下,您可以设置 Qdrant 集群并将数据分布到多个节点,从而即使在负载增加的情况下也能保持高性能和可用性。集群支持分片和复制,并利用 Raft 一致性算法来管理节点协调。

Qdrant 还支持向量量化,以减少内存占用并加速向量相似性搜索,使其对于高效资源管理至关重要的大规模应用程序非常有效。

您可以选择三种量化策略——标量量化、二进制量化和乘积量化——这将帮助您控制存储效率、搜索精度和速度之间的权衡。

安全

Qdrant 提供了多项安全功能,以帮助保护数据和向量存储的访问安全

  • API 密钥认证:这有助于通过静态或只读 API 密钥保护对 Qdrant Cloud 的 API 访问。
  • 基于 JWT 的访问控制:您还可以通过 JSON Web Tokens (JWT) 启用更精细的访问控制,并在构建基于角色的访问控制 (RBAC) 时选择对存储数据的特定部分进行受限访问。
  • TLS 加密:此外,您可以启用数据传输的 TLS 加密,以确保传输中的数据安全。

为了帮助数据主权,Qdrant 可以在混合云设置中运行。混合云允许在各种环境中无缝部署和管理向量数据库,并将 Kubernetes 集群集成到统一的托管服务中。您可以通过 Qdrant Cloud 的用户界面管理这些集群,同时保持对基础设施和资源的控制。

优化相似性搜索性能

为了在向量相似性搜索中实现最佳性能,除了上面讨论的功能之外,Qdrant 还采用了许多其他策略。FastEmbed:Qdrant 支持 FastEmbed,这是一个轻量级的 Python 库,用于生成快速高效的文本嵌入。FastEmbed 使用与 ONNX Runtime 集成的量化 Transformer 模型,比传统的嵌入生成方法快得多。

支持稠密向量和稀疏向量:Qdrant 支持稠密向量和稀疏向量表示。虽然稠密向量最常见,但您可能会遇到数据集中包含一系列专业领域特定关键词的情况。稀疏向量在这种情况下表现出色。稀疏向量是数据的一种向量表示,其中大多数元素为零。

多租户:Qdrant 通过允许在一个集合内按 payload 对向量进行分区来支持多租户。通过这种方式,您可以隔离每个用户的数据,并避免为每个用户创建单独的集合。为了确保索引性能,Qdrant 还提供了绕过全局向量索引构建的方法,以便您可以为每个用户独立索引向量。

I/O 优化:如果您的数据不适合内存,可能需要存储在磁盘上。为了优化磁盘 I/O 性能,Qdrant 在基于 Linux 的系统上提供基于 io_uring 的异步 u-ring 存储后端。基准测试表明,它极大地有助于减少磁盘 I/O 带来的操作系统开销。

数据完整性:为确保数据完整性,Qdrant 分两个阶段处理数据更改。首先,更改记录在预写日志 (WAL) 中。然后,更改应用于段,段存储最新版本和单个点版本。在异常关机的情况下,数据从 WAL 恢复。

集成:Qdrant 与大多数流行框架集成,例如 LangChain、LlamaIndex、Haystack、Apache Spark、FiftyOne 等。Qdrant 还有几个值得信赖的合作伙伴,用于混合云部署,例如 Oracle Cloud Infrastructure、Red Hat OpenShift、Vultr、OVHcloud、Scaleway 和 DigitalOcean。

我们定期运行基准测试,将 Qdrant 与 Elasticsearch、Milvus 和 Weaviate 等其他向量数据库进行比较。我们的基准测试表明,Qdrant 在各种场景下,无论使用的精度阈值和度量如何,都能始终实现最高的每秒请求数 (RPS) 和最低的延迟。

真实世界用例

向量相似性正越来越多地应用于各种真实世界应用。在电子商务中,它通过比较用户行为向量和产品向量来驱动推荐系统。在社交媒体中,它可以通过分析用户交互向量来增强内容推荐和用户连接。在图像导向型应用中,向量相似性搜索实现了反向图像搜索、相似图像聚类和高效的基于内容的图像检索。在医疗保健领域,向量相似性通过比较 DNA 序列向量来识别相似性和变异,从而有助于基因研究。可能性是无限的。

VISUA 如何使用 Qdrant 是向量相似性在实际应用中的一个独特例子。作为领先的计算机视觉平台,VISUA 面临两个关键挑战。首先,需要一种快速准确的方法来识别图像及其中的对象,以进行强化学习。其次,由于数据量的快速增长,他们的质量控制过程面临可扩展性问题。他们之前依赖元信息和手动审查的质量控制已不再具有可扩展性,这促使 VISUA 团队探索向量数据库作为解决方案。

在探索了多个向量数据库后,VISUA 选择 Qdrant 作为首选解决方案。向量相似性搜索有助于识别相似性并对大量图像、视频和帧进行去重。这使得 VISUA 能够独特地表示数据,并优先处理带有异常的帧进行更仔细的检查,从而有助于扩展其质量保证和强化学习过程。阅读我们的案例研究以了解更多信息。

未来方向与创新

随着向量相似性搜索技术在实际部署中的增长,该技术正朝着许多有前途的方向发展。

我们正在开发更高效的索引和搜索算法,以更有效地处理不断增长的数据量和高维数据。同时,在动态数据集的情况下,我们正在努力增强对实时更新和低延迟搜索功能的支持。

Qdrant 是最安全的向量存储之一。然而,我们正在努力在向量搜索实现中引入更多保护隐私的技术,以保护敏感数据。

我们刚刚见证了向量相似性所能实现的一切的冰山一角。如果您正在研究一个有趣的向量相似性用例,我们很乐意听取您的意见。

关键要点

  • AI 中的向量相似性:向量相似性是 AI 中一项关键技术,可实现查询与相关数据的精确匹配,推动语义搜索和推荐系统等高级应用。

  • 向量相似性的多功能应用:这项技术为广泛的 AI 驱动应用提供支持,从电子商务中的反向图像搜索到文本处理中的情感分析。

  • 克服向量搜索挑战:大规模实现向量相似性会带来维度诅咒等挑战,但像 Qdrant 这样的专业系统提供了高效且可扩展的解决方案。

  • Qdrant 的高级向量搜索:Qdrant 利用 Rust 的性能和安全特性以及高级算法,即使对于大规模数据集,也能提供高速安全的向量相似性搜索。

  • 向量相似性的未来创新:向量相似性领域正在迅速发展,索引、实时搜索和隐私保护技术的进步将扩展其在 AI 应用中的能力。

Qdrant 入门

准备好在您的 AI 应用中实现向量相似性了吗?探索 Qdrant 的向量数据库,以增强您的数据检索和 AI 能力。有关更多资源和文档,请访问

我们随时在Discord 频道上回答您可能遇到的任何问题。您也可以订阅我们的时事通讯以保持领先地位。

免费开始使用 Qdrant

开始使用