前言当你的 RAG 系统需要处理百万级以上向量时单机版的向量检索就不够用了。你需要一个真正的向量数据库。目前主流的三个选择是Milvus、Qdrant、Chroma。本文从架构、性能、功能、运维四个维度深度对比。架构对比Milvus云原生┌──────────┐ ┌──────────┐ ┌──────────┐ │ Proxy │ │ Proxy │ │ Proxy │ ← 无状态网关 └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ ┌────▼─────────────▼─────────────▼────┐ │ Root Coordinator │ ← 元数据管理 └────▲─────────────▲─────────────▲────┘ │ │ │ ┌────┴─────┐ ┌────┴─────┐ ┌────┴─────┐ │ Query │ │ Data │ │ Index │ │ Node │ │ Node │ │ Node │ ← 计算存储分离 └──────────┘ └──────────┘ └──────────┘ 依赖etcd元数据 MinIO/S3数据 Kafka日志特点组件多、功能全、扩展性强。适合大规模生产环境。QdrantRust 实现┌──────────────┐ │ Qdrant │ │ ┌────────┐ │ │ │ Segment│ │ ← 每个 collection 分为多个 segment │ │ │ │ │ │ HNSW │ │ ← 向量索引 负载索引 │ │ Payload│ │ │ └────────┘ │ └──────────────┘ 单二进制文件部署无外部依赖。特点Rust 实现、性能卓越、部署极简。单二进制搞定一切。Chroma轻量级┌──────────────┐ │ Chroma │ │ ┌────────┐ │ │ │SQLite │ │ ← 数据持久化 │ │ HNSW │ │ ← 内存向量索引 │ └────────┘ │ └──────────────┘ pip install chromadb 即可使用。特点极简、开发友好、不适合生产大规模场景。性能基准测试条件100 万 768 维向量余弦距离Top-10 检索单机32 核128GB RAMNVMe SSD指标Milvus 2.4Qdrant 1.9Chroma 0.5写入速度向量/秒8,00012,0005,000查询延迟P508ms3ms5ms查询延迟P9925ms12ms30msQPS单机1,2002,500800内存占用2.8GB1.5GB3.2GB索引构建时间12min8min15min注意这是单机测试。Milvus 的强项在分布式多节点下 QPS 可以线性扩展。核心功能对比标量过滤Filter Search这是向量数据库最重要的实用功能——先按标签筛选再搜向量。# Milvusmilvus_client.search(collection_namedocs,data[query_vector],limit10,exprcategory technology view_count 1000,)# Qdrantqdrant_client.search(collection_namedocs,query_vectorquery_vector,limit10,query_filtermodels.Filter(must[models.FieldCondition(keycategory,matchmodels.MatchValue(valuetechnology)),models.FieldCondition(keyview_count,rangemodels.Range(gte1000)),]),)# Chromachroma_collection.query(query_embeddings[query_vector],n_results10,where{category:technology,view_count:{$gte:1000}},)标量过滤性能Qdrant Milvus ChromaQdrant 的 payload 索引用内存维护过滤几乎无开销Milvus 在复杂过滤条件下延迟会明显上升Chroma 在 10 万级数据以上过滤性能急剧下降混合检索Hybrid Search# Qdrant —— 原生支持fromqdrant_clientimportQdrantClientfromqdrant_client.modelsimport(HybridFusion,FusionQuery,Prefetch,)qdrant_client.search(collection_namedocs,query_vectorQueryVector(FusionQuery(prefetch[Prefetch(queryquery_vector,limit50,),Prefetch(querysearch keywords,limit50,),],fusionHybridFusion.RRF,)),limit10,)# Milvus —— 需要自己实现混合# 分别做向量检索和 BM25 检索然后 RRF 合并在应用层Qdrant 是三者中唯一原生支持混合检索的Milvus 和 Chroma 需要在应用层手动实现 RRF 合并。数据持久化与备份功能MilvusQdrantChroma持久化S3/MinIO本地磁盘/S3SQLite快照备份✅ 原生✅ 原生❌ 手动增量备份✅✅❌从备份恢复✅✅❌部署运维部署复杂度Milvus: docker-compose 启动 7 个服务 Qdrant: docker run qdrant/qdrant Chroma: pip install chromadb资源占用场景MilvusQdrantChroma最小部署4GB RAM 4 核512MB RAM 1 核256MB RAM生产推荐32GB RAM 16 核8GB RAM 4 核不推荐生产存储MinIO 独立直接在磁盘SQLite 文件实战部署Docker ComposeQdrant最轻量# docker-compose.ymlservices:qdrant:image:qdrant/qdrant:latestports:-6333:6333-6334:6334volumes:-./qdrant_storage:/qdrant/storageenvironment:-QDRANT__SERVICE__GRPC_PORT6334Milvus生产级# docker-compose.ymlservices:etcd:image:quay.io/coreos/etcd:v3.5.5minio:image:minio/minio:latestmilvus:image:milvusdb/milvus:v2.4.0ports:[19530:19530]depends_on:[etcd,minio]选型决策树你的场景是 ├── 原型验证 / 学习 / 数据量 10 万 │ └── Chroma最简、最快上手 │ ├── 生产环境 / 数据量 10 万 - 1000 万 │ ├── 需要极简部署、高性能 → Qdrant │ ├── 需要混合检索原生支持 → Qdrant │ └── 需要分布式扩展 → Milvus │ ├── 生产环境 / 数据量 1000 万 │ └── Milvus唯一成熟的分布式方案 │ ├── 需要标量过滤Filter Search │ └── Qdrant Milvus Chroma │ └── 边缘设备 / 嵌入式场景 └── QdrantRust 编译二进制仅 30MB迁移方案从 Chroma 迁移到 Qdrant# 导出 Chroma 数据importchromadb chroma_clientchromadb.PersistentClient(path./chroma_data)collectionchroma_client.get_collection(docs)all_datacollection.get(include[embeddings,documents,metadatas])# 导入到 Qdrantfromqdrant_clientimportQdrantClientfromqdrant_client.modelsimportPointStruct qdrantQdrantClient(localhost:6333)qdrant.create_collection(collection_namedocs,vectors_configmodels.VectorParams(size768,distancemodels.Distance.COSINE),)points[PointStruct(ididx,vectoremb.tolist(),payload{text:all_data[documents][idx],**all_data[metadatas][idx]},)foridx,embinenumerate(all_data[embeddings])]qdrant.upsert(collection_namedocs,pointspoints)总结快速原型Chromapip install 一秒上手生产单机Qdrant高性能、极简运维、混合检索原生支持生产分布式Milvus功能最全、扩展性最强核心关注点标量过滤性能 检索精度 写入速度 部署复杂度我的个人建议大部分团队从 Qdrant 开始。它用 Rust 实现单机性能碾压运维几乎零成本需要扩展时也支持分布式。觉得有用点赞 收藏 关注。