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