メインコンテンツまでスキップ

インデックス構築レベルを調整する

Zilliz Cloud では、build_level というパラメーターが導入されており、これにより、対象コレクションのストレージ容量と検索再現率のバランスを取ることができます。使用頻度が低いコレクションや、より多くのストレージ容量が必要なコレクションでは、再現率がわずかに低下する代わりに、ストレージ容量を大幅に増やすことができ、その逆も同様です。本ガイドでは、利用可能なオプションと、それらを使用してコレクションのインデックスを構築する方法について説明します。

Notes

この機能は現在 PUBLIC REVIEW 段階にあり、次の条件を満たす Dedicated クラスターにのみ適用されます。

  • クラスターが Performance-optimized、Capacity-optimized、Tiered-storage タイプであること。

  • クラスターが Milvus v2.6.x と互換性があること。

クラスターをアップグレードしてこの機能をテストできます。さらに説明が必要な事項がある場合は、お問い合わせください。

概要​

タイプの異なる Zilliz Cloud クラスターでは、公称ストレージ容量が大きく異なります。Performance-optimized クラスター内のコレクションが使用頻度の低い用途向けである場合や、追加のストレージが必要な場合は、コレクション内の FLOAT_VECTOR、FLOAT16_VECTOR、BFLOAT16_VECTOR などの浮動小数点ベクトル型のベクトルフィールドにインデックスを作成する際に、build_level を Capacity-first オプションに設定することを検討してください。これにより再現率がわずかに低下する可能性がありますが、ストレージ容量を 30% から 40% 増やすことができます。

build_level パラメーターには、Precision-first(2)、Balanced(1)、Capacity-first(0)の 3 つのオプションがあります。

  • Balanced(1)

    これはデフォルトのオプションで、ほとんどのシナリオで検索精度とストレージ容量のバランスを取ります。

  • Precision-first(2)

    このオプションは検索パフォーマンスと高い再現率を優先し、高い精度が求められるコレクションに適しています。

  • Capacity-first(0)

    このオプションはストレージ容量を重視し、追加のストレージ容量が必要なコレクションに最適です。

社内ベンチマークテストで示されているように、デフォルトのオプションはクラスターのタイプに関係なくすべてのクラスターのストレージ容量を増やします。Performance-optimized クラスターでは、デフォルトのオプションによってストレージ容量が 60% 増加し、パフォーマンス(QPS)が 17% 向上します。

Performance-optimized クラスター​

次の表は、build_level の導入前後における Performance-optimized クラスターの容量、QPS、再現率を比較したものです。デフォルトのオプションが再現率を維持し、QPS とストレージ容量の両方を増やしていることがわかります。

構築レベルオプション容量(CU あたり)QPS再現率
Capacity-first(0)500 万個の 768 次元ベクトル~ 1,80090% - 95%
Balanced(1)200 万個の 768 次元ベクトル~ 2,80091% - 97%
Precison-first(2)150 万個の 768 次元ベクトル~ 2,90092% - 98%(↑)

Capacity-optimized クラスター​

次の表は、build_level の導入前後における Capacity-optimized クラスターの容量、QPS、再現率を比較したものです。デフォルトのオプションが再現率を維持し、QPS とストレージ容量の両方を増やしていることがわかります。

構築レベルオプション容量(CU あたり)QPS再現率
Capacity-first(0)1,200 万個の 768 次元ベクトル~ 20089% - 97%
Balanced(1)800 万個の 768 次元ベクトル~ 30093% - 98%
Precision-first(2)500 万個の 768 次元ベクトル~ 35094% - 98%

Tiered-storage クラスター​

データの大部分は S3 に保存されるため、メモリはもはや主要なボトルネックではありません。その結果、クラスターの最大容量は比較的安定したままとなり、最も大きな影響を受けるのは 再現率 です。また、量子化レベルの違いにより、パフォーマンスがわずかに変動します。

  • Balanced(1): これは現在の状態を表しており、パフォーマンスは既存のベンチマークと一致したままです。

  • Precision-first(2): Build Level を上げると 再現率が約 3%–4% 向上しますが、その代わりに QPS がわずかに低下し、レイテンシがわずかに増加します。

  • Capacity-first(0): この構成はメリットが最小限であるため、まれであると予想されます。容量は変わらない一方で、QPS とレイテンシがわずかに改善する代わりに、再現率が 3%–4% 低下します。

制限事項​

操作を開始する前に、以下の制限事項を確認してください。

  • コレクションにインデックスを作成する際は、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 に設定すると、Balanced オプションが適用されることを示します。

python
# 4. Set up index
# 4.1. Set up the index parameters
index_params = MilvusClient.prepare_index_params()

# 4.2. Add an index on the vector field
index_params.add_index(
field_name="vector",
metric_type="COSINE",
index_type="AUTOINDEX",
index_name="vector_index",
build_level=1
)

# 4.3. Create the index
client.create_index(
collection_name="customized_setup",
index_params=index_params
)

# 5. List indexes
res = client.list_indexes(
collection_name="customized_setup"
)

Zilliz Cloud コンソールで build_level を設定する​

build_level をプログラムから設定する代わりに、コレクションを作成する際に Zilliz Cloud コンソールで設定することもできます。

  1. 対象クラスターの コレクション タブで + Create Collection をクリックします。

  2. Create Collection ページでスキーマを設定します。

    ベクトルフィールドのデータ型が、FLOAT_VECTOR、FLOAT16_VECTOR、BFLOAT16_VECTOR のいずれかの有効なオプションであることを確認してください。

  3. Create インデックス セクションで Edit Index をクリックします。

  4. 表示される Edit ベクトル Index フィールドで、Metric Type と Index Build Level を設定できます。