一文搞清楚什么是向量数据库?向量数据库该怎么选?
·
什么是向量数据库?向量数据库该怎么选?
这篇文章帮你梳理一下向量数据库的核心概念、工作原理和主流产品对比。
先用一个架构图帮你直观理解向量数据库在整个 AI 技术栈中的位置和工作原理。
一、什么是向量数据库
向量数据库是专门面向高维向量(Embedding嵌入向量),提供存储、索引、高效检索与管理能力的专用数据库,是RAG、AI智能体、语义搜索、个性化推荐等AI应用的核心底层组件。其核心核心能力是近似相似性搜索:输入一个查询向量,快速召回向量空间中距离最近、语义最相似的Top-K结果。
下面这张图展示了向量数据库在 AI 应用中的典型架构位置:

为什么需要向量数据库?
传统数据库(MySQL、PostgreSQL)擅长精确匹配——“找到 id=42 的行”。但 AI 场景需要的是语义相似——“找到和’猫科动物’含义最接近的文档”。传统数据库做不了这个事,因为:
- 传统数据库:基于 B+ 树索引,精确匹配,无法理解语义
- 全文检索(如 Elasticsearch):基于关键词匹配,"猫"和"小猫"能匹配,但"猫"和"feline"匹配不上
- 向量数据库:通过 Embedding 模型将文本转为数学向量,语义相近的内容在向量空间中距离也相近,从而实现跨语言、跨表达方式的语义检索。完美匹配了AI的需求,简直是为AI量身定做的。
二、向量数据库核心原理
1. Embedding(嵌入)
任何数据(文本、图片、音频)通过 Embedding 模型(如 OpenAI text-embedding-3、BGE、Cohere)转换为一个固定维度的浮点数数组,典型维度为 768、1024、1536、3072 维。
例:“今天天气很好” →
[0.023, -0.156, 0.891, 0.045, ..., -0.332](1536维)
2. 相似度度量
| 度量方式 | 公式 | 适用场景 |
|---|---|---|
| 余弦相似度 | cos(A,B) = A·B / (|A|×|B|) | 文本检索,关注方向不关注长度 |
| 欧氏距离 (L2) | d = √Σ(aᵢ-bᵢ)² | 图像检索,关注绝对距离 |
| 内积 (IP) | A·B = Σaᵢ×bᵢ | 推荐、MaxSim 检索 |
3. ANN 索引算法
暴力遍历百万级向量的计算量是 O(n×d),不可接受。ANN 通过预建索引将搜索降到亚线性时间:
| 算法 | 原理 | 召回率 | 速度 | 内存 | 代表产品 |
|---|---|---|---|---|---|
| HNSW | 分层可导航小世界图 | 高 | 快 | 高 | Qdrant, Weaviate, Milvus |
| IVF | 倒排文件 + K-Means 聚类 | 中高 | 中 | 中 | Milvus, FAISS |
| PQ | 乘积量化压缩 | 中 | 快 | 低 | FAISS |
| HNSW+PQ | 图索引 + 量化压缩 | 高 | 快 | 中 | Qdrant |
| DiskANN | 磁盘优化图索引 | 高 | 中 | 极低 | Milvus |
三、主流向量数据库对比
现在用一张雷达图来直观对比各产品在关键维度上的表现:
下面是完整的深度对比分析:
三、六大主流向量数据库详细对比
1. 基本信息总览
| 维度 | Pinecone | Milvus | Qdrant | Weaviate | pgvector | ChromaDB |
|---|---|---|---|---|---|---|
| 开源 | 闭源 | 开源 (LF AI & Data) | 开源 (Apache 2.0) | 开源 (BSD-3) | 开源 (PostgreSQL 扩展) | 开源 (Apache 2.0) |
| 核心语言 | 未公开 | Go + C++ | Rust | Go | C | Python |
| 首发年份 | 2021 | 2019 | 2021 | 2021 | 2021 | 2022 |
| 部署方式 | 全托管云 | 自托管 / Zilliz Cloud | 自托管 / Qdrant Cloud | 自托管 / Weaviate Cloud | PostgreSQL 扩展 | 嵌入式 / Server |
| 许可证 | 商业 | Apache 2.0 | Apache 2.0 | BSD-3 | PostgreSQL License | Apache 2.0 |
| GitHub Stars | N/A | 30k+ | 22k+ | 14k+ | 13k+ | 18k+ |
2. 技术特性对比
| 维度 | Pinecone | Milvus | Qdrant | Weaviate | pgvector | ChromaDB |
|---|---|---|---|---|---|---|
| 索引算法 | 专有 | HNSW/IVF/PQ/DiskANN/GPU | HNSW (含量化) | HNSW | HNSW/IVF | HNSW |
| 稀疏向量 | 支持 | 支持 | 支持 | 支持 | 不支持 | 有限 |
| 混合检索 | 支持 | 支持 | 支持 | 支持 | 需组合 | 有限 |
| 元数据过滤 | 支持 | 支持 | 强大 | 支持 | SQL WHERE | 支持 |
| 全文搜索 | 不支持 | 不支持 | 支持 | 支持 | PG 原生 | 不支持 |
| 分布式 | 内置 | 原生分布式 | 分布式集群 | 集群模式 | 依赖 PG | 不支持 |
| GPU 加速 | 不支持 | 支持 | 不支持 | 不支持 | 不支持 | 不支持 |
| 多租户 | Namespace | Partition | Collection | 多租户 | 手动实现 | 不支持 |
| RBAC | 支持 | 支持 | 支持 | 支持 | PG 原生 | 不支持 |
| 最大向量规模 | 取决于套餐 | 百亿级 | 十亿级 | 十亿级 | 百万级(推荐) | 百万级 |
3. 性能与延迟
| 场景 | 最优选择 | 关键指标 |
|---|---|---|
| 中小规模 (<1M) 高性能 | Qdrant | P99 延迟 ~15ms,纯 CPU |
| 高维向量 (1024+) | Milvus | GPU 加速,延迟最低 |
| 超大规模 (>10M) | Milvus | DiskANN 索引,百亿级 |
| 简单场景低成本 | pgvector | 依赖 PG 基础设施,增量成本 ~0 |
| 快速原型验证 | ChromaDB | 本地运行,极简部署 |
4. 成本对比(年成本估算仅供参考,百万级向量)
| 产品 | 12个月 TCO | 说明 |
|---|---|---|
| Pinecone | ~$840 - $2,760/年 | 全托管,按量计费,零运维 |
| Milvus (Zilliz Cloud) | ~$780/年起 | 云托管版,需运维人力 |
| Qdrant (自托管) | ~$660/年 | 服务器 + EBS + 10% 运维 |
| pgvector | ~$130/年 | 已有 PG 则增量成本极低 |
| ChromaDB | $0 | 本地嵌入式,完全免费 |
5. 各产品一句话总结
| 产品 | 一句话定位 |
|---|---|
| Pinecone | "我有钱但不想要运维"团队的首选,全托管零配置 |
| Milvus | 企业级重型选手,CNCF 毕业,适合百亿级数据和 GPU 加速 |
| Qdrant | Rust 写的性能怪兽,过滤查询能力最强,性价比之王 |
| Weaviate | 语义搜索专家,内置向量化模块,GraphQL API 友好 |
| pgvector | “别过度工程化”,已有 PG 就别再引入新系统了 |
| ChromaDB | LLM 开发者的玩具数据库,5 分钟跑起来,适合原型,不建议正式生产使用 |
四、选型决策指南
你的数据量有多大?
├── < 100 万向量
│ ├── 已有 PostgreSQL?→ pgvector(零增量成本)
│ ├── 快速原型/学习?→ ChromaDB(5分钟上手)
│ └── 需要高性能?→ Qdrant(Rust 性能怪兽)
├── 100 万 - 1000 万向量
│ ├── 有运维团队?→ Qdrant 或 Milvus
│ └── 零运维要求?→ Pinecone 或 Zilliz Cloud
└── > 1000 万向量
├── 需要 GPU?→ Milvus(唯一支持 GPU 加速)
├── 预算充足?→ Milvus 或 Pinecone
└── 预算有限?→ Qdrant + 分片
五、行业趋势
- pgvector 正在吞噬小规模场景——数据量 <100 万时,很多人不再引入独立向量数据库
- Milvus 仍是企业级首选——CNCF 毕业项目,Zilliz Cloud 降低了自建门槛
- Qdrant 是增长最快的黑马——Rust 生态加持,性能口碑极佳,LangChain/LlamaIndex 深度集成
- Faiss 不应被忽略——不是独立数据库,但作为算法库被 Milvus、Qdrant 等广泛集成
- RAG + Agent Memory 占据 65% 的使用场景——这是向量数据库最大的应用驱动力
一句话总结:“小量pgvector、中量Qdrant、大量Milvus、没钱Chroma、有钱Pinecone”
更多推荐

所有评论(0)