Qdrant 简介 #
什么是向量数据库? #
向量数据库是一种专门用于存储、索引和查询高维向量数据的数据库系统。在 AI 和机器学习时代,向量数据库扮演着至关重要的角色。
向量的本质 #
text
向量是将现实世界的数据转换为数值表示:
文本 → Embedding → [0.1, 0.2, -0.3, 0.4, ...]
图像 → CNN → [0.5, -0.1, 0.8, 0.2, ...]
音频 → Encoder → [0.3, 0.7, -0.2, 0.9, ...]
每个向量都是高维空间中的一个点
相似的内容在向量空间中距离更近
为什么需要向量数据库? #
text
传统数据库 vs 向量数据库
传统数据库:
├── 精确匹配(WHERE name = 'apple')
├── 范围查询(WHERE price > 100)
└── 无法理解语义相似性
向量数据库:
├── 相似性搜索(找到最相似的向量)
├── 语义理解('苹果' 和 'iPhone' 相似)
└── 多模态检索(文本搜图、图搜图)
Qdrant 概述 #
Qdrant(读作 “quadrant”)是一个开源的高性能向量数据库,由 Qdrant 公司开发维护。它使用 Rust 语言编写,专为生产环境设计。
发展历程 #
text
时间线:
2021 年
└── Qdrant 项目启动
2022 年
├── 发布首个稳定版本
└── 开源社区快速增长
2023 年
├── 推出 Qdrant Cloud 云服务
└── 支持 RAG 应用场景
2024 年
├── 分布式架构成熟
└── 企业级特性完善
核心特性 #
| 特性 | 描述 |
|---|---|
| 高性能 | Rust 实现,毫秒级查询响应 |
| 开源 | Apache 2.0 许可证 |
| 云原生 | Kubernetes 友好 |
| 过滤查询 | 丰富的元数据过滤能力 |
| 分布式 | 水平扩展,高可用 |
| 多接口 | REST API、gRPC、多种 SDK |
架构设计 #
整体架构 #
text
┌─────────────────────────────────────────────────────────────┐
│ Client Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ REST API │ │ gRPC │ │ SDK │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Service Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Collection │ │ Search │ │ Points │ │
│ │ Manager │ │ Engine │ │ Manager │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ Storage Layer │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ HNSW Index │ │ Payload │ │ Segment │ │
│ │ │ │ Storage │ │ Storage │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────┘
核心组件 #
1. Collection(集合) #
text
Collection 是向量的容器:
Collection: "documents"
├── 向量维度: 384
├── 距离度量: Cosine
├── 向量数量: 1,000,000
└── 配置信息
2. Point(点) #
text
Point 是单个向量记录:
Point:
├── id: 唯一标识符
├── vector: [0.1, 0.2, ...] (高维向量)
└── payload: {"title": "...", "url": "..."} (元数据)
3. Segment(段) #
text
Segment 是存储和索引的基本单元:
Segment:
├── 向量存储
├── HNSW 索引
├── Payload 索引
└── 写优化结构
HNSW 索引算法 #
Qdrant 使用 HNSW(Hierarchical Navigable Small World)算法进行向量索引,这是目前最高效的近似最近邻搜索算法之一。
HNSW 原理 #
text
HNSW 构建多层图结构:
Layer 2 (稀疏) ○─────────────────○
│ │
Layer 1 (中等) ○───○─────────○───○
│ │ │ │
Layer 0 (密集) ○─○─○─○─○─○─○─○─○─○─○
搜索过程:
1. 从顶层开始
2. 在每层找到最近邻
3. 逐层向下细化
4. 底层返回结果
HNSW 优势 #
text
✅ 查询速度快:O(log n) 复杂度
✅ 高召回率:可配置精度
✅ 动态更新:支持实时插入删除
✅ 内存效率:合理的内存占用
距离度量 #
Qdrant 支持多种向量距离度量方式:
1. 余弦相似度(Cosine) #
text
最常用的度量方式,关注向量方向:
cos(a, b) = (a · b) / (|a| × |b|)
适用场景:
├── 文本嵌入
├── 语义相似性
└── 归一化向量
2. 欧几里得距离(Euclidean) #
text
计算向量间的直线距离:
euclid(a, b) = √Σ(ai - bi)²
适用场景:
├── 图像特征
├── 物理距离
└── 未归一化向量
3. 点积(Dot Product) #
text
直接计算向量点积:
dot(a, b) = Σ(ai × bi)
适用场景:
├── 推荐系统
├── 归一化向量
└── 性能优先场景
与其他系统对比 #
Qdrant vs Pinecone #
| 特性 | Qdrant | Pinecone |
|---|---|---|
| 开源 | ✅ | ❌ |
| 自托管 | ✅ | ❌ |
| 价格 | 免费/按需付费 | 按量计费 |
| 过滤 | 强大 | 基础 |
| 学习曲线 | 中等 | 低 |
Qdrant vs Milvus #
| 特性 | Qdrant | Milvus |
|---|---|---|
| 部署复杂度 | 低 | 高 |
| 内存效率 | 高 | 中 |
| 社区活跃度 | 高 | 高 |
| 企业特性 | 完善 | 完善 |
Qdrant vs Weaviate #
| 特性 | Qdrant | Weaviate |
|---|---|---|
| 性能 | 更高 | 高 |
| 模块化 | 中等 | 高 |
| GraphQL | ❌ | ✅ |
| 内置向量化 | ❌ | ✅ |
应用场景详解 #
1. RAG(检索增强生成) #
text
RAG 工作流程:
用户问题
↓
Embedding 模型
↓
向量查询 → Qdrant
↓
相关文档
↓
LLM 生成回答
2. 语义搜索 #
text
语义搜索流程:
查询文本 → Embedding → 向量搜索 → 排序结果
优势:
├── 理解同义词
├── 跨语言搜索
└── 概念关联
3. 推荐系统 #
text
推荐系统架构:
用户行为 → 用户向量
↓
物品特征 → 物品向量 → Qdrant
↓
相似物品推荐
性能特点 #
查询性能 #
text
典型查询延迟:
数据规模: 100 万向量
维度: 384
召回率: 95%
查询延迟: < 10ms (P99)
吞吐量: > 10,000 QPS
内存效率 #
text
内存占用估算:
100 万向量 × 384 维 × 4 字节 = 1.5 GB
HNSW 索引开销 ≈ 30%
总内存 ≈ 2 GB
量化后可减少 4-8 倍
生态系统 #
官方 SDK #
text
Python:
pip install qdrant-client
JavaScript:
npm install @qdrant/js-client-rest
Go:
go get github.com/qdrant/go-client
Rust:
qdrant-client = "1.x"
集成框架 #
text
LangChain 集成:
├── 向量存储后端
├── 文档检索器
└── RAG 链
LlamaIndex 集成:
├── 索引存储
├── 查询引擎
└── 混合检索
Haystack 集成:
├── 文档存储
├── 嵌入后端
└── 检索管道
小结 #
Qdrant 是一个功能强大、性能卓越的向量数据库:
- 高性能:Rust 实现,HNSW 索引
- 易用性:丰富的 API 和 SDK
- 生产就绪:分布式、高可用
- 开源免费:Apache 2.0 许可证
下一步 #
了解了 Qdrant 的基本概念后,接下来学习 安装与配置,开始你的 Qdrant 之旅!
最后更新:2026-04-04