• Milvusについて
  • スタート
  • コンセプト
  • ユーザーガイド
  • データインポート
  • AIツール
  • 管理ガイド
  • ツール
  • 統合
  • チュートリアル
  • よくあるご質問
  • API Reference

オンディスク インデックス

この記事では、ディスクに最適化されたベクトル検索用のオンディスク インデキシング アルゴリズムである DiskANN を紹介する。Vamana グラフに基づく DiskANN は、大規模データセット内の効率的なディスク上ベクトル検索を可能にします。

クエリー性能を向上させるために、各ベクトルフィールドにインデックスタイプを指定することができます。

現在、ベクトルフィールドは1つのインデックスタイプしかサポートしていません。Milvusはインデックスタイプを切り替えると、古いインデックスを自動的に削除します。

前提条件

MilvusでDiskANNを使用するには、以下の点に注意してください。

  • MilvusインスタンスがUbuntu 18.04.6またはそれ以降のリリースで動作していること。
  • MilvusのデータパスはNVMe SSDにマウントされている必要があります:
    • Milvusスタンドアロンインスタンスの場合、データパスはインスタンスが動作するコンテナ内の/var/lib/milvus/dataとする。
    • Milvusクラスタインスタンスの場合、データパスはQueryNodesおよびIndexNodesが実行されるコンテナ内の/var/lib/milvus/dataである必要があります。

制限

DiskANNを使用するには、以下を確認してください。

  • データに少なくとも 1 次元の浮動小数点ベクトルだけを使用する。
  • ベクトル間の距離の測定にはユークリッド距離 (L2)、内積 (IP)、または COSINE のみを使用する。

インデックスと検索の設定

  • インデックス構築パラメータ

    DiskANNインデックスを構築する場合、インデックスタイプとしてDISKANN を使用します。インデックスパラメータは必要ありません。

  • 検索パラメータ

    パラメータ説明範囲デフォルト値
    search_list候補リストのサイズ。サイズが大きいほど、性能は低下するが、より高い想起率を提供する。[topk, int32_max] を指定する。16

DiskANNは調整可能である。${MILVUS_ROOT_PATH}/configs/milvus.yaml 、DiskANN関連のパラメータを変更して性能を向上させることができます。

...
DiskIndex:
  MaxDegree: 56
  SearchListSize: 100
  PQCodeBudgetGBRatio: 0.125
  SearchCacheBudgetGBRatio: 0.125
  BeamWidthRatio: 4.0
...
パラメータ説明値の範囲デフォルト値
MaxDegreeVamanaグラフの最大次数。
値を大きくすると想起率が高くなるが、インデックスのサイズと構築時間が増加する。
[1, 512]56
SearchListSize候補リストのサイズ。
値が大きいほどインデックス構築にかかる時間が長くなるが、高い想起率が得られる。
インデックス構築時間を短縮する必要がない限り、MaxDegree より小さい値に設定する。
[1, int32_max]100
PQCodeBudgetGBRatioPQコードのサイズ制限。
値を大きくすると想起率が高くなるが、メモリ使用量が増加する。
(0.0, 0.25]0.125
SearchCacheBudgetGBRatio生データに対するキャッシュされたノード番号の比率。
値を大きくするとインデックス構築性能が向上するが、メモリ使用量は増加する。
[0.0, 0.3)0.10
BeamWidthRatio検索反復あたりの最大 IO リクエスト数と CPU 数との比率。[1, max(128 / CPU数, 16)] を指定する。4.0

トラブルシューティング

  • io_setup() failed; returned -11, errno=11:Resource temporarily unavailable エラーの対処法は?

    Linuxカーネルは非同期ノンブロッキングI/O(Asynchronous non-blocking I/O: AIO)機能を提供しており、プロセスが複数のI/O操作を同時に開始しても、そのいずれかが完了するのを待つ必要はありません。これは、処理とI/Oが重複するアプリケーションのパフォーマンスを向上させるのに役立ちます。

    この性能は、procファイルシステム内の/proc/sys/fs/aio-max-nr 仮想ファイルを使用して調整できる。aio-max-nr パラメーターは、許容される同時リクエストの最大数を決定する。

    aio-max-nr のデフォルトは65535 であるが、10485760 に設定することもできる。

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?