向量数据库:RAG时代的基石

所有RAG系统都需要向量数据库。2026年市场已经从"有没有"过渡到"哪个好"——选型不当会带来性能瓶颈、扩展困难、功能不足等问题。

三大主流方案

Milvus:大规模分布式

架构特点

Milvus采用存算分离架构:

  • Coordinator:元数据管理和调度
  • Worker Node:查询节点和数据节点分离
  • 对象存储:数据持久化(S3/MinIO)
  • 消息队列:变更数据捕获(Kafka/Pulsar)

核心优势

  • 水平扩展:支持十亿级向量
  • 混合检索:向量+标量过滤
  • 多索引:HNSW、IVF、DiskANN、GPU索引
  • 云原生:K8s原生部署

适用场景

  • 大规模生产环境(亿级向量)
  • 需要高可用和水平扩展
  • 团队有K8s运维能力

注意事项

  • 部署复杂度高(微服务架构)
  • 小规模场景(<100万向量)过重
  • 内存占用较大

Qdrant:高性能轻量级

架构特点

Qdrant用Rust编写,单二进制部署:

  • Collection:数据集合
  • Payload:向量关联的元数据
  • 量化支持:标量量化(SQ8)、乘积量化(PQ)、二进制量化
  • 磁盘索引:支持大于内存的数据集

核心优势

  • 简单部署:单二进制+Docker
  • 高性能:Rust实现,无GC暂停
  • 丰富过滤:Payload过滤能力强大
  • 量化压缩:内存占用极低

适用场景

  • 中小规模(<1亿向量)
  • 快速原型开发
  • 对延迟敏感的场景
  • 运维资源有限的团队

注意事项

  • 分布式能力不如Milvus
  • 不支持多租户隔离
  • 生态插件较少

Weaviate:AI原生设计

架构特点

Weaviate定位为"AI原生数据库":

  • GraphQL API:内置API层
  • 模块化向量化:内置多种embedding模型
  • 对象存储+向量索引:一体化设计
  • 多模态支持:图像/文本/视频嵌入

核心优势

  • 开箱即用:内置embedding模型
  • GraphQL接口:前端友好
  • 多模态:原生支持多种数据类型
  • 混合检索:BM25+向量融合

适用场景

  • 快速构建AI应用
  • 需要多模态检索
  • 前端团队主导的项目
  • 不想单独管理embedding流程

注意事项

  • 性能不如Qdrant极致
  • 大规模部署经验较少
  • Go实现,性能依赖GC调优

性能对比

写入性能

数据库单线程写入批量写入(10K)索引构建速度
Milvus5K/s50K/s中等
Qdrant8K/s80K/s
Weaviate3K/s30K/s中等

查询性能

数据库p50延迟p99延迟并发QPS
Milvus5ms20ms10K+
Qdrant2ms8ms5K+
Weaviate8ms30ms3K+

注:测试条件为1M向量,768维,HNSW索引,单节点。实际性能受数据规模、硬件、配置影响。

功能对比

功能MilvusQdrantWeaviate
混合检索
标量过滤
多向量
向量量化
动态Schema
多模态✅(需外部)✅(需外部)✅(内置)
分片
副本
RBAC
备份恢复

选型决策树

数据规模?
├─ < 10万 → 用SQLite + numpy就够了
├─ 10万-100万 → Qdrant(单节点)
├─ 100万-1亿 → Qdrant(集群) 或 Milvus
└─ > 1亿 → Milvus

部署复杂度容忍度?
├─ 要简单 → Qdrant
├─ 可接受中等 → Weaviate
└─ 有运维团队 → Milvus

需要多模态?
├─ 是 → Weaviate(内置) 或 Milvus
└─ 否 → 任意

延迟要求?
├─ < 5ms → Qdrant
├─ < 10ms → 任意
└─ < 50ms → 任意(包括远程部署)

工程实践建议

索引选择

  • HNSW:默认选择,查询快但内存大
  • IVF:大数据量+内存有限时
  • DiskANN:数据远超内存时
  • 二进制量化:内存极致优化(精度有损)

量化策略

实践中的量化选择:

  • 对精度要求高:SQ8标量量化
  • 对内存敏感:PQ乘积量化
  • 极致压缩:二进制量化(1/32内存)

数据更新

向量数据库的数据更新策略:

  • 全量重建:适合数据变化不频繁的场景
  • 增量更新:适合频繁更新的场景
  • 双写过渡:重建索引时不停服

总结

向量数据库选型没有"银弹"——Milvus胜在大规模和分布式,Qdrant胜在性能和简洁,Weaviate胜在AI原生体验。2026年的趋势是三者都在互相学习——Milvus简化部署,Qdrant增强分布式,Weaviate优化性能。对于新项目,建议从Qdrant开始原型验证,根据规模需求再决定是否迁移到Milvus。