向量数据库:RAG时代的基础设施

向量数据库是RAG系统的核心组件。选择合适的向量数据库直接影响检索性能、扩展性和运维成本。

2026年,向量数据库赛道已经从"百花齐放"走向"头部集中"。Milvus、Qdrant和Weaviate是三个最主流的开源选择,各自有不同的设计哲学和适用场景。

三者简介

Milvus:由Zilliz开发,CNCF毕业项目。定位为云原生向量数据库,强调大规模和水平扩展。

Qdrant:Rust编写,轻量高效。定位为高性能向量搜索引擎,强调简洁和速度。

Weaviate:Go编写,GraphQL API。定位为AI原生数据库,内置向量化模块和混合检索。

功能对比

功能MilvusQdrantWeaviate
纯向量搜索
标量过滤
混合搜索(BM25+向量)✅ (2.4+)✅ (内置)
多向量搜索
内置Embedding
动态Schema✅ (2.4+)
分片
副本
云托管Zilliz CloudQdrant CloudWeaviate Cloud

关键差异

Weaviate的内置Embedding模块是一个独特优势——可以直接输入文本,数据库自动进行向量化。Milvus和Qdrant需要外部Embedding服务。

Milvus的混合搜索实现最成熟,支持多种索引类型和复杂的过滤条件。Qdrant的混合搜索是后来加的,但在简单场景下性能优异。

Qdrant的Rust实现带来了天然的内存安全和性能优势。部署二进制只有一个文件,运维极简。

性能测试

测试设置

  • 数据集:100万、1000万、1亿条768维向量
  • 硬件:单机(64核CPU,256GB RAM,NVMe SSD)
  • 指标:QPS(每秒查询数)、P99延迟、召回率、内存占用

100万向量

指标MilvusQdrantWeaviate
QPS12,50018,2008,300
P99延迟8ms4ms15ms
召回率@1098.5%98.2%97.8%
内存占用4.2GB3.1GB5.8GB

在小数据量下,Qdrant全面领先——更快的速度、更低的延迟、更少的内存。

1000万向量

指标MilvusQdrantWeaviate
QPS8,20011,5005,100
P99延迟15ms9ms28ms
召回率@1097.8%97.5%96.5%
内存占用38GB28GB52GB

Qdrant仍然领先,但差距在缩小。Weaviate的性能下降最明显。

1亿向量

指标MilvusQdrantWeaviate
QPS5,1004,8002,800
P99延迟32ms28ms65ms
召回率@1096.5%95.8%94.2%
内存占用320GB280GB480GB

在亿级数据量下,Milvus和Qdrant的性能趋于接近,Milvus在召回率上略有优势。Weaviate在大规模下表现最弱。

集群扩展性

在3节点集群上的测试:

指标MilvusQdrantWeaviate
扩展效率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论坛