介绍
向量数据库是一种相对较新的方式,用于与从深度学习架构等不透明的机器学习模型派生的抽象数据表示进行交互。这些表示通常被称为向量或嵌入,它们是用于训练机器学习模型以完成情感分析、语音识别、物体检测等任务的数据的压缩版本。
这些新数据库在语义搜索和推荐系统等许多应用中表现出色,在这里,我们将了解市场上最受欢迎且增长最快的向量数据库之一,Qdrant。
什么是Qdrant?
Qdrant “是一个向量相似性搜索引擎,它提供了一个生产就绪的服务,具有方便的API来存储、搜索和管理带有附加有效载荷的点(即向量)。” 您可以将有效载荷视为额外的信息片段,这些信息可以帮助您优化搜索,并接收可以向用户提供的有用信息。
你可以通过使用Python的qdrant-client开始使用Qdrant,通过拉取最新的qdrant docker镜像并在本地连接它,或者尝试Qdrant的云服务免费层级选项,直到你准备好完全切换。
既然已经解决了这个问题,让我们来谈谈什么是向量数据库。
什么是向量数据库?

向量数据库是一种设计用于高效存储和查询高维向量的数据库。在传统的在线事务处理和OLAP数据库(如上图所示)中,数据以行和列的形式组织(这些被称为表),查询是基于这些列中的值进行的。然而,在某些应用中,包括图像识别、自然语言处理和推荐系统,数据通常表示为高维空间中的向量,这些向量加上一个ID和一个有效载荷,是我们存储在向量数据库(如Qdrant)中的集合中的元素。
在这个上下文中,向量是对象或数据点的数学表示,其中向量的元素隐式或显式地对应于对象的特定特征或属性。例如,在图像识别系统中,向量可以表示图像,向量的每个元素表示像素值或该像素的描述符/特征。在音乐推荐系统中,每个向量可以表示一首歌曲,向量的元素将捕捉歌曲的特征,如节奏、流派、歌词等。
向量数据库针对存储和查询这些高维向量进行了优化,它们通常使用专门的数据结构和索引技术,例如分层可导航小世界(HNSW)——用于实现近似最近邻——以及产品量化等。这些数据库能够实现快速的相似性和语义搜索,同时允许用户基于某些距离度量找到最接近给定查询向量的向量。最常用的距离度量是欧几里得距离、余弦相似度和点积,这三种度量在Qdrant中得到了完全支持。
以下是这三者的简要概述:
- 余弦相似度 - 余弦相似度是一种衡量两个向量相似程度的方法。简而言之,它反映了向量是否具有相同的方向(相似)或完全相反。余弦相似度通常与文本表示一起使用,以比较两个文档或句子的相似程度。余弦相似度的输出范围从-1到1,其中-1表示两个向量完全不相似,1表示最大相似度。
- 点积 - 点积相似度度量是另一种衡量两个向量相似度的方法。与余弦相似度不同,它还考虑了向量的长度。例如,当基于术语(单词)频率构建文档的向量表示时,这可能很重要。点积相似度通过将两个向量中的相应值相乘,然后将这些乘积相加来计算。总和越高,两个向量越相似。如果将向量归一化(使其中的数字总和为1),则点积相似度将变为余弦相似度。
- 欧几里得距离 - 欧几里得距离是一种测量空间中两点之间距离的方法,类似于我们在地图上测量两个地点之间的距离。它是通过计算两点坐标之间差值的平方和的平方根来计算的。这种距离度量在机器学习中也常用于测量两个向量的相似性或差异性。
既然我们已经了解了什么是向量数据库以及它们在结构上与其他数据库的不同,接下来让我们探讨一下它们的重要性。
为什么我们需要向量数据库?
向量数据库在需要相似性搜索的各种应用中扮演着关键角色,例如推荐系统、基于内容的图像检索和个性化搜索。通过利用其高效的索引和搜索技术,向量数据库能够更快、更准确地检索已经表示为向量的非结构化数据,这有助于将最相关的结果呈现给用户的查询。
此外,使用向量数据库的其他好处包括:
- Efficient storage and indexing of high-dimensional data.
- Ability to handle large-scale datasets with billions of data points.
- Support for real-time analytics and queries.
- Ability to handle vectors derived from complex data types such as images, videos, and natural language text.
- Improved performance and reduced latency in machine learning and AI applications.
- Reduced development and deployment time and cost compared to building a custom solution.
请记住,使用向量数据库的具体优势可能会根据您组织的使用情况和最终选择的数据库特性而有所不同。
现在让我们从高层次上评估Qdrant的架构方式。
Qdrant架构的高级概述

上图展示了Qdrant的一些主要组件的高级概览。以下是你应该熟悉的术语。
- 集合: 集合是一个命名的点集(带有有效载荷的向量),您可以在其中进行搜索。同一集合中每个点的向量必须具有相同的维度,并通过单一度量进行比较。命名向量可用于在单个点中拥有多个向量,每个向量可以有自己的维度和度量要求。
- 距离度量: 这些用于测量向量之间的相似性,并且必须在创建集合时同时选择。度量的选择取决于向量的获取方式,特别是用于编码新查询的神经网络。
- 积分: 点是Qdrant操作的核心实体,它们由一个向量和一个可选的id和payload组成。
- id: 向量的唯一标识符。
- Vector: 数据的高维表示,例如图像、声音、文档、视频等。
- 负载: Payload是一个JSON对象,包含可以添加到向量的附加数据。
- 存储: Qdrant 可以使用两种存储选项之一,内存存储(将所有向量存储在RAM中,速度最快,因为仅在持久化时需要磁盘访问),或Memmap存储(创建与磁盘文件关联的虚拟地址空间)。
- 客户端:您可以用来连接到Qdrant的编程语言。
下一步
现在您对向量数据库和Qdrant有了更多的了解,您可以开始学习我们的教程之一。如果您从未使用过向量数据库,请直接进入入门部分。相反,如果您是这些技术的有经验的开发者,请跳转到与您的用例最相关的部分。
在学习教程的过程中,如果您有任何问题,请在我们的Discord频道这里告诉我们。😎
