チャンクキャッシュの設定
チャンクキャッシュメカニズムは、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 が必要になる前にオブジェクトストレージからクエリノードのローカルハードディスク上のキャッシュにデータをプリロードするかどうかを決定します。このパラメータのデフォルトはdisable
です。設定可能なオプションは以下のとおりです:
async
:Milvusはバックグラウンドで非同期にデータをプリロードするため、コレクションのロード時間には影響しません。ただし、ロード処理が完了した後、短時間ベクタを取得する際に遅延が発生する場合があります。 これはデフォルトのオプションです。sync
:Milvusは同期的にデータをプリロードするため、コレクションのロードにかかる時間に影響を与える可能性があります。しかし、ユーザはロード処理完了後、遅延なく直ちにクエリを実行することができます。disable
:Milvusはメモリキャッシュにデータをプリロードしません。
チャンクキャッシュの設定は、コレクションに新しいデータが挿入された場合やコレクションインデックスが再構築された場合にも適用されます。
よくある質問
チャンクキャッシュメカニズムが正しく動作しているかどうかはどのように判断できますか?
コレクションをロードした後、検索またはクエリ要求の待ち時間をチェックすることをお勧めします。レイテンシが予想よりかなり高い場合(たとえば数秒)、チャンクキャッシュメカニズムがまだ機能している可能性があります。
クエリの待ち時間が長い場合。オブジェクト・ストレージのスループットをチェックして、チャンク・キャッシュがまだ機能していることを確認できます。通常の場合、チャンク・キャッシュが機能していれば、オブジェクト・ストレージのスループットは高くなります。あるいは、
sync
モードでチャンク・キャッシュを試してみることもできます。