インデックス構築レベルの調整Public Preview
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。
-
インデックスの作成セクションで、インデックスの編集をクリックします。
-
表示されるベクトルインデックス編集フィールドで、メトリックタイプおよびインデックス構築レベルを設定できます。