跳到主要内容

配置块缓存

块缓存机制使得 Milvus 能够在查询节点的本地硬盘上提前将数据加载到缓存中,从而显著提高向量检索性能,减少从磁盘加载数据到内存所需的时间。

背景

在执行查询以检索向量之前,Milvus 需要将数据从对象存储加载到查询节点的本地硬盘上的内存缓存中。这是一个耗时的过程。在加载所有数据之前,Milvus 可能会对一些向量检索请求做出延迟响应。

为了提高查询性能,Milvus 提供了块缓存机制,可以在需要之前将数据从对象存储预先加载到本地硬盘上的缓存中。当收到查询请求时,Segcore 首先检查数据是否在缓存中,而不是在对象存储中。如果数据在缓存中,Segcore 可以快速从缓存中检索数据并将结果返回给客户端。

配置块缓存

本指南提供了如何为 Milvus 实例配置块缓存机制的说明。配置方式取决于您安装 Milvus 实例的方式。

  • 对于使用 Helm Charts 安装的 Milvus 实例

    将配置添加到 values.yaml 文件的 config 部分。详情请参阅 使用 Helm Charts 配置 Milvus

  • 对于使用 Docker Compose 安装的 Milvus 实例

    将配置添加到您用于启动 Milvus 实例的 milvus.yaml 文件中。详情请参阅 使用 Docker Compose 配置 Milvus

  • 对于使用 Operator 安装的 Milvus 实例

    将配置添加到 Milvus 自定义资源的 spec.components 部分。详情请参阅 使用 Operator 配置 Milvus

配置选项

queryNode:
cache:
warmup: async

warmup 参数确定 Milvus 是否在需要之前将数据从对象存储预先加载到查询节点的本地硬盘缓存中。此参数默认为 async。可能的选项如下:

  • async:Milvus 异步在后台预加载数据,不会影响加载集合所需的时间。但是,在加载过程完成后的短时间内,用户可能会在检索向量时遇到延迟。这是默认选项。
  • sync:Milvus 同步预加载数据,可能会影响加载集合所需的时间。但是,在加载过程完成后,用户可以立即执行查询而无需任何延迟。
  • off:Milvus 不会将数据预加载到内存缓存中。

请注意,块缓存设置也适用于插入新数据到集合或重建集合索引时。

常见问题解答

  • 如何确定分块缓存机制是否正常工作?

    建议您在加载集合后检查搜索或查询请求的延迟。如果延迟明显高于预期(例如几秒),可能表明分块缓存机制仍在起作用。

    如果查询延迟持续较高。您可以检查对象存储的吞吐量,以确保分块缓存仍在工作。在正常情况下,有效的分块缓存会在对象存储上产生高吞吐量。或者,您可以尝试将分块缓存设置为同步模式。