インデックス構築レベルの調整
Zilliz Cloudはbuild_levelと呼ばれるパラメータを導入し、ターゲットコレクションのストレージ容量と検索再現率のバランスを取れるようにします。使用頻度が低いまたは追加のストレージ領域が必要なコレクションでは、再現率のわずかな低下と引き換えにストレージ容量を大幅に増やすことができます。逆もまた然りです。このガイドでは利用可能なオプションとコレクション用のインデックス構築方法について説明します。
この機能は現在パブリックレビュー中であり、以下の条件を満たす専用クラスターにのみ適用されます。
クラスターがパフォーマンス最適化または容量最適化タイプの場合、および
クラスターがMilvus v2.6.xと互換性がある場合。
クラスターをアップグレードしてこの機能をテストできます。さらに説明が必要な場合はお問い合わせください。
概要
異なるタイプのZilliz Cloudクラスターは、主張されているストレージ容量が大きく異なります。パフォーマンス最適化クラスター内のコレクションが使用頻度が低い、または追加のストレージを必要とする場合は、コレクション内の浮動小数ベクトル型(FLOAT_VECTOR、FLOAT16_VECTOR、およびBFLOAT16_VECTORなど)のインデックスを作成する際、build_levelを容量優先オプションに設定することを検討してください。これにより再現率がわずかに低下する可能性がありますが、ストレージ容量を**30%から40%**増加させることができます。
build_levelパラメータには3つのオプションがあります:精度優先 (2)、バランス (1)、および容量優先 (0)。
-
バランス (1)
これはデフォルトオプションで、ほとんどのシナリオにおいて検索精度とストレージ容量をバランスよく調整します。
-
精度優先 (2)
このオプションは検索パフォーマンスと高再現率を優先し、高精度が必要なコレクションに適しています。
-
容量優先 (0)
このオプションはストレージ容量を重視し、追加のストレージ領域が必要なコレクションに最適です。
内部のベンチマークテストでは、デフォルトオプションがすべてのクラスタータイプに関係なくストレージ容量を増加させることが示されています。パフォーマンス最適化クラスターの場合、デフォルトオプションはストレージ容量を60%、パフォーマンス(QPS)を**17%**向上させます。
パフォーマンス最適化クラスター
以下の表は、build_level導入前後のパフォーマンス最適化クラスターの容量、QPS、再現率を比較しています。デフォルトオプションは再現率を維持し、QPSとストレージ容量の両方を増加させていることがわかります。
構築レベルオプション | 容量 | QPS | 再現率 |
|---|---|---|---|
| 150万個の768次元ベクトル | ~3,000 | 91% - 97% |
容量優先 (0) | 525万個の768次元ベクトル (↑250%) | ~2,850 (↓~5%) | 90% - 95% |
バランス (1) | 240万個の768次元ベクトル (↑60%) | ~3,500 (↑17%) | 91% - 97% |
精度優先 (2) | 150万個の768次元ベクトル | ~3,000 | 92% - 98% (↑) |
容量最適化クラスター
以下の表は、build_level導入前後の容量最適化クラスターの容量、QPS、再現率を比較しています。デフォルトオプションは再現率を維持し、QPSとストレージ容量の両方を増加させていることがわかります。
構築レベルオプション | 容量 | QPS | 再現率 |
|---|---|---|---|
| 500万個の768次元ベクトル | ~340 | 93% - 98% |
容量優先 (0) | 1000万個の768次元ベクトル (↑100%) | ~300 | 89% - 97% |
バランス (1) | 750万個の768次元ベクトル (↑50%) | ~350 (↑3%) | 92% - 97% |
精度優先 (2) | 500万個の768次元ベクトル | ~345 | 94% - 98% (↑) |
制限事項
操作を開始する前に、以下の制限事項を確認してください:
-
パフォーマンス最適化または容量最適化タイプのMilvus 2.6.x互換専用クラスターのみがこの設定を許可します。
-
コレクションのインデックス作成時に、FLOAT_VECTOR、FLOAT16_VECTOR、およびBFLOAT16_VECTORを含む浮動小数ベクトル型のベクトルフィールドにこのパラメータを設定する必要があります。
-
一度設定すると、このパラメータは変更できません。ただし、必要に応じてインデックスを削除し、目的の設定で別のインデックスを作成できます。
-
マイグレーションまたはバックアップにより
build_level設定は削除されます。マイグレーションまたは復元が完了した後、必要に応じてインデックスを削除し、目的の設定で別のインデックスを作成できます。
手順
ほとんどの場合、build_levelを設定する必要はありません。デフォルト設定により、検索パフォーマンス、精度、ストレージ容量のバランスが保たれます。
Zilliz Cloudでは、build_levelをプログラム的に設定するか、Zilliz Cloudコンソールで設定できます。
プログラム的にbuild_levelを設定
build_levelを設定するには、FLOAT_VECTOR、FLOAT16_VECTOR、およびBFLOAT16_VECTORなどの浮動小数型のベクトルフィールドにインデックスをかける際に設定する必要があります。
以下の例では、準備のステップが完了していると仮定します。build_levelを1に設定することは、バランスオプションが適用されることを示しています。
# 4. インデックスを設定
# 4.1. インデックスパラメータを設定
index_params = MilvusClient.prepare_index_params()
# 4.2. ベクトルフィールドにインデックスを追加
index_params.add_index(
field_name="vector",
metric_type="COSINE",
index_type="AUTOINDEX",
index_name="vector_index",
build_level=1
)
# 4.4. インデックスファイルを作成
client.create_index(
collection_name="customized_setup",
index_params=index_params
)
# 5. インデックスを説明
res = client.list_indexes(
collection_name="customized_setup"
)
Zilliz Cloudコンソールでbuild_levelを設定
プログラムでbuild_levelを設定する代わりに、Zilliz Cloudコンソールでコレクションを作成する際に設定することもできます。
-
ターゲットクラスターのコレクションタブで**+ コレクションの作成**をクリックします。
-
コレクションの作成ページで、スキーマを設定します。
ベクトルフィールドのデータ型が有効なオプションのいずれかであることを確認してください:FLOAT_VECTOR、FLOAT16_VECTOR、およびBFLOAT16_VECTOR。
-
インデックスを作成セクションで、インデックスを編集をクリックします。
-
表示されるベクトルインデックス編集フィールドで、メトリックタイプとインデックス構築レベルを設定できます。