在 AI 系统工程化中,向量数据库需应对亿级规模 ANN 搜索的高并发、低延迟需求。Milvus 作为云原生向量 DB,通过存储计算分离、分布式分片与混合索引机制,实现高效扩展与容错。相比单机方案,其 Kubernetes 部署支持查询节点弹性扩容至数十亿向量,QPS 达万级,同时保持毫秒级延迟。
Milvus 架构分为接入层(Proxy 负载均衡)、协调服务(QueryCoord 管理任务)、执行节点(QueryNode 分片查询)和存储层(etcd 元数据 + MinIO/S3 持久化)。这种设计确保计算无状态,故障时自动重调度。Milvus 支持 Compute/Storage 分离,在 Kubernetes 中扩展 QueryNode 和 DataNode,实现水平扩展。“Milvus 支持 Kubernetes 集群中扩展查询节点、写入节点,实现大规模并发检索与数据写入,即便面向数十亿条向量,也能保持低延迟和可靠性。”
核心是分布式分片:Collection 通过 VChannel 分片至多个 DataNode,每个 Segment(~10M 向量)独立索引。查询时,QueryCoord 规划路由至相关分片,QueryNode 并行执行后聚合 Top-K 结果。分片数建议 sqrt (总向量数),如 1 亿向量设 100 分片,避免热点。为亿级规模,预配置 replica=3,确保高可用。
索引策略采用混合 HNSW/IVF:HNSW 图索引适合高精度场景,M=16(连接数)、efConstruction=200(构建时探索)、ef=128(搜索探索),内存~1.5x 数据量,召回率 > 0.95。IVF_FLAT 用于平衡,nlist=sqrt (N)(N 为 Segment 向量数)、nprobe=10,内存更低,适合初筛。hybrid 时,先 IVF 粗搜,后 HNSW 精排。GPU 加速下,索引构建提速 10x,配置 index_params={"index_type":"HNSW","M":16,"efConstruction":200,"metric_type":"L2"}。
容错查询规划依赖 Global Index 与 Segment 隔离:增长段(growing)实时插入不索引,密封段(sealed)异步建索引。QueryNode 监控负载,超时 > 500ms 时 fallback 至 Flat 精确搜。故障时,DataCoord 迁移分片,QueryCoord 重规划路径。参数:queryNode.maxScanPerQuery=10000(单分片扫描上限)、rootCoord.minSegmentSizeToEnableIndex=1024(最小索引段)。
落地部署清单:
- Helm 安装 Milvus cluster:helm repo add milvus https://zilliztech.github.io/milvus-helm/;helm install milvus-cluster milvus/milvus --set cluster.enabled=true --set server.replicas=3。
- Collection Schema:fields=[id (INT64,primary),vector (FLOAT_VECTOR,dim=1536),metadata (JSON)];分区键 user_id。
- 索引:每个 Segment 建 HNSW/IVF 混合,load fraction=1(全内存)。
- 查询:search_params={"metric_type":"L2","params":{"nprobe":10,"ef":128}},filter="status==active",limit=10,timeout=10s。
- 监控:Prometheus 采集 milvus_querynode_qps、memory_usage_bytes、index_cache_hit_rate>0.9;告警内存 > 80%、QPS 降 < 阈值。
- 扩容:kubectl scale deployment/milvus-querynode --replicas=10;回滚:降级索引至 IVF_PQ,限流 proxy.maxFieldNum=64。
风险控制:内存峰值监控 jemalloc 碎片 <20%,超阈值 GC 或重启 QueryNode。高峰前预热索引。测试:sift1B 数据集验证 QPS>5000@QPS=0.95。
生产验证显示,10 亿向量、HNSW 索引、20 QueryNode 配置下,平均延迟 < 50ms,99 分位 < 200ms。优化 nprobe=20 可升召回 0.98,代价 QPS 降 15%。
资料来源:Milvus GitHub (https://github.com/milvus-io/milvus),官方文档 (https://milvus.io/docs)。