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

向量数据库是一种专门设计用于高效存储和查询高维向量的数据库。在传统的 OLTP 和 OLAP 数据库中(如上图所示),数据以行和列的形式组织(这些被称为表),查询是根据这些列中的值执行的。然而,在包括图像识别、自然语言处理和推荐系统在内的某些应用中,数据通常表示为高维空间中的向量,这些向量,加上一个 id 和一个有效负载,我们称之为点。这些点是我们存储在 Qdrant 等向量数据库中的一种称为集合的元素。
在这种上下文中,向量是对象或数据点的数学表示,其中向量的元素隐式或显式地对应于对象的特定特征或属性。例如,在图像识别系统中,向量可以表示图像,向量的每个元素可以表示像素值或该像素的描述符/特征。在音乐推荐系统中,每个向量可以表示一首歌曲,向量的元素将捕获歌曲特征,如节奏、流派、歌词等。
向量数据库针对高效存储和查询这些高维向量进行了优化,它们通常使用专门的数据结构和索引技术,例如分层可导航小世界 (HNSW)(用于实现近似最近邻)和乘积量化等。这些数据库可以实现快速相似性和语义搜索,同时允许用户根据某种距离度量找到最接近给定查询向量的向量。最常用的距离度量是欧几里得距离、余弦相似度和点积,这三者都由 Qdrant 完全支持。
以下是这三者的快速概述
- 余弦相似度 - 余弦相似度是一种衡量两个向量相似程度的方法。简单来说,它反映了向量是否具有相同的方向(相似)或完全相反。余弦相似度常用于文本表示,以比较两个文档或句子之间的相似程度。余弦相似度的输出范围为 -1 到 1,其中 -1 表示两个向量完全不相似,1 表示最大相似度。
- 点积 - 点积相似度度量是衡量两个向量相似程度的另一种方法。与余弦相似度不同,它还考虑了向量的长度。这在例如,当您的文档的向量表示基于词频(单词频率)构建时可能很重要。点积相似度通过将两个向量中的相应值相乘,然后将这些乘积相加来计算。总和越高,两个向量越相似。如果您对向量进行归一化(使其中的数字之和为 1),点积相似度将变为余弦相似度。
- 欧几里得距离 - 欧几里得距离是一种衡量空间中两点之间距离的方法,类似于我们衡量地图上两个地点之间的距离。它通过找到两点坐标之间平方差之和的平方根来计算。这种距离度量也常用于机器学习中,以衡量两个向量的相似或不相似程度。
现在我们已经了解了什么是向量数据库以及它们在结构上与DDRSD的差异,接下来我们将探讨它们的重要性。
为什么我们需要向量数据库?
向量数据库在各种需要相似性搜索的应用中扮演着至关重要的角色,例如推荐系统、基于内容的图像检索和个性化搜索。通过利用其高效的索引和搜索技术,向量数据库能够更快、更准确地检索已表示为向量的非结构化数据,这有助于向用户呈现与他们查询最相关的结果。
此外,使用向量数据库的其他好处包括:
- 高效存储和索引高维数据。
- 能够处理包含数十亿数据点的大规模数据集。
- 支持实时分析和查询。
- 能够处理来自图像、视频和自然语言文本等复杂数据类型的向量。
- 改进机器学习和 AI 应用的性能并减少延迟。
- 与构建自定义解决方案相比,减少开发和部署时间及成本。
请记住,使用向量数据库的具体好处可能因您的组织的使用案例以及您最终选择的数据库功能而异。
现在让我们从高层次评估 Qdrant 的架构方式。
Qdrant 架构的高级概述

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