首页/AI/RAG 与向量库速查/分片、副本与横向扩展

分片、副本与横向扩展

分布式向量库通过分片(shard)分摊数据与检索负载、副本(replica)提供并发与容灾:分片键选择影响过滤效率,副本数影响成本;扩容后需重新平衡数据分布。

RAG 与向量库速查AI更新于 2026-10-13

分片与副本怎么起作用

分布式向量库用分片(shard)分摊数据与检索负载,用副本(replica)提供并发与容灾:分片键选择影响过滤效率,副本数影响成本与一致性体验。扩容不是简单加机器——分片数变化会带来数据再平衡与查询扇出增加,检索延迟可能先升后降,需要在扩容前后都做压测对比。

基本信息

分片作用把数据与检索负载分散到多个节点
副本作用提高并发承载与容灾能力,同时增加存储成本
扩容方式增加节点后触发再平衡,把部分分片迁到新节点
关键副作用查询扇出随分片数上升,单个请求要等更多分片返回

典型使用场景

  • 容量不足:单节点内存装不下时按分片拆分数据
  • 并发瓶颈:查询并发高时增加查询侧副本分摊压力
  • 写入吞吐不足:写入量大时先扩容数据节点与消息通道
  • 库表隔离:给大客户单独分配分片,避免互相影响
  • 容灾演练:验证副本故障时服务是否仍可用

Milvus 指定分片数

Milvus 指定分片数
client.create_collection(
    collection_name="kb_big",
    schema=schema,
    num_shards=4,                 # 按数据量与并发规划,过多会增加扇出
    consistency_level="Bounded",
)
# 分片数在建集合时确定,事后调整通常要重建集合

扩容思路

扩容思路
查询并发高 → 增加查询侧副本与节点
写入吞吐高 → 关注数据节点与消息队列扩容
容量不足   → 增加分片并触发再平衡,按官方文档操作
# 每次扩容后都要重跑压测与检索评测,确认延迟与召回都达标

维度与手段

瓶颈表现优先手段代价
内存不足增加分片或节点扇出增加,协调开销上升
查询延迟高增加查询副本成本上升,缓存可能重复
写入延迟高扩容数据节点与队列运维复杂度提高
单点故障风险配置副本与故障转移存储成本成倍增加
分片过多会增加检索扇出与协调开销;先做好容量与延迟规划再定分片数,比事后反复调整省事。
扩容属于高风险操作:再平衡期间可能出现查询变慢或部分数据暂不可读,安排在低峰期并准备好回滚方案,扩容后核对各分片数据量是否均衡。

易错点

  • 按峰值并发过量配置副本,常态资源闲置、成本偏高
  • 扩容时未评估查询扇出变化,延迟不降反升
  • 分片键选择不当,过滤条件集中命中单一分片,扩展失去意义
  • 扩容后未核对数据均衡性与检索评测,长期带着隐患运行

数据来源与参考

  • Milvus 官方文档(Sharding / Replica)
  • Qdrant 官方文档(Distributed deployment)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌