Vector Retrieval Service for Milvus を使用する前に、コンピューティングリソースの要件を見積もることが不可欠です。これにより、システムの安定性を確保し、コストを最適化できます。Milvus は、データセットのサイズ、ベクターのディメンション、インデックスタイプなどの要因に基づいて必要なリソースを見積もるのに役立つリソース計算機を提供します。ただし、最終的な構成は、ご自身のパフォーマンステストに基づいて常に調整する必要があります。
リソース計算機
このサービスは、vCPU とメモリの比率を 1:4 に維持します。たとえば、2 vCPU のインスタンスには 8 GiB のメモリが付属します。インスタンスの安定性を確保するために、サービスは必要以上のメモリリソースをプロビジョニングします。
[リソース計算機] を使用して、インスタンスリソースのベースライン見積もりを取得できます。ベクター数 (百万単位) とベクターのディメンションを入力し、インデックスタイプを選択します。システムは適切なインスタンス構成を推奨します。たとえば、HNSW インデックスタイプ (M=4) を使用する 800 万個の 768 ディメンションのベクターを持つデータセットの場合、リソース計算機は下の図に示すように推奨構成を表示します。この推奨事項をインスタンスの選択とパフォーマンステストの開始点として使用できます。
リソースパラメーターの構成
高可用性の有効化
高可用性 (HA) 構成は、各ノードのレプリカを 2 つ維持することで、本番クラスターの安定性を確保します。これにより、システムのフォールトトレランスと信頼性が大幅に向上します。
HA を有効にすると、非 HA 構成と比較してリソース要件が 2 倍になります。本番クラスターでこの機能を有効にする前に、リソースのニーズを十分に評価してください。
リソーススケールの指定
パラメーター | 説明 |
ベクター数 (百万単位) | データセット内のベクターの総数。データセットが大きいほど、より多くのストレージが必要になり、インデックス構築とクエリの計算の複雑さが増します。これにより、処理時間が長くなり、ハードウェア要件が高くなる可能性があります。 |
ベクターディメンション | 各ベクターのディメンション数。高次元のベクターは、インデックスの複雑さと類似検索の計算コストを増加させます。これは、特に効果的な次元削減や量子化戦略がない場合、ストレージコストとクエリ速度の両方に影響します。 |
インデックスタイプの選択
インデックスタイプは、リソース要件とクエリパフォーマンスを決定する重要な要素です。インデックスアルゴリズムが異なれば、クエリ速度、取得率、リソース消費の間でトレードオフも異なります。
インデックスタイプ | 説明とユースケース |
HNSW | 特に高次元データに対して、超高速のクエリ応答を提供するグラフベースのインデックス。最適な用途: 十分なメモリとコンピューティングリソースが利用可能で、可能な限り最速のクエリ速度が必要なユースケース。 |
IVF_FLAT | 高い検索パフォーマンスと精度を提供します。FLAT よりも大幅に優れたパフォーマンスを、より低いリソース消費で提供します。最適な用途: パフォーマンスとコストのバランスが求められる大規模なデータセット。 |
DISKANN | メモリに収まらない大規模なデータセットで効率的な取得を行うために設計されたディスクベースの ANN インデックス。Vamana グラフアルゴリズムを使用します。最適な用途: メモリが制約となる非常に大規模な高次元データセット。 |
SCANN | 検索空間の枝刈りと量子化を使用する効率的な ANN インデックス。最大内積検索 (MIPS) に優れています。最適な用途: 精度よりも取得速度が重要な大規模データセット。 |
FLAT | 正確な力まかせ探索を実行します。最適な用途: 完全な精度が必須で、クエリ速度が遅くても許容できる小規模なデータセット (数百万ベクター未満など)。 |
IVF_SQ8 | 量子化を使用して取得を高速化します。その精度は HNSW よりも低い場合があります。最適な用途: リソースは限られているが、高い取得率が必要な大規模データセット。 |
インデックスパラメーターの設定
HNSW: 各ノードの近傍数を定義する
[M]パラメーターを構成します。[M]の値を大きくすると、取得率と精度が向上しますが、インデックスの構築時間とメモリ使用量も増加します。[M]の値を小さくすると、ビルドが高速化され、メモリフットプリントが小さくなりますが、精度がいくらか犠牲になる可能性があります。[M]の推奨開始値はlg(N)です。ここで、Nはベクターの総数です。その後、クエリのパフォーマンスに基づいてこの値 (16、32、64 など) を微調整できます。
IVF_FLAT および IVF_SQ8: 各クラスター内のベクター数を設定します。これにより、ベクタースペースをパーティション分割するクラスターの数が決まります。
SCANN: [with_raw_data] スイッチを使用して、生データをインデックスに保存するかどうかを制御します。システムが主に高速な近似検索に使用され、生データに頻繁にアクセスしない場合は、このスイッチを [False] に設定します。
スカラーフィールドの設定
[スカラーフィールド] を有効にする場合は、[行あたりの平均データサイズ] を設定します。このパラメーターは、インデックスシステムがメモリ、ストレージ、シャーディングを計画し、クエリパフォーマンスを最適化するのに役立ちます。