截至 2026 年 6 月,主流向量数据库的全面对比:部署方式、索引算法、性能基准、混合搜索、定价、选型决策树。帮助 RAG 系统做技术选型。
向量数据库是专为高维向量近似最近邻搜索(ANN)优化的数据系统——本质是用空间换时间,通过牺牲少量精度换取海量数据的毫秒级检索。
| 数据库 | 开发商 | 发布时间 | 部署方式 | 开源 | 核心场景 |
|---|
| Pinecone | Pinecone | 2022 | 全托管云 | ❌ 闭源 | 快速启动,零运维 |
| Milvus | Zilliz | 2019 | 自托管/云 (Zilliz Cloud) | ✅ 开源 (Apache 2.0) | 大规模生产环境 |
| Qdrant | Qdrant | 2021 | 自托管/云 (Qdrant Cloud) | ✅ 开源 (Apache 2.0) | Rust 高性能,Filter 能力强 |
| Weaviate | Weaviate | 2020 | 自托管/云 (Weaviate Cloud) | ✅ 开源 (BSD-3) | 混合搜索 + GraphQL 原生 |
| Chroma | Chroma | 2023 | 嵌入式/自托管 | ✅ 开源 (Apache 2.0) | 快速原型,Python 生态 |
| pgvector | PostgreSQL 社区 | 2022 | 嵌入式 (PostgreSQL 插件) | ✅ 开源 (PostgreSQL) | 与关系数据共存 |
| LanceDB | LanceDB | 2023 | 嵌入式/云 | ✅ 开源 (Apache 2.0) | 多模态 + 列式存储 |
| Vespa | Yahoo | 2018 | 自托管/云 | ✅ 开源 (Apache 2.0) | 全文+向量+结构化搜索统一 |
| Elasticsearch | Elastic | 2022 (vector 支持) | 自托管/云 | ❌ 部分开源 (Elastic License) | 已有 ES 技术栈 |
| SingleStore | SingleStore | 2022 (vector 支持) | 全托管 | ❌ 闭源 | 统一结构化+向量 |
| 能力 | Pinecone | Milvus | Qdrant | Weaviate | Chroma | pgvector |
|---|
| 部署 | 全托管 | 自托管/云 | 自托管/云 | 自托管/云 | 嵌入式 | PG 插件 |
| 索引算法 | 自动优化 | IVF/HNSW/DiskANN | HNSW | HNSW | HNSW | IVFFlat/HNSW |
| 混合搜索 | ✅ | ✅ | ✅ | ✅ 原生 | ❌ | ✅ (搭配 pg) |
| 向量维度支持 | 最高 20K | 最高 32K | 最高 10K | 最高 5K | 最高 5K | 最高 2K |
| 过滤 (Filtering) | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| 多租户 | ✅ 命名空间 | ✅ 分区 | ✅ 集合 | ✅ 租户 | ❌ | ✅ PG 行级 |
| 一致性 | 最终 | 可调 | 可调 | 强 | 最终 | 强 (PostgreSQL) |
| SDK 语言 | Python/Node/Go | 10+ 语言 | Python/TS/Rust | Python/TS/Java | Python/JS | PG 客户端 |
| REST API | ✅ | ✅ | ✅ | ✅ GraphQL | ❌ | ❌ |
| Embedding 集成 | ❌ | ❌ | ❌ | ✅ 原生 | ✅ 可选 | ❌ |
| 维度 | 全托管 (Pinecone/Vespa Cloud) | 自托管 (Milvus/Qdrant) | 嵌入式 (Chroma/pgvector) |
|---|
| 运维成本 | 零 | 高(需要 K8s 经验) | 最低 |
| 可控性 | 低 | 高 | 最高 |
| 性能优化 | 供应商负责 | 自己调参 | 受限于宿主 |
| 安全性 | 依赖供应商 | 完全自控 | 完全自控 |
| 扩展性 | 自动 | 手动 | 有限 |
| 起步成本 | $70/月起 | 服务器费用 | $0 |
| 适合 | 快速上线 | 大规模/合规要求 | 原型/小规模 |
| 算法 | 原理 | 精度 | 速度 | 构建时间 | 内存占用 | 适合场景 |
|---|
| IVF (IVF-Flat) | 聚类 + 最近邻搜索 | 中 | 快 | 快 | 低 | 低成本,亿级以下 |
| IVF-PQ | 聚类 + 量化压缩 | 低 | 快 | 快 | 极低 | 超大规模,内存受限 |
| HNSW | 分层小世界图 | 最高 | 最快 | 慢 | 最高 | 高性能,千万级 |
| DiskANN | SSD 制导图 | 高 | 快 | 中 | 低 | 超大规模 (>1B) |
| PLSH | 位置敏感哈希 | 低 | 快 | 快 | 中 | 精确度要求宽松 |
| Flat (暴力) | 精确最近邻 | 100% | 慢 | 无 | N/A | 小数据集 (<10K) |
| 参数 | HNSW 推荐值 | IVF 推荐值 | 影响 |
|---|
| ef_construction | 100-500 | — | 越高召回越高,构建越慢 |
| M | 12-48 | — | 越高精度越高,内存越大 |
| nlist | — | 100-4096 | 越多精度越高,速度越慢 |
| nprobe | — | 1-100 | 越多精度越高,越慢 |
最佳实践:HNSW 是大多数场景的首选——精度最高、速度最快,唯一的代价是内存。如果数据量超过内存容量,考虑 IVF-PQ 或 DiskANN。
混合搜索 = 向量搜索 + 关键词搜索,是现代 RAG 系统的标配。
| 场景 | 纯向量搜索 | 混合搜索 |
|---|
| "如何重置密码?" — 精确短语匹配 | ❌ "重置"和"密码"的语义向量的接近"忘记"和"口令" | ✅ 精确命中"重置密码" |
| "2025 年第四季度财报"— 精确数字+时间 | ❌ 语义相近的"2024 Q4 财务报告"可能排在前面 | ✅ 精确过滤时间+关键词 |
| "实现一个二叉树的层序遍历" — 代码精确匹配 | ❌ 语义候选很多 | ✅ 精确匹配代码术语 |
| 数据库 | 融合策略 | 权重调节 | 评分 |
|---|
| Weaviate | 内置融合 | ✅ 可调权重 | ⭐⭐⭐⭐⭐ 最原生 |
| Qdrant | 内置融合 (1.10+) | ✅ 可调权重 | ⭐⭐⭐⭐⭐ |
| Milvus | Hybrid Search API | ✅ 可调权重 | ⭐⭐⭐⭐ |
| Pinecone | 可组合 (2024+) | ⚠️ 手动调整 | ⭐⭐⭐ |
| pgvector | 需要配合 pg Full-Text Search | ✅ SQL 完全控制 | ⭐⭐⭐⭐ |
| Chroma | ❌ 不支持 | — | ⭐ |
| 维度 | 推荐场景 | 与精度的关系 | 存储 |
|---|
| 384 (MiniLM) | 快速原型、低精度要求 | 基准 | 1x |
| 768 (BGE-base) | 通用场景,平衡 | 比 384 提升 5-10% | 2x |
| 1024 (text-embedding-3-large) | 高质量场景 | 比 768 提升 2-3% | 2.7x |
| 1536 (ada-002) | 旧系统兼容 | 与 1024 接近 | 4x |
| 3072 (Cohere embed-v3) | 领域特殊任务 | 边际收益递减 | 8x |
实践经验:768 维是大多数场景的最优选择——精度与存储的平衡点。从 768 升到 1024 精度收益约 2-3%,存储成本增加 35%。
| 策略 | 做法 | 召回率 | 适合场景 |
|---|
| 固定长度 | 256/512 tokens,有重叠 | ⭐⭐⭐ | 通用 |
| 句级分块 | 按句号/换行分割 | ⭐⭐⭐⭐ | 文章/文档 |
| 递归分块 | LangChain RecursiveCharacterTextSplitter | ⭐⭐⭐⭐ | 通用最佳 |
| 语义分块 | 用模型根据语义边界切分 | ⭐⭐⭐⭐⭐ | 高质量要求 |
| Agent 分块 | 用 LLM 分析文档结构后分块 | ⭐⭐⭐⭐⭐ | 复杂文档 |
# Qdrant 示例 — 利用 Metadata 过滤减少搜索空间
client.query_points(
collection_name="documents",
query_vector=embedding,
query_filter=models.Filter(
must=[
models.FieldCondition(key="category", match=models.MatchValue(value="technical")),
models.FieldCondition(key="date", range=models.Range(gte="2025-01-01")),
models.FieldCondition(key="author", match=models.MatchValue(value="verified")),
]
),
limit=10,
)
Metadata 过滤的关键作用:在大规模数据集中,好的过滤可以将搜索空间从 1000 万降到 10 万,速度提升 100 倍。设计索引时优先考虑过滤字段。
| 数据库 | 免费层 | 入门价格 | 大规估算 | 自托管成本 |
|---|
| Pinecone | ❌ | $70/月起 (g1.x-small) | $3000+/月 (1B 向量) | ❌ |
| Zilliz Cloud (Milvus) | 有限 | $59/月起 | $2000+/月 | 自建服务器 $2000+/月 |
| Qdrant Cloud | 1GB 免费 | $25/月起 | $1000+/月 | 自建 $500+/月 |
| Weaviate Cloud | 有限 | $25/月起 | $1500+/月 | 自建 $500+/月 |
| Chroma | 免费 (自托管) | $0 | 自建服务器 | 自建 $200+/月 |
| pgvector | 免费 (PG 插件) | $0 | 取决于 PG 实例 | $50+/月 (RDS) |
| LanceDB | 免费 (OSS) | $0 | 云 $500+/月 | 自建 $200+/月 |
| 你的首要考量 | 推荐选择 | 为什么不选其他 |
|---|
| 零运维,快速上线 | Pinecone | Milvus 自托管开销大 |
| 自托管 + 高性能 | Qdrant (Rust) | Milvus 组件多 (K8s 必备) |
| 混合搜索优先 | Weaviate / Qdrant | Pinecone 混合搜索弱 |
| 已有 PostgreSQL | pgvector | 加新 DB 增加运维负担 |
| 原型/实验阶段 | Chroma | 生产级工具过重 |
| 大规模 + 生产 | Milvus (HNSW/DiskANN) | Qdrant 分片不如 Milvus 成熟 |
| 多模态 (文本+图像) | LanceDB | 列式存储多模态友好 |
| 统一搜索 (全文+向量) | Elasticsearch / Vespa | 维护两个搜索栈成本高 |
- "向量数据库能解决所有搜索问题" — 向量搜索的核心是语义相似,精确匹配/结构化查询需要混合搜索
- "向量维度越高越好" — 高维度带来"维度灾难",检索精度不会线性提升但存储和延迟线性增加
- "HNSW 永远最优" — HNSW 内存占用高,数据量 > 内存时 IVF-PQ 或 DiskANN 更合适
- "开源免费 = 总成本低" — 自托管的运维成本(K8s、监控、备份)可能超过托管服务
- "向量数据库 = RAG 的全部" — 向量 DB 只是 RAG 的检索层,Chunking 质量和 LLM 的选择同样关键
- RAG基础 — RAG 系统架构中向量数据库的角色和集成方式
- LLM模型对比 — Embedding 模型的选择影响向量质量
- AI Coding工具对比 — 编码工具中的 RAG 使用场景
- Agent框架对比 — Agent 的记忆系统可能依赖向量数据库
- SaaS模式 — 向量数据库的托管服务是 SaaS 的一种具体实现(Pinecone/Zilliz/Qdrant Cloud)
- Freemium模式 — 各向量数据库的定价策略(免费层 vs 付费)直接影响用户选型
- Attention Is All You Need 论文精读 — Transformer 编码器的输出是向量数据库存储的核心内容
数据来源:各数据库官方文档、DB-Engines 向量数据库排名、个人实践和社区经验。定价和版本以官网为准。