引言:AI时代的数据基础设施变革
随着大语言模型(LLM)和生成式AI的爆发式增长,向量数据库(Vector Database)已从学术界的利基技术演变为现代AI应用的核心基础设施。从RAG(检索增强生成)到语义搜索,从推荐系统到图像识别,向量数据库承载着高维嵌入向量的存储与检索任务,成为连接AI模型与实际应用的关键桥梁。
本文将深入剖析三款主流向量数据库——Milvus、PgVector和Weaviate,从架构设计、存储引擎、索引算法、查询性能、生态集成到运维复杂度进行全面对比,帮助技术团队做出符合自身场景的最优选型决策。
一、向量数据库核心概念与技术挑战
1.1 从精确匹配到相似性搜索
传统关系型数据库基于精确匹配(=、>、<等操作符),而向量数据库的核心是近似最近邻搜索(Approximate Nearest Neighbor, ANN)。在高维空间中,精确搜索的复杂度为O(n),对于百万级甚至十亿级向量而言完全不可行。ANN算法通过牺牲少量精度换取数个数量级的性能提升。
1.2 核心评估维度
评估向量数据库需关注以下关键指标:
- 召回率(Recall):ANN结果中真正最近邻的占比,通常在95%~99%之间权衡
- QPS(每秒查询数):单节点或集群的查询吞吐能力
- 索引构建时间:数据导入后构建索引的耗时
- 内存占用:索引结构对内存的消耗,直接影响成本
- 混合查询能力:向量搜索与标量过滤的协同执行效率
- 分布式能力:水平扩展、分片策略、多副本一致性
1.3 主流ANN算法家族
- 基于图的索引:HNSW(Hierarchical Navigable Small World),高召回低延迟,内存开销大
- 基于量化的索引:PQ(Product Quantization)、PQ+IVF,通过压缩向量减少内存占用
- 基于哈希的索引:LSH(Locality Sensitive Hashing),适合超大规模低精度场景
- 基于树的索引:Annoy、KD-Tree,适合中小规模数据集
- 混合索引:IVF_PQ、IVF_SQ8,结合倒排与量化平衡性能与资源
二、Milvus:云原生向量数据库标杆
2.1 架构演进与设计理念
Milvus由Zilliz于2019年开源,是目前最活跃的云原生向量数据库项目。历经2.x到3.x的重大架构演进,其设计理念是"日志即数据"(Log as Data),借鉴了Lambda架构思想,将系统分为批处理和流处理两条路径。
Milvus 2.x架构核心组件:
- 访问层(Access Layer):负载均衡器,接收客户端请求
- 协调服务(Coordinator Service):Root Coord管理元数据拓扑、Data Coord管理数据分片与GC、Query Coord管理查询路由与负载均衡、Index Coord管理索引构建任务
- 代理节点(Proxy):请求转换、DSL编译、结果聚合
- 工作节点(Worker Nodes):Data Node通过日志订阅(Log Broker)接收流式写入、Query Node加载Segment到内存执行搜索、Index Node离线构建索引
- 对象存储层:MinIO/S3存储持久化数据与索引文件,etcd存储元数据,Kafka/Pulsar作为日志中间件(WAL)
2.2 存储引擎详解
Milvus采用分层存储策略实现批流一体:
- 内存层:Grow Segment支持增量写入达到阈值后转为Sealed Segment
- 对象存储层:数据文件以列式存储(Parquet格式)持久化,支持冷热分层
- 缓存层:Query Node的查询缓存与结果缓存加速重复查询
- 写入路径:Proxy → Log Broker(Kafka/Pulsar)→ Data Node写入内存批量Flush
2.3 索引支持矩阵
| 索引类型 | 内存占用 | 召回率 | 查询延迟 | 适用规模 |
|---|---|---|---|---|
| HNSW | 极高(2~3倍原始数据) | 99%+ | 亚毫秒 | 千万~亿级 |
| IVF_FLAT | 高(原始大小) | 95% | 毫秒 | 百万~亿级 |
| IVF_SQ8 | 中(1/4原始) | 92% | 毫秒 | 亿级 |
| IVF_PQ | 低(压缩至1/8~1/16) | 88% | 毫秒 | 十亿级 |
| DISKANN | 极低(磁盘驻留) | 95% | 亚毫秒 | ~十亿级 |
| GPU_CAGRA | GPU显存 | 99%+ | 亚毫秒 | 千万~亿级 |
三、PgVector:关系型数据库的向量能力扩展
3.1 架构定位:扩展而非颠覆
PgVector(pgvector)是PostgreSQL的开放扩展,由Andrew Kane开发并被AWS等云厂商深度集成。其核心理念是在已有的PostgreSQL世界中增加向量能力——复用成熟的ACID事务、复制、备份、权限体系,避免多系统数据同步的复杂性。
技术实现上,PgVector定义了vector(n)数据类型和相应的运算符(<->欧氏距离、<#>负内积、<=>余弦距离),并提供近似搜索索引。
3.2 索引演进:从IVFFlat到HNSW
PgVector 0.5.0版本引入HNSW索引后大幅提升了查询精度:
- IVFFlat:基于倒排文件的暴力扫描,构建快、内存占用合理但精度有限
- HNSW:多层可导航小世界图,查询快召回高但构建耗时长、需全量数据加载到内存
- Citus分布式:通过Citus分片PostgreSQL实现向量数据水平扩展
3.3 混合查询的天然优势
PgVector最大的差异化价值在于向量搜索与SQL的原子融合——JOIN、WHERE过滤、聚合查询、全文检索可以在同一事务中与向量检索协同执行,无跨系统一致性困扰。
- 支持PostgreSQL并行查询加速大规模扫描
- 融合tsvector实现BM25 + 向量混合检索
- 复用RBAC和行级安全策略(RLS)
- 备份/迁移工具链成熟(pg_dump/pg_restore原生支持)
四、Weaviate:AI原生的知识图谱型向量存储
4.1 架构定位:内置向量化的全栈方案
Weaviate最大的不同在于模块系统——内置text2vec-transformers、text2vec-openai、multi2vec-clip等模块,可自动将原始数据转化为向量,省去应用层Embedding服务开发。
- GraphQL API:声明式查询语言支持向量搜索、过滤、聚合、分组
- 多租户(Multi-Tenancy):数据按租户物理隔离,共享基础设施
- 水平扩展:基于哈希分片策略,自动数据重平衡
- CRDT-based复制:最终一致性的多活复制,无需分布式事务
4.2 混合搜索(Hybrid Search)
Weaviate原生支持BM25关键词检索与向量检索融合,提供RRF(倒数排名融合)等算法,在零样本场景下无需微调度即可达到优秀检索效果。
五、选型决策对比
| 评估维度 | Milvus | PgVector | Weaviate |
|---|---|---|---|
| 数据规模 | 十亿~百亿级 | 百万~十亿级 | 千万~十亿级 |
| 部署复杂度 | 高(需多组件) | 极低(扩展安装) | 中(单体/集群) |
| 混合查询 | 标量过滤后搜索 | 完美(原生SQL) | GraphQL filter |
| 内置向量化 | 否 | 否 | 是(多种模块) |
| 云托管 | Zilliz Cloud | RDS/Aurora/AlloyDB | Weaviate Cloud |
| 开源协议 | Apache 2.0 | PostgreSQL | BSD-3 |
六、选型建议
- 已有Postgres技术栈,向量规模
- 十亿级+向量,追求极致搜索性能 → Milvus
- 需内置向量化能力,快速构建AI应用 → Weaviate
- 云原生Serverless → Zilliz Cloud / WCD
七、趋势展望
向量数据库市场正快速演进:磁盘原生索引(DISKANN)突破内存限制、稀疏+稠密混合检索(SPLADE)提升精度、Serverless化降低成本、硬件加速(GPU/NPU/存内计算)持续推动性能边界。2024-2026年将是该技术从竞争走向整合的关键窗口。

发表评论 取消回复