2025年11月28日
7 款向量数据库实测
AI/LLM · 向量数据库 · 性能测试 · 架构设计
在 Docker 2H2G 限制下对 Zilliz、Milvus、Pinecone、Qdrant、Weaviate、Elasticsearch、Chroma 进行写入和读取性能测试,用数据说明哪款向量数据库更适合生产环境。
项目需要向量数据库,团队最初用 PostgreSQL + pgvector 走通了流程。
但随着数据量增长,PostgreSQL 的性能和容量瓶颈越来越明显。
于是我做了一轮测试,对比 7 款主流向量数据库的读写性能。
测试方法
所有自部署数据库统一在 Docker 中限制 2 核 2GB 内存,使用 Python 脚本生成 10,000 条 1024 维向量进行测试。
主要指标是 QPS,即每秒处理的请求数。云服务因网络延迟影响,仅作参考。
性能对比
先看结论。
Weaviate 写入最快,但 Milvus 读取遥遥领先。考虑到向量数据库的核心场景是相似性搜索,读取性能更重要。
各数据库详情
Milvus
读写性能平衡,很多大厂在用,社区成熟,文档完整。
测试结果
写入:10,000 条向量,19.31 秒,517.91 QPS
读取:10,000 次搜索,17.57 秒,569.09 QPS
特点
GitHub Star: 34.6K
支持分布式部署(基于 Kubernetes)
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。
读写性能平衡,读取性能最强
社区成熟,文档完整度最高
支持分布式部署(基于 Kubernetes)
大部分专业向量数据库开源,不会被锁定
对于小型项目或大型项目前期,PostgreSQL + pgvector 可以先用着。数据量大了再迁移到 Milvus。
Milvus 官方文档:https://milvus.io/docs/zh
Milvus 配置计算器:https://milvus.io/zh/tools/sizing