Milvus存储优化

2025-01-15 527
Milvus

类型:向量数据库

简介:存储、索引和管理由深度神经网络和机器学习(ML)模型生成的大规模嵌入向量。

Milvus中,为了提升存储和查询性能,可以通过内存映射(MMap)和聚类压缩(Clustering Compaction)等功能进行优化。这些优化措施可以有效地减少存储资源消耗,并在数据量巨大的情况下提高查询速度。

一、内存映射优化

内存映射文件(MMap)允许将文件内容直接映射到内存中,这一技术特别适用于内存资源有限,且无法将数据完全加载到内存中的场景。通过启用内存映射,可以在不占用过多内存的情况下,增加数据处理的容量。然而,当数据量远超过可用内存时,查询性能可能会下降,因此需要根据具体情况来配置是否启用内存映射。

1、配置内存映射

从 Milvus 2.4 版本开始,可以在集群部署前调整配置文件,以为整个集群设置默认的内存映射参数。修改后的设置在集群重启后生效。此外,还可以根据需要在运行时动态调整内存映射的设置,进一步优化存储性能。

2、集群级配置

在 Milvus 配置文件 milvus.yaml 中,可以设置是否启用内存映射,并指定存储文件的目录路径。如果未特别指定路径,系统会将内存映射文件默认存储在 {localStorage.path}/mmap 路径下。

Milvus存储优化

3、内存映射配置细分

从 Milvus 2.4.10 起,内存映射设置被细化为四个单独的字段,默认值均为 false:

  • queryNode.mmap.vectorField:控制是否启用向量数据的内存映射;
  • queryNode.mmap.vectorIndex:控制是否启用向量索引的内存映射;
  • queryNode.mmap.scalarField:控制是否启用标量数据的内存映射;
  • queryNode.mmap.scalarIndex:控制是否启用标量索引的内存映射。

以上配置可以独立地开启或关闭,可满足不同数据类型的需求。

Milvus存储优化

4、动态配置

在群集运行期间,可以在 Collections 或索引级别动态调整内存映射设置。在Collections 层级,内存映射会应用到集合内所有未索引的原始数据,不包括主键、时间戳和行 ID。这种方法特别适用于大型数据集的综合管理。

若要动态调整 Collections 中的内存映射设置,可使用set_properties() 方法。在这里,可以根据需要在True 或False 之间切换mmap.enabled 。

Milvus存储优化

对于索引级设置,内存映射可专门应用于向量索引,而不会影响其他数据类型。对于需要优化向量搜索性能的 Collections 来说,这一功能非常宝贵。

要为 Collections 中的某个索引启用或禁用内存映射,可调用alter_index() 方法,在index_name 中指定目标索引名称,并将mmap.enabled 设置为True 或False 。

Milvus存储优化

5、在不同部署中自定义存储路径

内存映射文件默认存放在localStorage.path 中的/mmap 目录中。以下是在不同部署方法中自定义此设置的方法:
对于使用 Helm Chart 安装的 Milvus:

Milvus存储优化
对于使用 Milvus Operator 安装的 Milvus:

Milvus存储优化

对于使用 Docker 安装的 Milvus:

Milvus存储优化

6、限制与注意事项

已加载的集合无法启用内存映射,必须确保集合已经释放;

  • DiskANN 和 GPU 索引不支持内存映射;
  • 内存映射不适用于基于标量字段的索引。

二、聚类压缩

聚类压缩(Clustering Compaction)旨在通过根据标量字段的值重新分配实体,优化大型集合的存储和查询性能。通过将相似数据存储在同一段内,Milvus 可以显著缩小查询范围,从而提高查询效率。

1、聚类压缩的工作原理

Milvus 在向集合中添加数据时,会根据段的容量将数据分段存储。当某个段满时,Milvus 会创建新段继续存储数据。在没有聚类压缩的情况下,搜索时需要遍历多个段,增加了搜索的时间开销。而启用聚类压缩后,Milvus 会根据指定的标量字段将实体分配到不同的段,从而能将搜索范围限制在相关的段内,大幅提升查询效率。

Milvus存储优化

Milvus存储优化

2、启用聚类压缩

(1)全局配置

通过修改 Milvus 配置文件,可以启用聚类压缩功能。配置完成后,Milvus 会按照配置定期自动触发聚类压缩,也可以通过手动方式触发压缩操作。

Milvus存储优化

(2)选择聚类键

为了启用聚类压缩,需要选择一个标量字段作为聚类键。这一字段通常是用来过滤数据的字段,如租户标识等。

(3)触发聚类压缩

聚类压缩可由 Milvus 自动定时触发,或者手动执行。可以根据数据量和查询需求灵活选择触发方式。

Milvus存储优化

(4)性能提升

根据 Milvus 的基准测试,聚类压缩能够显著提高搜索性能。例如,基于 2000 万条 768 维数据的集合,启用聚类压缩后,查询性能提升可达 25 倍。通过减少搜索的实体数量,聚类压缩能够有效提高每秒查询次数(QPS)。

Milvus存储优化

  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
Milvus
上一篇: Milvus安全设置
Milvus
下一篇: Milvus迁移数据