Vector Retrieval Service for Milvus (Milvus) を使用する前に、システムの安定性を確保し、コストを管理するために、計算リソースのニーズを評価する必要があります。Milvus は、実験データ (ベクター数、ベクターのディメンション、インデックスタイプなど) に基づいて必要なリソースを見積もるのに役立つリソース計算ツールを提供します。ただし、実際のデプロイメントでは、ご自身のテスト結果に基づいて構成を調整する必要があります。
リソース計算ツール
Milvus は CPU 対メモリ比を 1:4 に維持します。インスタンスの安定性を確保するため、サービスは必要以上のメモリをプロビジョニングします。
リソース計算ツールを使用して、必要なインスタンスリソースを見積もります。ベクター数とディメンションを入力し、インデックスタイプを選択すると、システムが適切なインスタンス構成を推奨します。例えば、それぞれ 768 次元のベクターが 800 万個あるデータセットで、インデックスパラメーター M を 4 に設定した HNSW インデックスタイプを使用する場合、計算ツールは推奨構成をリアルタイムで表示します。これらの推奨事項を、インスタンスの選択と性能テストの出発点として使用できます。リソース計算ツールは、[高可用性] トグル、[ベクター数 (百万)]、[ベクターのディメンション]、[インデックスタイプ] (HNSW など)、[インデックスパラメーター M] (ノードあたりの近傍ノード数、範囲 4~64)、[スカラーフィールド] トグルなどの入力パラメーターをサポートしています。例えば、800 万個の 768 次元ベクターで HNSW インデックス (M=4) を使用する場合、計算ツールは必要なメモリを 31.2 GB、生データを 22.9 GB と見積もり、40 CPU コアと 160 GB のメモリを持つクラスター構成を推奨します。各 Milvus コンポーネントの推奨構成は次のとおりです:メタデータサービス (4 コア、16 GB のインスタンス 1 台)、Proxy (2 コア、8 GB のインスタンス 1 台)、Query Node (4 コア、16 GB のインスタンス 2 台)、Index Node (4 コア、16 GB のインスタンス 1 台)、Data Node (2 コア、8 GB のインスタンス 1 台)。これらの見積もりは実験データに基づいています。本番環境にデプロイする前に、ご自身のテスト結果に基づいて構成を調整することを推奨します。
リソースパラメーター
高可用性構成
高可用性構成は、デュアルノードレプリカメカニズムを通じてオンラインクラスターを安定させます。また、デフォルトでデータのレプリカを 2 つロードするため、システムのフォールトトレランスと信頼性が大幅に向上します。高可用性を有効にすると、非 HA 構成の 2 倍のリソースが必要になることにご注意ください。この機能を有効にする前に、本番クラスターのリソース要件を十分に評価し、計画してください。
入力リソースの規模
|
パラメーター |
説明 |
|
Vector Count (Millions) |
ベクター数は、インデックスのサイズやクエリ時にスキャンするデータ量に直接影響します。ベクター数が多くなると、より多くのストレージが必要になり、インデックス構築とクエリの計算量が増加し、処理時間が長くなり、ハードウェア要件も高くなります。 |
|
Vector Dimension |
ベクターのディメンションは、インデックスの複雑さと精度に影響します。高次元のベクターは、インデックスの複雑さと類似検索の計算コストを増加させます。これは、効果的な次元削減や量子化戦略がない場合、ストレージコストとクエリ速度の両方に影響します。 |
インデックスタイプ
インデックスタイプは、リソース要件とクエリパフォーマンスを決定する重要な要素です。インデックスアルゴリズムが異なれば、メモリ、CPU、クエリ時間に対する要件も異なります。サポートされているインデックスタイプを以下に示します。
|
パラメーター |
説明 |
|
HNSW |
HNSW (Hierarchical Navigable Small World) はグラフベースのインデックスで、特に高次元データ空間において高いクエリ効率を実現します。ただし、より多くの計算リソースとメモリを必要とします。最速のクエリ速度が求められ、十分なリソースがあり、高次元データを処理するシナリオに適しています。 |
|
IVF_FLAT |
精度とクエリ速度のバランスが取れており、ほとんどのシナリオに適しています。クラスタリングによって計算量を削減し、比較的低いリソース消費で FLAT インデックスよりも大幅なパフォーマンス向上を実現します。クエリパフォーマンスとリソースコストのバランスが求められる大規模なデータセットのシナリオに最適です。 |
|
DISKANN |
DISKANN は、大規模データセットでの高速かつ効率的な検索のために設計された、ディスクベースの近似最近傍 (ANN) 検索技術です。Vamana グラフアルゴリズムを使用して、限られたメモリでも効率的なベクターインデックス作成と検索を実現するため、超大規模な高次元データの処理に適しています。 |
|
SCANN |
SCANN は、高速な検索が必要で、高い精度は求められない大規模データセットに適した、効率的な近似最近傍 (ANN) 検索インデックス構造です。検索空間のプルーニングと量子化を使用することで、速度とリソース消費のバランスを取り、特に最大内積検索 (MIPS) に重点を置いています。 |
|
FLAT |
完全一致を実行することで最高のクエリ精度を提供しますが、その代償としてクエリ速度が犠牲になります。大規模データセットではパフォーマンスが不十分な場合があります。データ量が比較的小さく (例:数千万)、クエリ精度に厳しい要件があり、クエリ速度の低下を許容できるシナリオに適しています。 |
|
IVF_SQ8 |
量子化によって検索プロセスを高速化するため、高い再現率が求められるリソースに制約のあるシナリオに適しています。ただし、クエリ精度は HNSW と比較して低い場合があります。リソースが限られており、高い再現率が求められる大規模データセット上のアプリケーションに最適です。 |
インデックスパラメーター
-
HNSW:各ノードの近傍ノード数を決定する M 値を設定する必要があります。M 値を大きくすると、インデックスの再現率と精度が向上しますが、インデックス構築時間とメモリ使用量も増加します。M 値を小さくすると、インデックスの構築が速くなり、メモリ使用量も少なくなりますが、精度が犠牲になる可能性があります。M の推奨初期値は
lg(N)です。ここで N はベクターの総数です。その後、実際のクエリパフォーマンスに基づいてこの値を微調整できます。例えば、M を 16、32、または 64 に設定し、結果に基づいて調整してみてください。 -
IVF_FLAT および IVF_SQ8:ベクター空間を分割するためのクラスター数 (転置リスト) を設定する必要があります。クラスター数を多くすると、インデックスの精度と再現率が向上しますが、インデックス構築時間とクエリ計算コストも増加します。クラスター数を少なくすると、インデックスの複雑さが軽減されますが、精度が低下する可能性があります。
-
SCANN:
with_raw_dataパラメーターを使用して、インデックス内に生データを保存するかどうかを制御できます。システムが主に高速な近似検索に使用され、生データへの頻繁なアクセスを必要としない場合は、このパラメーターをFalseに設定することを推奨します。そうでない場合はTrueに設定します。
スカラーフィールド
Scalar Fields オプションを有効にすると、Average Size of Data per Row パラメーターを設定できます。これにより、インデックスシステムがメモリ、ストレージ、シャーディングのリソースを効率的に割り当て、クエリパフォーマンスを最適化できます。