このトピックでは、Vector Retrieval Service for Milvus のコンピュートユニット (CU) タイプとクエリノードの数について説明します。この情報を使用して、ワークロードに最適なインスタンス仕様を選択してください。
CU タイプの紹介
Vector Retrieval Service for Milvus のクエリノードは、さまざまなビジネスシナリオと要件に応じて、次の CU タイプをサポートしています。
パフォーマンス最適化: 高い秒間クエリ数 (QPS) と低いクエリ待機時間を必要とするシナリオに適しています。パフォーマンス最適化インスタンスは、検索、レコメンデーションシステム、生成 AI、チャットボットアプリケーションなど、高い同時実行性、高トラフィック、低待機時間のシナリオに最適です。
容量最適化: 大量のデータを扱うが、検索効率に対する要件が低いシナリオに適しています。容量最適化インスタンスは、パフォーマンス最適化インスタンスの 4 倍のストレージ容量を提供し、より多くのベクトルデータを保存および管理できます。これらのインスタンスは、大規模な非構造化データ取得、著作権検出、モデルデータ準備など、ほとんどのシナリオのニーズを満たす優れた技術仕様も提供します。
重要現在、容量最適化 CU には次の制限があります。
水平スケーリング (スケールアウトおよびスケールイン) のみがサポートされており、垂直スケーリング (ノード仕様のアップグレードまたはダウングレード) はサポートされていません。したがって、購入前に CU の仕様を慎重に確認する必要があります。
DiskANN インデックスが推奨されます。このインデックスタイプは、Float 型のベクトルデータのみをサポートします。ベクトル距離の測定には、ユークリッド距離 (L2)、内積 (IP)、または余弦類似度 (COSINE) のみがサポートされます。
ストレージ容量の比較
CU タイプ | インデックスタイプ | CU 仕様 | 容量 (SIFT, 128-dim) | 容量 (GIST, 960-dim) |
パフォーマンス最適化 | HNSW M:30 efConstruction:360 | 4 vCPU 16 GiB (4 CU) | 1600 万 | 300 万 |
8 vCPU 32 GiB (8 CU) | 3200 万 | 600 万 | ||
16 vCPU 64 GiB (16 CU) | 6400 万 | 1200 万 | ||
32 vCPU 128 GiB (32 CU) | 1 億 2800 万 | 2400 万 | ||
容量最適化 | DiskANN | 8 vCPU 32 GiB (8 CU) | 1 億 2000 万 | 2300 万 |
16 vCPU 64 GiB (16 CU) | 2 億 4000 万 | 4600 万 | ||
32 vCPU 128 GiB (32 CU) | 4 億 8000 万 | 9200 万 |
上記の表のデータは実際のテストに基づいており、容量評価のリファレンスとして使用できます。
容量テストに使用されるデータには、プライマリキーとベクトルデータのみが含まれ、スカラーデータは含まれていません。プライマリキーは、0 から始まる自動インクリメントの正の整数から変換された文字列です。ほとんどの本番シナリオでは、スカラーフィールドが不可欠であり、ストレージスペースも消費します。これにより、実際に保存されるベクトルの数は、表に示されている値よりも少なくなります。
取得パフォーマンスの比較
CU タイプ | CU 仕様 | インデックスタイプ | topk=50 | topk=100 | topk=250 | topk=1000 | ||||
QPS | RT_p99 | QPS | RT_p99 | QPS | RT_p99 | QPS | RT_p99 | |||
パフォーマンス最適化 | 16 vCPU 64 GiB (16 CU) | HNSW M:30 efConstruction:360 | 2000 | < 10 ms | 1200 | < 10 ms | 550 | < 15 ms | 150 | < 30 ms |
容量最適化 | 16 vCPU 64 GiB (16 CU) | DiskANN | 700 | < 15 ms | 550 | < 20 ms | 200 | < 30 ms | 60 | < 50 ms |
上記の表のデータは、Cohere データセット (1000 万の 768 ディメンションベクトル) からのテスト結果に基づいています。パフォーマンスはデータセットごとにデータ分布の影響を受けるため、このデータはリファレンスとしてのみ使用してください。
RT_p99 メトリックは、1,000 個のクエリを順次実行して測定された 99 パーセンタイルの応答時間です。
このパフォーマンステストに使用されるデータには、プライマリキーとベクトルデータのみが含まれ、スカラーデータは含まれていません。プライマリキーは、0 から始まる自動インクリメントの正の整数です。パフォーマンス最適化インスタンスには HNSW インデックスタイプが使用され、容量最適化インスタンスには DiskANN インデックスタイプが使用されます。
Vector Retrieval Service for Milvus は、バックグラウンドで定期的にベクトルインデックスを最適化します。このプロセスは通常、データが書き込まれてから 3 時間以内に完了し、その時点でシステムパフォーマンスは最適な状態に達します。
クエリノードの数
Vector Retrieval Service for Milvus は、1 から 50 の範囲でクエリノードの数を調整することをサポートしています。ノード数が多いほど、線形関係でより高い QPS をサポートします。また、ノード数が多いほど、サービスの可用性が向上します。したがって、高可用性を必要とする本番環境では、少なくとも 2 つのノードを選択してください。
シナリオ分析
2000 万枚の画像を持つ画像取得システムを構築しているとします。各画像は 768 ディメンションのベクトルで表され、目標は毎秒 2,000 件の検索リクエストを処理し、10 ミリ秒以内に上位 100 件の関連画像を返すことです。この場合、次のようにオプションを評価できます。
待機時間の評価: 待機時間の要件に基づいて適切な CU タイプを選択します。たとえば、10 ミリ秒未満の待機時間が必要な場合、この要件を満たすことができるのはパフォーマンス最適化 CU のみです。
容量の考慮事項: データ量とディメンションに基づいて必要な CU 数を計算します。16 vCPU と 64 GiB (16 CU) を備えた 1 つのパフォーマンス最適化 CU は、1200 万の 960 ディメンションベクトルを処理できます。2000 万の 768 ディメンションベクトルに対応するには、これらの CU を少なくとも 2 つ、合計 32 CU を構成する必要があります。
スループットの確認: 特定の top-k 設定に対する各 CU のスループットを確認します。たとえば、top-k 設定が 100 の場合、パフォーマンス最適化 CU は 1,200 QPS を提供します。2,000 QPS の持続的なパフォーマンスを達成するには、ノード数を 2 倍にする必要があります。
まとめると、このアプリケーションシナリオでは、パフォーマンス要件を満たすために、パフォーマンス最適化 CU を選択し、それぞれ 16 vCPU と 64 GiB (16 CU) の仕様を持つ 4 つのノードを構成します。