什么是向量相似度?理解其在AI应用中的作用。
Qdrant 团队
·2024年2月24日

理解向量相似度:赋能下一代AI应用
各种AI应用的核心功能之一是首先理解用户查询背后的意义,然后为用户提出的问题提供相关的答案。随着接口和应用日益先进,这种查询可以是语言形式,也可以是图像、音频、视频或其他形式的非结构化数据。
例如,在电子商务平台上,用户可能试图查找“徒步服装”,而实际上他们想要的是“防水夹克”或“冬季袜子”之类的结果。关键词、全文甚至同义词搜索都无法对此类查询提供任何响应。类似地,在音乐应用中,用户可能正在寻找与他们听到的音频片段声音相似的歌曲。或者,他们可能想查找与他们在旅行中看到的家具外观相似的家具。
向量相似度如何工作?
那么,算法如何捕捉用户查询的本质,然后找到相关的结果呢?
在高层次上,它是这样工作的:
- 非结构化数据首先使用深度学习模型转换为数值表示,称为向量。这里的目标是捕捉数据的“语义”或关键特征。
- 然后,向量连同其原始数据的引用一起存储在向量数据库中。
- 当用户执行查询时,查询首先使用相同的模型转换为其向量表示。然后使用一种度量标准进行搜索,以找到与查询向量最接近的其他向量。
- 返回的结果列表对应于找到的最接近的向量。
所有这些搜索的核心是向量相似度的概念,它使我们能够衡量两个数据点之间的关联密切程度,它们有多相似或不同,或者找到其他相关的数据点。
本文将深入探讨向量相似度的本质,研究向量相似度搜索在AI环境中的应用,考察一些实际用例,并向您展示如何利用向量相似度和向量相似度搜索的力量来构建AI应用。
理解向量、向量空间和向量相似度
机器学习和深度学习模型需要数值数据作为输入来完成任务。因此,处理非数值数据时,我们首先需要将其转换为能够捕捉该数据关键特征的数值表示。这就是向量的作用。
向量是一组表示数据的数字,这些数据可以是文本、图像、音频或任何多维数据。向量存在于高维空间,即向量空间,其中每个维度捕捉数据的特定方面或特征。

工作
向量的维度数量可以从几十或几百到几千,每个维度作为数组的元素存储。因此,向量是固定长度的数字数组,它们总体上编码了它们所代表数据的关键特征。
向量嵌入由AI模型创建,这个过程称为向量化。然后将它们存储在像 Qdrant 这样的向量存储中,这些存储能够快速搜索向量空间,并找到相似或不同的向量,将它们聚类,找到相关的向量,甚至找到完全异常的向量。
例如,在文本数据中,“大衣”和“夹克”含义相似,即使词语完全不同。这两个词的向量表示应该在向量空间中彼此靠近。衡量它们在向量空间中接近程度的过程就是向量相似度。
因此,向量相似度是衡量两个数据点在向量空间中关联密切程度的一种度量。它根据它们各自的向量表示量化了两个数据点有多相似或不同。
假设我们有“国王”、“女王”和“苹果”这些词。给定一个模型,含义相似的词的向量在向量空间中彼此靠近。因此,“国王”和“女王”的向量表示会比“国王”和“苹果”或“女王”和“苹果”更接近,这是由于它们之间的语义关系。向量相似度就是用来计算这个的。
向量的一个非常强大的方面是它们不仅限于表示文本、图像或音频。事实上,任何类型的数据都可以创建向量表示。例如,您可以创建 3D 模型的向量表示。或者用于视频片段、分子结构,甚至是蛋白质序列。
有几种方法可以进行向量化。例如,在创建文本的向量表示时,该过程涉及使用转换器模型分析文本的语言元素。这些模型通过剖析文本的语言成分,本质上学习捕捉文本的本质。
如何计算向量相似度?
有几种计算两个向量之间相似度(或距离)的方法,我们称之为度量标准。最流行的方法是:
点积:通过将向量的对应元素相乘,然后求和这些乘积得到。较大的点积表示相似度更高。
余弦相似度:使用两个向量的点积除以它们的大小(范数)的乘积来计算。余弦相似度为 1 表示向量完全对齐,而值为 0 表示不相似。值为 -1 表示它们完全相反(或不相似)。
欧氏距离:假设两个向量在向量空间中像箭头一样,欧氏距离计算连接这两个箭头头部直线段的长度。欧氏距离越小,相似度越高。
曼哈顿距离:也称为出租车距离,如果沿着网格状路径移动,它计算两个向量在向量空间中的总距离。曼哈顿距离越小,相似度越高。

度量标准
根据经验,最佳相似度度量标准的最佳选择取决于向量是如何编码的。
在四种度量标准中,余弦相似度是最受欢迎的。
向量相似度的重要性
向量相似度对于赋能机器学习应用至关重要。通过将查询的向量表示与所有数据点的向量进行比较,向量相似度搜索算法可以检索最相关的向量。这有助于构建强大的相似度搜索和推荐系统,并在图像和文本分析、自然语言处理以及处理高维数据的其他领域有众多应用。
让我们看看可以利用向量相似度的一些关键方式。
图像分析
图像转换为向量表示后,向量相似度可以帮助创建识别、分类和比较它们的系统。这可以实现强大的反向图像搜索、人脸识别系统,或用于对象检测和分类。
文本分析
文本分析中的向量相似度有助于理解和处理语言数据。向量化文本可用于构建语义搜索系统,或用于文档聚类、抄袭检测应用。
检索增强生成 (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 index)。这意味着向量索引有助于加速向量搜索,而传统索引有助于过滤结果。
Qdrant 中的向量索引采用分层可导航小世界 (HNSW) 算法进行近似最近邻 (ANN) 搜索,根据基准测试,这是最快的算法之一。
可扩展性
对于海量数据集和苛刻的工作负载,Qdrant 从 v0.8.0 起支持分布式部署。在这种模式下,您可以设置 Qdrant 集群并将数据分布到多个节点,即使在工作负载增加的情况下也能保持高性能和可用性。集群支持分片和复制,并利用 Raft 一致性算法管理节点协调。
Qdrant 还支持向量量化,以减少内存占用并加速向量相似度搜索,这对于资源管理效率至关重要的大规模应用非常有效。
您可以选择三种量化策略 - 标量量化、二值量化和乘积量化 - 它们将帮助您平衡存储效率、搜索精度和速度之间的权衡。
安全性
Qdrant 提供多种安全功能,帮助保护数据和对向量存储的访问:
- API Key 认证:这有助于使用静态或只读 API 密钥保护 Qdrant Cloud 的 API 访问。
- 基于 JWT 的访问控制:您还可以通过 JSON Web Tokens (JWT) 实现更细粒度的访问控制,并在构建基于角色的访问控制 (RBAC) 时选择限制对存储数据特定部分的访问。
- TLS 加密:此外,您可以对数据传输启用 TLS 加密,以确保传输中的数据安全。
为了帮助实现数据主权,Qdrant 可以运行在混合云设置中。混合云允许跨各种环境无缝部署和管理向量数据库,并将 Kubernetes 集群集成到统一的托管服务中。您可以通过 Qdrant Cloud 的 UI 管理这些集群,同时保持对您的基础设施和资源的控制。
优化相似度搜索性能
为了在向量相似度搜索中实现最佳性能,除了上述功能外,Qdrant 还采用了许多其他策略。FastEmbed:Qdrant 支持 FastEmbed,这是一个轻量级的 Python 库,用于生成快速高效的文本嵌入。FastEmbed 使用与 ONNX Runtime 集成的量化转换器模型,比传统的嵌入生成方法快得多。
支持稠密向量和稀疏向量:Qdrant 支持稠密向量和稀疏向量表示。虽然稠密向量最常见,但您可能会遇到数据集包含一系列特定领域关键词的情况。在这种情况下,稀疏向量大放异彩。稀疏向量是数据的一种向量表示,其中大多数元素为零。
多租户:Qdrant 通过允许向量在单个集合内按 payload 分区来支持多租户。使用此功能,您可以隔离每个用户的数据,避免为每个用户创建单独的集合。为了确保索引性能,Qdrant 还提供了绕过全局向量索引构建的方法,以便您可以为每个用户独立索引向量。
IO 优化:如果您的数据不适合内存,可能需要存储在磁盘上。为了优化磁盘 IO 性能,Qdrant 在基于 Linux 的系统上提供了基于 io_uring 的 *async uring* 存储后端。基准测试表明,它显著减少了磁盘 IO 的操作系统开销。
数据完整性:为了确保数据完整性,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 频道中找到我们,我们将回答您可能有的任何问题。您也可以订阅我们的新闻通讯,保持领先。