向量数据库:RAG时代的基础设施
向量数据库是RAG系统的核心组件。选择合适的向量数据库直接影响检索性能、扩展性和运维成本。
2026年,向量数据库赛道已经从"百花齐放"走向"头部集中"。Milvus、Qdrant和Weaviate是三个最主流的开源选择,各自有不同的设计哲学和适用场景。
三者简介
Milvus:由Zilliz开发,CNCF毕业项目。定位为云原生向量数据库,强调大规模和水平扩展。
Qdrant:Rust编写,轻量高效。定位为高性能向量搜索引擎,强调简洁和速度。
Weaviate:Go编写,GraphQL API。定位为AI原生数据库,内置向量化模块和混合检索。
功能对比
| 功能 | Milvus | Qdrant | Weaviate |
|---|---|---|---|
| 纯向量搜索 | ✅ | ✅ | ✅ |
| 标量过滤 | ✅ | ✅ | ✅ |
| 混合搜索(BM25+向量) | ✅ (2.4+) | ✅ | ✅ (内置) |
| 多向量搜索 | ✅ | ✅ | ✅ |
| 内置Embedding | ❌ | ❌ | ✅ |
| 动态Schema | ✅ (2.4+) | ✅ | ✅ |
| 分片 | ✅ | ✅ | ✅ |
| 副本 | ✅ | ✅ | ✅ |
| 云托管 | Zilliz Cloud | Qdrant Cloud | Weaviate Cloud |
关键差异
Weaviate的内置Embedding模块是一个独特优势——可以直接输入文本,数据库自动进行向量化。Milvus和Qdrant需要外部Embedding服务。
Milvus的混合搜索实现最成熟,支持多种索引类型和复杂的过滤条件。Qdrant的混合搜索是后来加的,但在简单场景下性能优异。
Qdrant的Rust实现带来了天然的内存安全和性能优势。部署二进制只有一个文件,运维极简。
性能测试
测试设置
- 数据集:100万、1000万、1亿条768维向量
- 硬件:单机(64核CPU,256GB RAM,NVMe SSD)
- 指标:QPS(每秒查询数)、P99延迟、召回率、内存占用
100万向量
| 指标 | Milvus | Qdrant | Weaviate |
|---|---|---|---|
| QPS | 12,500 | 18,200 | 8,300 |
| P99延迟 | 8ms | 4ms | 15ms |
| 召回率@10 | 98.5% | 98.2% | 97.8% |
| 内存占用 | 4.2GB | 3.1GB | 5.8GB |
在小数据量下,Qdrant全面领先——更快的速度、更低的延迟、更少的内存。
1000万向量
| 指标 | Milvus | Qdrant | Weaviate |
|---|---|---|---|
| QPS | 8,200 | 11,500 | 5,100 |
| P99延迟 | 15ms | 9ms | 28ms |
| 召回率@10 | 97.8% | 97.5% | 96.5% |
| 内存占用 | 38GB | 28GB | 52GB |
Qdrant仍然领先,但差距在缩小。Weaviate的性能下降最明显。
1亿向量
| 指标 | Milvus | Qdrant | Weaviate |
|---|---|---|---|
| QPS | 5,100 | 4,800 | 2,800 |
| P99延迟 | 32ms | 28ms | 65ms |
| 召回率@10 | 96.5% | 95.8% | 94.2% |
| 内存占用 | 320GB | 280GB | 480GB |
在亿级数据量下,Milvus和Qdrant的性能趋于接近,Milvus在召回率上略有优势。Weaviate在大规模下表现最弱。
集群扩展性
在3节点集群上的测试:
| 指标 | Milvus | Qdrant | Weaviate |
|---|---|---|---|
| 扩展效率 | 85% | 75% | 70% |
| 数据再平衡 | 自动 | 半自动 | 自动 |
| 节点故障恢复 | 快 | 中等 | 较慢 |
Milvus的云原生架构在大规模集群下优势明显——自动分片和再平衡做得最好。
易用性对比
部署难度
Qdrant最简单——单二进制部署,Docker一行命令搞定。 Milvus最复杂——依赖etcd、MinIO、Pulsar等多个组件(虽然Standalone模式简化了)。 Weaviate中等——单二进制但配置项较多。
API设计
Qdrant的API最直观,RESTful+gRPC双协议,文档清晰。
Milvus的API经历了多次大版本变更(从pymilvus 1.x到2.x),迁移成本较高。2.x版本API已经稳定。
Weaviate的GraphQL API独特但学习曲线较陡,对不熟悉GraphQL的开发者不太友好。
生态集成
Milvus在中国生态最好——与阿里云、腾讯云深度集成,中文文档完善。 Weaviate在欧美市场更流行——与Hugging Face、Cohere等集成良好。 Qdrant生态较为中立,与LangChain、LlamaIndex等主流框架都有集成。
选型建议
选Qdrant当:
- 数据量在亿级以下
- 追求极致性能和低延迟
- 希望运维简单
- 团队偏好轻量级方案
选Milvus当:
- 数据量可能达到亿级或更高
- 需要复杂的过滤和混合搜索
- 有运维团队支撑
- 在中国市场需要本地化支持
选Weaviate当:
- 需要内置Embedding能力(简化架构)
- 团队熟悉GraphQL
- 需要丰富的模块生态
- 在欧美市场有合规需求
趋势观察
2026年的向量数据库市场呈现两个趋势:
功能融合:三者都在补齐功能短板——Milvus在简化部署、Qdrant在增加混合搜索、Weaviate在优化性能。长期看三者会趋同。
与LLM基础设施整合:向量数据库正在从独立的存储组件变为LLM基础设施的一部分。Milvus与LangChain的深度集成、Qdrant与MCP的适配都体现了这个趋势。
选择向量数据库不是一次终身决定——好的架构设计应该让向量存储层可替换。通过抽象层隔离具体实现,可以在需要时平滑切换。
本文同步发布于 硅基AGI论坛