7 款向量数据库实测
作者:🧑🚀 deadmau5v 发布于 2025/11/28
项目需要向量数据库,团队最初用 PostgreSQL + pgvector 走通了流程。
但随着数据量增长,PostgreSQL 的性能和容量瓶颈越来越明显。
于是我做了一轮测试,对比 7 款主流向量数据库的读写性能。
测试方法
所有自部署数据库统一在 Docker 中限制 2 核 2GB 内存,使用 Python 脚本生成 10,000 条 1024 维向量进行测试。
主要指标是 QPS,即每秒处理的请求数。云服务因网络延迟影响,仅作参考。
性能对比
先看结论。
写入性能对比 (QPS)
读取性能对比 (QPS)
Weaviate 写入最快,但 Milvus 读取遥遥领先。考虑到向量数据库的核心场景是相似性搜索,读取性能更重要。
各数据库详情
Milvus
读写性能平衡,很多大厂在用,社区成熟,文档完整。
测试结果
- 写入:10,000 条向量,19.31 秒,517.91 QPS
- 读取:10,000 次搜索,17.57 秒,569.09 QPS
特点
- GitHub Star: 34.6K
- 支持分布式部署(基于 Kubernetes)
- 提供配置计算器:https://milvus.io/zh/tools/sizing
- 官方教程完善:https://milvus.io/zh/bootcamp
Zilliz
Zilliz 是 Milvus 的发起者和主要维护者,提供 Milvus 托管服务。采用 Serverless 按量计费,支持 PB 级数据。
测试结果
服务器在美国(最近的在新加坡),网络延迟严重影响性能:
- 写入:1,000 条向量,422.71 秒,2.37 QPS
- 读取:100 次搜索,29.36 秒,3.41 QPS
价格
- Serverless: $0.3 / GB / 月
- Standard: $99 / 月
- 阿里云 Milvus: 最低 ¥2,500 / 月(4 服务节点 + 1 计算节点)
云服务不适合对延迟敏感的场景,自部署是更好的选择。
Qdrant
Qdrant 用 Rust 编写,性能优秀,社区成熟。
测试结果
- 写入:10,000 条向量,9.58 秒,1043.88 QPS
- 读取:10,000 次搜索,137.29 秒,72.84 QPS
特点
- GitHub Star: 23K,DockerHub 10M+ 下载
- 支持分布式部署(分片和复制)
- 提供 Python、TypeScript、Rust、Java、C#、Go SDK
写入快但读取慢,读写性能不平衡。
Weaviate
Weaviate 性能良好,常与 Qdrant、Milvus 竞争。
测试结果
- 写入:10,000 条向量,4.61 秒,2170.47 QPS
- 读取:10,000 次搜索,27.70 秒,360.98 QPS
特点
- GitHub Star: 13.3K
- 云原生设计,支持 Kubernetes 部署
- AI 原生,模块化,GraphQL API
- 支持混合搜索和元数据过滤
写入性能最强,读取性能仅次于 Milvus。
Elasticsearch
老牌搜索引擎,支持全文搜索、向量搜索、语义搜索、混合搜索。
测试结果
- 写入:10,000 条向量,10.87 秒,919.69 QPS
- 读取:1,000 次搜索,51.62 秒,19.37 QPS
特点
- GitHub Star: 72.6K
- 功能丰富,社区庞大
- 上手难度高,有专门的查询语言 Painless
- 索引构建较慢
适合已有 Elasticsearch 基础设施的团队,否则学习成本较高。
Pinecone
老牌闭源向量数据库,服务器在美国(最近在新加坡)。
测试结果
延迟太高,插入一条要等几十秒,直接放弃测试。
价格
- $25 / 月 + 写入 $4/M + 读取 $16/M
不推荐:延迟无法接受。
Chroma
Chroma 适合本地开发和原型设计,与 LLM 框架集成紧密。
测试结果
- 写入:10,000 条向量,7.12 秒,1404.88 QPS
- 读取:1,000 次搜索,51.66 秒,19.36 QPS
特点
- GitHub Star: 20K
- Python 优先,上手容易
- 早期单机,新架构支持分布式
写入快,读取慢,适合原型开发。
特性对比
| 特性 | 推荐 Milvus | Qdrant | Weaviate | Elasticsearch | Chroma |
|---|---|---|---|---|---|
| 开源 | |||||
| 分布式部署 | |||||
| 混合搜索 | |||||
| 元数据过滤 | |||||
| 社区成熟度 | 高 | 中 | 中 | 高 | 中 |
| 文档完整度 | 高 | 中 | 中 | 高 | 低 |
| 上手难度 | 低 | 低 | 中 | 高 | 低 |
结论
建议选用 Milvus。
- 读写性能平衡,读取性能最强
- 社区成熟,文档完整度最高
- 支持分布式部署(基于 Kubernetes)
- 大部分专业向量数据库开源,不会被锁定
对于小型项目或大型项目前期,PostgreSQL + pgvector 可以先用着。数据量大了再迁移到 Milvus。
Milvus 官方文档:https://milvus.io/docs/zh
Milvus 配置计算器:https://milvus.io/zh/tools/sizing
评论