Vector Search Edition インスタンスを購入する前に、仕様計算ツールを使用して、推奨されるクエリノードとデータノードの設定を取得します。 このトピックでは、さまざまなデータ規模における HNSW と IVF_SQ8 のベンチマークデータも提供します。
仕様計算ツールの使用
Vector Search Edition の購入ページで、[仕様計算ツール] をクリックします。
[OpenSearch Vector Search Edition 仕様計算ツール] ダイアログボックスが表示されます。このダイアログボックスには、[基本設定]、[ベクトルデータ設定]、および [クエリ設定] セクションが含まれています。 パラメーターを入力した後、[操作を実行] をクリックして、推奨仕様を取得します。
基本設定
インスタンスリージョン:エンジンを作成するリージョン。
災害対策:災害対策が必要かどうか。 ドロップダウンリストから [はい] または [いいえ] を選択します。
ベクトルデータ設定
ベクトルドキュメント数:エンジンに書き込むベクトルデータエントリの数。
ベクトル次元:エンジンに書き込むベクトルの次元。
ベクトルアルゴリズム:要件に基づいてベクトルアルゴリズムを選択します。 次の 3 つのアルゴリズムをサポートしています。
HNSW:非常に高い再現率と優れたパフォーマンスを誇る、グラフベースのベクトル検索アルゴリズムです。 メモリとストレージの消費量は Linear と同等です。 HNSW は、低次元および高次元のベクトルデータセットの両方で優れたパフォーマンスを発揮するため、ほとんどのベクトル検索シナリオに適しています。
QC:量子化とクラスタリングに基づくベクトル検索アルゴリズムで、非常に高い再現率、低いリソース消費、優れたパフォーマンスを特徴としています。 低次元のベクトルデータセットでより優れたパフォーマンスを発揮します。 メモリとストレージの消費量は、通常、Linear や HNSW の約 4 分の 1 です。 QC は、再現率に厳しい要件がない大規模な検索シナリオに適しています。
Linear:線形検索アルゴリズム (ブルートフォース検索) であり、完全に正確な検索結果を保証しますが、大量のリソースを消費するためパフォーマンスは低くなります。 通常、最大 10,000 エントリの小規模なデータセットで正確な検索を行うために使用されます。
クエリ設定
平均 QPS:エンジンに期待する 1 秒あたりのクエリ数 (QPS)。
予想される平均応答時間:検索結果に対する目標平均応答時間。 単位は秒 (s) またはミリ秒 (ms) です。
パラメーターを入力した後、[操作を実行] をクリックします。
推奨事項には、クエリノード仕様ファミリー、クエリノード数、クエリノード仕様、データノード仕様ファミリー、データノード数、データノード仕様、データノードあたりのストレージ容量/ディスク容量などのパラメーターが含まれます。 推奨結果に基づいて、対応する仕様を購入します。
HNSW ベンチマークデータ
以下のテストデータは、公開データセットに基づき、エンジンバージョン vector_service 1.5.9 を使用し、1 つのクエリノードと 1 つのクラウドディスクデータノードという設定で行いました。 インデックス構築パラメーター:M = 100、ef-construction = 500。
データセット | 仕様 | パラメーター | recall@k (シリアル) | P95 レイテンシー (シリアル) | ピーク QPS (同時実行) | ピーク同時実行数 | クエリノード CPU/メモリ | データノード CPU/メモリ | インデックスのメモリ使用量 |
OpenAI 1536D 50K | 2C8G クエリノードと 2C16G データノード | ef=20, k=10 | 0.9793 | 20 ms | 643 | 10 | 89%/12% | 61%/10% | 311 MB |
ef=200, k=100 | 0.9991 | — | — | — | — | — | |||
4C16G クエリノードと 4C32G データノード | ef=20, k=10 | 0.9805 | 27 ms | 1035 | 20 | 99%/7% | 38%/18% | ||
ef=200, k=100 | 0.9989 | 35 ms | 744 | 20 | 88%/7% | 88%/18% | |||
Cohere 768D 1M | 4C16G クエリノードと 4C32G データノード | ef=20, k=10 | 0.9560 | 18 ms | 1413 | 20 | 96%/7% | 48%/18% | 3.13 GB |
ef=200, k=100 | 0.9919 | 131 ms | 745 | 80 | 68%/7% | 91%/18% | |||
4C16G クエリノードと 8C64G データノード | ef=20, k=10 | 0.9598 | 26 ms | 1601 | 30 | 99%/8% | 29%/8% | ||
ef=200, k=100 | 0.9921 | 25 ms | 1527 | 30 | 97%/7% | 93%/8% | |||
Cohere 768D 10M | 8C32G クエリノードと 8C64G データノード | ef=20, k=10 | 0.9429 | 24 ms | 1534 | 30 | 70%/3% | 95%/55% | 33 GB |
ef=200, k=100 | 0.9552 | 55 ms | 662 | 30 | 40%/5% | 95%/55% |
データノードのメモリ使用率とパフォーマンスの関係
以下のテストでは、Cohere 768D データセットを使用し、4C16G クエリノードと 4C32G クラウドディスクデータノードの設定、および HNSW インデックス (InnerProduct、ef-construction = 500、M = 100) を使用します。 データを増分的に (一度に 1M エントリ) 挿入し、データノードのメモリ使用率が QPS に与える影響を観察します。
データ量 | インデックスのメモリ使用量 | プロセスのメモリ使用量 | QPS (k=10, ef=20) | QPS (k=100, ef=200) |
2M | 6.3 GB | 26.6% | 1368 | 647 |
4M | 12.5 GB | 47.8% | 1324 | 378 |
5M | 15.6 GB | 59.2% | 1068 | 334 |
6M | 18.8 GB | 69% | 1112 | 341 |
7M | 21.8 GB | 80% | ほぼ使用不可 | |
8M | — | — | — | — |
一般的な設定では、ベクトルインデックス、PK インデックス、および転置インデックスは、検索レイテンシーを最小限に抑えるために mlock を使用して物理メモリにロックされます。 その他のデータ (属性、サマリーなど) は mlock でロックされず、オンデマンド読み込みのために OS のページキャッシュに依存します。 メモリ使用率が上昇すると、ページキャッシュが圧迫され、属性へのアクセスが頻繁にページフォールトを引き起こし、レイテンシーの増加につながります。
メモリ使用率 > 70%:QPS が急激に低下します。
メモリ使用率 > 80%:サービスがほぼ使用不可になります。
IVF_SQ8 ベンチマークデータ
以下のテストでは、Cohere 768D 10M データセットを使用し、4C16G クエリノードと 4C32G クラウドディスクデータノードの設定で行いました。
インデックス構築パラメーター:
{
"proxima.qc.builder.quantizer_class": "Int8QuantizerConverter",
"proxima.qc.builder.quantize_by_centroid": true,
"proxima.qc.builder.optimizer_class": "BruteForceBuilder",
"proxima.qc.builder.thread_count": 10,
"proxima.qc.builder.optimizer_params": {
"proxima.linear.builder.column_major_order": true
},
"proxima.qc.builder.store_original_features": false,
"proxima.qc.builder.train_sample_count": 3000000,
"proxima.qc.builder.train_sample_ratio": 0.5
}シリアルテスト:再現率とレイテンシー
スキャン率 | 再現率 | レイテンシー (P99) | レイテンシー (P95) |
0.01 | 0.9123 | 39.5 ms | 35.7 ms |
0.05 | 0.9454 | 84 ms | 75 ms |
同時実行パフォーマンステスト:増分挿入
768 次元のベクトルデータ 10M エントリを増分的に挿入し、異なるデータ量におけるインデックスサイズとクエリ QPS の変化を観察します。
データ量 | インデックスのメモリ使用量 | メモリ使用率 | QPS (スキャン率 0.01, k=100) | QPS (スキャン率 0.05, k=100) |
1M | 2.25 GB | 7.4% | 1000 | 558 |
2M | 3.11 GB | 10.4% | 766 | 258 |
4M | 4.95 GB | 16% | 408 | 122 |
10M | 9.9 GB | 32.4% | 131 | 46 |