Qdrant 入门系列01 – 向量数据库:架构、部署与生产使用入门

Qdrant 是用 Rust 编写的开源向量数据库,适用于在 PostgreSQL 之外运行大规模检索的团队。它可支撑语义搜索、推荐系统、图像搜索,以及现代 RAG 技术栈中的检索环节。如果你希望对嵌入向量进行条件过滤,同时避免查询显著变慢,Qdrant 值得了解。

本文是 Qdrant 系列的起点,介绍基本概念、内部架构、与 pgvector 和 Milvus 的选型比较、2026 年的安全与量化能力,以及实际部署的学习路线。系列配套代码保存在 c4geeks/qdrant 仓库,原文示例在 Proxmox 虚拟机及相关 GPU 实例上测试。准确的行为定义应以 Qdrant 官方文档为准,qdrant/qdrant 仓库提供源码与发行版本。

为什么团队选择 Qdrant

当向量负载超出概念验证阶段,Qdrant 的三个特点尤其有用:相似度搜索叠加过滤条件后仍能保持较低延迟;量化可将内存需求降低到原来的约 1/4~1/40;运维范围相对集中,一名工程师也能维护生产系统。

项目于 2021 年首次发布,采用 Apache 2.0 许可证,可自行部署。官方 Docker 镜像、Helm Chart 和托管云使用相同的数据库程序,从笔记本演示迁移到 Kubernetes 集群无需学习另一套产品。

  • 支持过滤的 HNSW 搜索:索引遍历会考虑过滤条件。例如“与 X 相似、属于分类 Y、价格低于 Z”的查询,在数百万个点上也可实现个位数毫秒级延迟,具体取决于负载和配置。
  • 量化能力:标量量化以少量召回损失换取约 4 倍内存节省;乘积量化可达 8~64 倍;二值量化约节省 32 倍内存,借助 SIMD 的 popcount 运算,搜索路径最高可加速约 40 倍。这些是原文给出的能力范围,并非所有数据集的固定收益。
  • 稠密与稀疏混合检索:命名向量和稀疏向量 API 可在单次查询中结合语义相似度与 BM25 风格的关键词检索。
  • 基于 Raft 的集群管理:三节点集群支持分片、副本以及节点故障后的协调与恢复。
  • 默认行为明确:默认 Docker 启动方式没有认证、可以直接访问;生产安全配置需要主动启用。

什么是向量数据库

向量数据库存储称为 embedding(嵌入向量)的高维数值数组,并对其执行最近邻查询。CLIP、BGE、OpenAI text-embedding-3 等模型可将文本、图像或音频转换为嵌入;语义接近的输入通常在向量空间中距离较近。数据库本身不理解语义,但能计算距离,从而实现语义搜索、推荐、去重、异常检测和 RAG 检索。向量搜索与传统搜索的差别,在于稠密检索更适合处理表达模糊的语义意图。

核心概念速览

下列概念贯穿整个系列,先理解它们可以减少后续查阅文档的时间。

概念 含义
Collection(集合) 顶层命名空间,包含数据点、HNSW 索引和载荷结构,大致对应 SQL 中的表。
Point(数据点) 一条记录,包括 ID、一个或多个向量,以及 JSON 元数据载荷。
Vector(向量) 搜索引擎比较的数值数组。一个点可拥有多个命名向量,例如同时保存稠密向量和稀疏向量。
Payload(载荷) 附加在数据点上的任意 JSON 元数据,可过滤、可建索引,也可随搜索结果返回。
Shard 与 replica(分片与副本) 集群将集合拆为分片;分片可在不同节点上拥有多个副本,以提供容错。

Qdrant 的内部工作方式

搜索请求通过 6333 端口的 REST 或 6334 端口的 gRPC 进入系统。集合层将查询分派给相关 segment(段),各段通过 HNSW 索引找到候选近邻,载荷过滤条件排除不符合元数据约束的候选,随后合并并返回得分最高的数据点及其载荷。

写入首先进入 WAL(预写日志)以保证持久性,再写入活动段中的可变数据结构。后台优化器整理数据、生成或合并段、构建 HNSW 图,并按集合设置进行量化。集群中,写入会复制到目标分片的副本,并根据写入一致性配置等待确认。

  • HNSW 索引:全称为 Hierarchical Navigable Small World,即分层可导航小世界图。它构建分层近邻图以加速近似最近邻查询;Qdrant 的变体考虑过滤条件,可处理 must、should、must_not 等约束。
  • 段与优化器:集合由多个段组成。优化器在后台合并小段、为新数据建索引并应用量化。
  • WAL:保证 upsert 在崩溃后的可恢复性,是关键写入路径上需要进行持久化同步的部分。
  • 快照:可为单个集合或完整存储生成归档,通过上传、URL 拉取或启动选项恢复。自 v1.10 起,可直接将快照写入兼容 S3 的对象存储。
  • Raft 共识:集群模式使用 Raft 管理拓扑和集合元数据。数据点写入本身直接在分片副本间复制,不通过 Raft 日志,以提高吞吐量。

60 秒体验 Qdrant

安装 Docker 后,可以快速启动 Qdrant 并打开 Web UI。这只是体验环境,生产部署还需要后续安全配置。

docker run -d --name qdrant \
  -p 6333:6333 -p 6334:6334 \
  -v "$(pwd)/qdrant_storage:/qdrant/storage:z" \
  qdrant/qdrant

在浏览器中访问本机 6333 端口的 /dashboard,即可看到内置 Web UI、Console、Collections 面板和交互教程。REST API 使用相同端口,gRPC 使用 6334;持久化卷使数据在容器重启后保留。

实际部署可先阅读本系列的 Ubuntu 安装教程,其中包含 Docker Compose、原生 deb 包、UFW 和 systemd;Rocky Linux 10 与 Debian 13 另有对应篇章。

部署方式比较

根据运维能力和数据驻留要求选择部署方式。

方式 适用场景 投入
Docker 单节点演示、开发笔记本、小型生产服务器 数分钟
原生 deb / rpm 包 使用 systemd、SELinux 且不运行 Docker 的加固服务器 数十分钟
Kubernetes Helm 需要高可用、Ingress 和 GitOps 的自行部署生产环境 首次配置数小时
Qdrant Cloud 托管服务 不希望自行维护数据库的团队 无需自行部署数据库
GPU 镜像 数千万向量及以上、索引构建负载较重的环境 与 Docker 类似,另需驱动

Docker 镜像与原生包使用相同程序、配置结构和端口;迁移时主要需要移动存储卷并重启。Helm Chart 为每个 Pod 配置 StatefulSet 和 PVC。数据库数据目录需要支持 POSIX 语义的块存储,不能直接用 NFS 或对象存储替代文件系统层的数据盘。

托管云与自行部署如何选择

缺少平台工程师的小团队可先评估 Qdrant Cloud;已有 Kubernetes 运维经验的团队则可评估自行部署。可以将每月托管费用与虚拟机、集群及工程师维护时间比较。原文给出的粗略参考,是每季度投入约一个工程师工作日所对应的运维成本。

维度 Qdrant Cloud 自行部署
运维成本 固定周期账单,无需自行值守数据库 虚拟机或集群费用,加工程师时间
数据驻留 AWS、GCP、Azure 的服务区域,不是本地机房 可运行 Linux 的环境
升级 由服务方按维护窗口管理 自行负责,可用自动化重复执行
备份 内置,无需自己搭建 S3 流程 快照写入自有兼容 S3 存储
SLA 付费方案提供合同约定 取决于自己的运维保障
定制 限于服务提供的配置选项 可控制配置、进程运行环境与网络

Hybrid Cloud 介于两者之间:控制平面由 Qdrant Cloud 运行,数据平面位于自己的 Kubernetes 集群,使向量留在自有网络中,同时使用托管运维能力。

安全模型:API 密钥、JWT 与 TLS

默认情况下,Qdrant 监听全部接口且没有认证。这适合本地体验,不适合直接暴露在公网 VPS 上。生产安全主要分为三层:

  • 静态 API 密钥:在 config.yaml 中设置 service.api_key,或传入环境变量 QDRANT__SERVICE__API_KEY。之后请求必须携带 api-key 请求头,同时使用 TLS 防止密钥明文传输。
  • JWT 与 RBAC:在静态密钥基础上启用 service.jwt_rbac。令牌使用 API 密钥作为 HMAC 签名密钥,可限制为只读、指定集合或指定载荷范围等权限。这样可为仪表盘发放受限令牌,而不暴露主密钥。
  • TLS:可在前置 Nginx、Caddy 终止 TLS,也可在 Qdrant 中配置 tls.cert 与 tls.key。经 Nginx 代理 gRPC 时,还需正确配置 HTTP/2 与 TLS。

本系列的安全篇给出 API 密钥、TLS 和 Nginx 的完整配置;更细粒度的权限主题包括 JWT 与 RBAC。

用数字理解性能与量化

量化决定搜索引擎的内存消耗,也可能影响距离比较速度。不同模式在召回率和资源成本之间作出取舍,可按集合选择。

模式 内存节省 速度影响 召回影响
无量化,float32 基准 1 倍 基准 参考值
标量量化,int8 约 4 倍 通常略快,int8 计算成本较低 原文给出的典型损失约 1%
乘积量化 可配置为 8~64 倍 与子向量数量等配置有关 压缩越强,通常损失越大
二值量化 约 32 倍 XOR 与 popcount 路径最高约快 40 倍 原文给出的损失约 5%~10%,可重评分改善

常见模式是非对称量化:存储向量做二值量化,查询向量保持浮点精度。第一阶段得到粗略 top-k,再用原始向量重评分,恢复大部分召回。原文的性能调优篇以同一组一百万向量比较三种模式。

HNSW 的三个参数也值得了解:m 控制图连接度,ef_construct 影响构建阶段精度,ef 影响单次查询精度。多数负载可从默认值开始;确定召回目标并测得基准后,再调整参数。

与其他方案的选型比较

不存在适合所有场景的向量数据库,应结合现有技术栈、规模和团队能力判断。

  • 已经运行 PostgreSQL,向量少于一千万:可先考虑 pgvector,减少独立组件,并直接与现有表关联。原文认为 pgvector 0.9 已缩小部分速度差距,并提供 PostgreSQL 17 安装教程。
  • 需要高速条件过滤、希望自行部署,且已经超出 pgvector 的适用规模:可考虑 Qdrant,其过滤式 HNSW 和相对集中的运维范围是主要优势。
  • 十亿级向量:先评估 Milvus,其设计重点包括大规模分片和分区。
  • 希望开箱即用集成文本、图像、生成式模块:可评估 Weaviate,但需要维护更大的系统。
  • 不希望维护向量数据库:比较 Qdrant Cloud 与 Pinecone 的价格、区域及服务能力。

原文另有 Qdrant、pgvector、Milvus、Weaviate 的基准与决策矩阵,包含延迟、每秒请求数和召回率。

日常运维:快照、监控与扩容

数据库上线后的维护同样重要。有些能力默认可用,有些需要主动配置。

  • 快照:一次 REST 调用即可创建集合或全存储快照。自 v1.10 起可直接写入兼容 S3 的存储,便于通过 systemd 定时执行。原文所述 S3 恢复仍需经过 HTTP 上传步骤,备份篇会具体说明。
  • 监控:/metrics 提供 Prometheus 与 OpenMetrics 指标,/sys_metrics 提供系统指标。可导入相应 Grafana 仪表盘;本系列监控篇提供 Prometheus 配置与配套仪表盘 JSON。
  • 纵向扩容:默认配置中 HNSW 图和未量化向量主要消耗内存。先评估量化或 on_disk: true,通常比直接增加服务器规格更经济。
  • 横向扩容:三节点 Raft 集群是常见起点,可进行分片、复制和节点故障恢复。写入能否在故障时继续成功,还取决于副本和一致性配置。集群篇介绍引导、故障演练与分片迁移。
  • GPU 加速:自 v1.13 起,GPU 镜像可加速 HNSW 索引构建;它不是查询加速器,主要适合较大的建索引任务。原文 GPU 专题比较 RTX 4090 的使用成本与 CPU 构建时间。

Qdrant 学习路线

系列按多数团队的采用过程安排:先了解基础概念,再按操作系统选择安装方式,随后学习当前所需的运维主题。下面保留原文规划,其中部分主题是后续计划,不代表都已出现在当前 14 篇目录中。

按操作系统安装

  • Ubuntu 26.04 / 24.04 LTS:Docker 与原生 deb 两种方式。
  • Rocky Linux 10 / AlmaLinux 10:包含 SELinux 上下文和 firewalld。
  • Debian 13 / 12:Docker Compose 与 journald 日志转发。

核心操作

  • Web UI:Dashboard、Console、Graph 与交互教程。
  • 创建、配置和管理集合,包括命名向量与稀疏向量。
  • REST 和 gRPC,包含 curl、Python 与 Go 示例。
  • 过滤、载荷索引,以及稠密与稀疏混合检索。

生产运行

  • API 密钥、TLS 和 Nginx 反向代理。
  • JWT 与 RBAC 细粒度权限。
  • 快照、备份与 S3 恢复。
  • Prometheus 与 Grafana 监控。

扩展与优化

  • 三节点分布式集群。
  • Helm 部署 Kubernetes 集群。
  • 量化、HNSW 和索引调优。
  • GPU 索引构建加速。

构建应用

  • 使用 Qdrant、Ollama、LangChain 构建本地 RAG,并与 Ollama、pgvector 方案比较。
  • 使用 Qdrant 与 LlamaIndex 进行 PDF 问答。
  • 使用 Qdrant 与 CLIP 实现图像搜索。
  • 使用 Qdrant 与 FastAPI 构建语义搜索 API。
  • 使用 Qdrant 与 n8n 构建无代码向量工作流。

比较与迁移

  • Qdrant、pgvector、Milvus、Weaviate 的基准与选择。
  • 从 Pinecone 迁移并进行验证。
  • Qdrant 命令与 API 速查表。

原文说明后续篇章会陆续补充,总览会随之更新,可将其作为系列索引。

小结

对于 PostgreSQL 之外的自行部署向量检索,Qdrant 提供了相对集中的架构和运维能力,量化也有助于控制数千万向量场景的内存需求。初次评估时,可以先运行前面的 Docker 示例,体验 Web UI,再阅读对应操作系统的安装篇和安全篇,其余内容在此基础上展开。

系列配套代码保存在 c4geeks/qdrant 仓库。若命令无法在干净虚拟机上复现,可向原项目报告问题。

Avatar photo

关于 木子

Email: muzi@vip.rockylinux.cn 微信:VebinLee QQ: 2306867585
Founder of the Rocky Linux Chinese community, MVP、VMware vExpert、TVP, advocate for cloud native technologies, with over ten years of experience in site reliability engineering (SRE) and the DevOps field. Passionate about Cloud Computing、Microservices、CI&CD、DevOps、Kubernetes, currently dedicated to promoting and implementing Rocky Linux in Chinese-speaking regions.
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇