数字化技能提升教程,数字化时代生存宝典

首页 / 数字化 / 人工智能 / Milvus教程

Milvus存储优化

浏览:449
Milvus
Milvus
类型:人工智能

Milvus是一款专为AI应用和向量相似度搜索而设计的开源向量数据库,由深度神经网络及其他机器学习(ML)模型生成的大量嵌入向量,高效处理万亿级别的向量索引任务。Milvus教程深入讲解了如何高效利用Milvus向量数据库、其工作原理、支持的索引及度量技术、通过典型示例程序展现应用实战,以及系统架构和相关工具的全面介绍。

在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

QQ群号:4114653

温馨提示:

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