Milvus中的数据段

数据段是什么?

在Milvus中,数据段(Segment)是存储数据的基本单位。就像我们的课本被分成一章一章,Milvus中的数据也被分成一段一段的,这样更容易管理。

数据段1
向量A
向量B
向量C
数据段2
向量D
向量E
向量F
数据段3
向量G
向量H
向量I

Milvus 完整存储结构

从上到下依次是数据库 → 集合 → 分区 → 数据段。每个层级会承载下一层多个单位,就像树枝不断分叉。

数据库 A 集合 A1 集合 A2 分区 A1 分区 A1 分区 A2 数据段1 向量 A、B 数据段2 向量 C、D 数据段3 向量 E、F 数据段4 向量 G、H 数据段5 向量 I、J

类比图:图书馆藏书结构

可以把上面的存储结构想成图书馆:图书馆 → 楼层 → 区域 → 书架,最后每本书就像数据段中的向量。

图书馆 一楼 二楼 小说区 科普区 历史区 书架 A 《哈利波特》 书架 B 《三体》 书架 C 《时间简史》 书架 D 《史记》 书架 E 《资治通鉴》

数据段的结构

每个数据段包含三个重要部分:

  1. 向量数据:存储实际的向量值
  2. 索引:帮助快速找到相似向量的目录
  3. 元数据:存储描述向量的额外信息

📝 举个例子:如果你想在图书馆中找一本书,数据段就像是书架,索引就像是图书目录,而元数据就像是每本书的简介。

数据段的作用

数据段在Milvus中有以下重要作用:

  1. 提高查询效率:当我们搜索相似向量时,可以只在相关的数据段中查找,不需要查看所有数据
  2. 优化数据管理:可以分别为每个数据段建立索引,更加灵活
  3. 支持并行处理:多个数据段可以同时被不同的计算资源处理,加快速度

📝 生活中的例子:这就像在超市购物时,物品被分类放在不同货架上,你只需要去相应的货架找你需要的物品,而不需要在整个超市里搜索。

生长段和密封段

Milvus中的数据段分为两种类型:

生长段
向量A
向量B
+

可以添加新数据

密封段
向量C
向量D
🔒

不再接收新数据

📝 比喻:生长段就像是一个还在写的笔记本,可以继续添加内容;而密封段就像是已经写满并封存的笔记本,不再添加新内容。

为什么需要数据段?

想象一下,如果所有数据都放在一起:

  1. 查找时需要搜索所有数据,速度会很慢
  2. 添加新数据时,可能需要重新组织所有数据
  3. 无法同时处理多个数据部分

有了数据段,这些问题就迎刃而解了!

数据段合并

随着时间推移,可能会产生很多小的数据段。为了提高效率,Milvus会将小的数据段合并成更大的数据段,这个过程叫做合并(Merge)

小段1
小段2
合并后

📝 生活中的例子:这就像是将几个小文件夹中的文件整理到一个大文件夹中,使得管理和查找更方便。

总结

数据段是Milvus中非常重要的概念,通过将数据分割成段:

理解数据段的概念,对于了解Milvus如何高效管理和检索海量向量数据非常重要!