メインコンテンツまでスキップ
バージョン: User Guides (Cloud)

AUTOINDEX の解説

Zilliz Cloud では、異なる構成で動作するクラスターを提供しています。これらのクラスター上でインデックスを構築するには、異なるアプローチが必要です。ユーザーがインデックスパラメーターの調整や微調整の手間を省くため、AUTOINDEX が登場しました。

AUTOINDEX は、Zilliz Cloud で利用可能な独自のインデックスタイプで、より優れた検索パフォーマンスの実現を支援します。Zilliz Cloud 上のコレクションでベクトルフィールドまたはスカラーフィールドにインデックスを作成したい場合、AUTOINDEX が適用されます。

機能と利点

ベクトルフィールドでは、AUTOINDEX はオープンソースの Milvus と比較して大幅なパフォーマンス上の利点を提供し、特定のデータセットで最大 3 倍の QPS を達成します。AUTOINDEX を使用して、Zilliz Cloud クラスターがサポートするすべてのフィールドタイプにインデックスを作成できます。これには、Dense VectorBinary Vector、および Binary Vector が含まれます。

スカラーフィールドでは、AUTOINDEX はフィールドタイプと最も適切なスカラーインデックスタイプとの間で効率的なマッピングを提供します。

フィールドタイプ

AUTOINDEX の解決先

説明

VARCHAR

BITMAP (C* < 100) / INVERTED ( C ≥ 100)

文字列データ型。詳細については、String Field を参照してください。

INT8, INT16, INT32, INT64

BITMAP (C < 100) / STL_SORT (C ≥ 100)

整数。詳細については、Boolean & Number を参照してください。

FLOAT, DOUBLE

BITMAP (C* < 100) / INVERTED ( C ≥ 100)

浮動小数点。詳細については、Boolean & Number を参照してください。

BOOL

BITMAP

ブール値。詳細については、Boolean & Number を参照してください。

ARRAY

BITMAP (C* < 100) / INVERTED ( C ≥ 100)

スカラー値の同種配列。詳細については、配列 Field を参照してください。

GEOMETRY

RTREE

空間情報を格納するジオメトリデータ。詳細については、ジオメトリ Field を参照してください。

TIMESTAMPTZ

STL_SORT

タイムゾーン対応の ISO 8601 入力、タイムゾーンをまたいで一貫したフィルタリングと順序付けを行うために UTC として格納されます。詳細については、TIMESTAMPTZ Field を参照してください。

📘Notes

カーディナリティ(上記の表の C)は、コレクション全体でフィールド内の一意な値の数を示します。例えば、float フィールドのカーディナリティは、そのフィールド内の異なる float 値の数です。

配列フィールドの場合、カーディナリティはセグメント内のすべての配列における異なる要素値の数です。例えば:

[1, 2, 3]
[2, 3, 4]
[1, 4, 5]

異なる要素の値は {1, 2, 3, 4, 5} → カーディナリティ = 5 です。すべての配列からすべての要素をフラット化し、一意の値をカウントします — 異なる配列の数や配列の長さではありません。

AUTOINDEX は以下の側面で高いパフォーマンスを発揮します:

  • Single Instruction, Multiple データ (SIMD) を活用してクエリとストレージを高速化し、マシンのあらゆるパフォーマンスを最大限に引き出します。

  • データのグラフ化とクロッピング戦略を最適化し、検索時にアクセスするデータポイントの数を削減します。

  • 動的量子化戦略を実装し、距離計算のコストを削減します。

コスト効率

AUTOINDEX は、純粋なインメモリ、ハイブリッドディスク、およびメモリマップト (MMAP) モードをサポートし、ユーザーの多様な容量とパフォーマンスのニーズに応えます。インメモリモードでは、AUTOINDEX は動的量子化を使用してメモリ使用量を大幅に削減します。ハイブリッドディスクモードでは、AUTOINDEX はデータを動的にキャッシュし、アルゴリズムを使用して I/O 操作を最小限に抑え、高いパフォーマンスを維持できます。

自律チューニング

近似最近傍 (ANN) アルゴリズムでは、リコールとパフォーマンスのトレードオフが必要です。クエリパラメータは結果に大きな影響を与えます。クエリパラメータのサイズが小さすぎると、リコールは極めて低くなり、ビジネス要件を満たさない可能性があります。逆に、クエリパラメータのサイズが過度に大きいと、パフォーマンスが著しく低下します。

クエリパラメータの選択には多くのドメイン固有の知識が必要であり、これによりユーザーの学習曲線が大きくなります。この問題に対処するため、AUTOINDEX はクエリパラメータの選択を容易にするインテリジェントなアルゴリズムを開発しました。インデックス構築時にユーザーのデータセットの分布を分析することで、AUTOINDEX はクエリパラメータ推奨のための機械学習モデルによって、リコールとパフォーマンスのトレードオフを実現します。これにより、ユーザーはクエリパラメータを手動で設定する必要がなくなります。

📘Notes

Milvus のコードベースを Zilliz Cloud に移行する際、使用するインデックスタイプを手動で変更する必要はありません。Zilliz Cloud は、インデックスの作成時に自動的に AUTOINDEX を適用します。

インデックス作成と検索設定

インデックスの構築プロセスでは、コレクション内のエンティティを特定の順序に整理し、結果をより迅速に取得できるようにします。

Zilliz Cloud での浮動小数点ベクトルのインデックス作成は障害ではありません。インデックスタイプを AUTOINDEX に設定し、メトリックタイプを選択するだけで、Zilliz Cloud がインデックス作成と検索プロセスに最適な構成を決定します。メトリックタイプはベクトル間の距離の測定方法を決定し、ユーザーが考慮する必要がある唯一の事項です。

Milvus と Zilliz Cloud のインデックス作成設定の違いは以下に示すとおりです:

# For index-building
# On Milvus
index_params = {
# Another option is IP.
"metric_type": "L2",
# There are six more options available there.
"index_type": "IVF_FLAT",
# This varies with the specified index type.
"params": {
# This is the parameter required for IVF_FLAT to work.
"nlist": 1024
}
}

# On Zilliz Cloud
index_params = {
# Always set this to AUTOINDEX
"index_type": "AUTOINDEX",
# This is the only parameter you should think about.
"metric_type": "L2"
}

検索パラメータ設定の違いは以下の通りです:

# For searches
# On Milvus
search_params = {
# Applicable tuning parameters vary with the index type
"params": {
"nprobe": 10
}
}

# On Zilliz Cloud
search_params = {
"params": {
"level": 1 # The default value applies when left unspecified
}
}

level パラメータについて

検索パフォーマンスのチューニングには、インデックスタイプによって異なるパラメータセットの調整が必要です。例えば、HNSW を使用する場合は ef パラメータをチューニングし、IVF を使用する場合は nprobe パラメータを調整します。最適な再現率と検索パフォーマンスのバランスを実現するには、使用しているインデックスタイプ固有のパラメータを微調整する必要があります。

Zilliz Cloud では、上記のような複雑なパラメータセットを個別に扱う代わりに、統一されたパラメータ level を使用して検索パラメータのチューニングを簡素化しています。

level パラメータの値を増やすと再現率は高くなりますが、検索パフォーマンスが低下する可能性もあります。この値のデフォルトは 1 で、範囲は 1 から 10 です。デフォルト値では再現率が 90% となり、これはほとんどのユースケースで十分です。ただし、より高い再現率が必要な場合は、この値を増やしてください。

また、level パラメータを調整する際に enable_recall_calculationtrue に設定することで、異なる level 値における検索の精度を評価できます。

📘Notes

level および enable_recall_calculation パラメータは現在パブリックプレビュー段階であり、互換性の問題により完全に使用できない場合があります。サポートが必要な場合は、support@zilliz.com までお問い合わせください。

まとめ

この記事が、Zilliz Cloud 上のコレクションにおけるベクトルフィールドのインデックス構築と最適化のプロセスを簡素化する強力なツールである AUTOINDEX の理解を深める一助となれば幸いです。AUTOINDEX は、検索とインデックスに最も適した構成を自動的に決定することで、従来の方法と比較してユーザーの時間と労力を節約します。パフォーマンス最適化済み クラスターを使用している場合でも、容量最適化済み クラスターを使用している場合でも、AUTOINDEX はニーズに合わせて最適化されたインデックスにより、より高速で効率的な検索の実現をサポートします。AUTOINDEX や Zilliz Cloud のその他の機能についてご質問がある場合は、お気軽に当社チームまでご連絡ください。喜んでお手伝いいたします!