AUTOINDEXの説明
Zilliz Cloudはパフォーマンス最適化クラスターと容量最適化クラスターを提供しています。目的が異なるため、これらのクラスターにインデックスを構築するには異なるアプローチが必要です。ユーザーがインデックスパラメータの調整や微調整の手間を省くために、AUTOINDEXが活用されます。
AUTOINDEXは、Zilliz Cloudで利用可能な独自のインデックスタイプであり、より良い検索パフォーマンスを実現できます。Zilliz Cloud上のコレクションでベクトルフィールドにインデックスを張りたい場合、AUTOINDEXが適用されます。
機能と利点
AUTOINDEXは、オープンソースのMilvusに比べて顕著なパフォーマンスの利点を提供し、特定のデータセットで最大3倍のQPSを実現できます。AUTOINDEXを使用して、Zilliz Cloudクラスターがサポートするすべてのフィールドタイプ、Dense Vector、Binary Vector、およびBinary Vectorにインデックスを作成できます。
AUTOINDEXはこれらの面で高性能を提供します:
-
シングルインストラクションマルチプルデータ(SIMD)を活用してクエリとストレージを高速化し、マシンから可能な限りすべてのパフォーマンスを引き出します。
-
データグラフィングとクロッピング戦略を最適化して、検索時のアクセス対象データポイント数を大幅に削減します。
-
動的量子化戦略を実装して距離計算コストを削減します。
コスト効率
AUTOINDEXは純粋なメモリ内、ハイブリッドディスク、およびメモリマップド(MMAP)モードをサポートし、容量とパフォーマンスに関するユーザーのさまざまなニーズに対応します。メモリ内モードでは、AUTOINDEXは動的量子化を使用してメモリ使用量を大幅に削減します。ハイブリッドディスクモードでは、AUTOINDEXはデータを動的にキャッシュし、I/O操作を最小限に抑えて高性能を維持するアルゴリズムを使用できます。
自律調整
近似最近傍(ANN)アルゴリズムでは、再現率とパフォーマンスの間でトレードオフが必要です。クエリパラメータは結果に大きな影響を与えます。クエリパラメータが小さすぎると再現率が極端に低くなり、ビジネス要件を満たさない可能性があります。逆に、クエリパラメータが大きすぎると、パフォーマンスが大幅に低下します。
クエリパラメータの選択には多くの分野固有の知識が必要であり、ユーザーの学習曲線を大幅に増加させます。この問題に対処するため、AUTOINDEXはクエリパラメータの選択を容易にする知的アルゴリズムを開発しました。インデックス構築中にユーザーのデータセット分布を分析することで、AUTOINDEXはクエリパラメータ推奨のための機械学習モデルを活用して再現率とパフォーマンスのトレードオフを実現します。このようにして、ユーザーはクエリパラメータを手動で設定する必要がなくなります。
MilvusのコードベースをZilliz Cloudに移行する際、手動で使用されているインデックスタイプを変更する必要はありません。Zilliz Cloudはインデックス作成時にAUTOINDEXを自動的に適用します。
インデックス構築と検索設定
インデックスの構築プロセスは、結果をより迅速に取得できるように特定の順序でコレクション内のエンティティを整理することを含みます。
Zilliz Cloud上の浮動小数ベクトルのインデックス作成は障害ではありません。単にインデックスタイプをAUTOINDEXに設定し、Zilliz Cloudがインデックス構築および検索プロセスに最も適した構成を決定できるようにメトリックタイプを選択するだけです。メトリックタイプはベクトル間の距離の測定方法を決定し、考慮する必要がある唯一のものです。
MilvusとZilliz Cloudのインデックス構築設定の違いは以下の通りです:
# インデックス構築用
# Milvusの場合
index_params = {
# 他の選択肢としてIPがあります。
"metric_type": "L2",
# 他に6つのオプションがあります。
"index_type": "IVF_FLAT",
# これは指定されたインデックスタイプによって異なります。
"params": {
# これはIVF_FLATが動作するために必要なパラメータです。
"nlist": 1024
}
}
# Zilliz Cloudの場合
index_params = {
# 常にこれをAUTOINDEXに設定してください
"index_type": "AUTOINDEX",
# 考慮すべき唯一のパラメータです。
"metric_type": "L2"
}
検索パラメータ設定の違いは以下の通りです:
# 検索用
# Milvusの場合
search_params = {
# 適用される調整パラメータはインデックスタイプによって異なります
"params": {
"nprobe": 10
}
}
# Zilliz Cloudの場合
search_params = {
"params": {
"level": 1 # 指定しない場合のデフォルト値が適用されます
}
}
levelパラメータについて
検索パフォーマンスの調整には、インデックスタイプに応じて異なるパラメータセットを調整する必要があります。たとえば、HNSWを使用する場合、調整すべきパラメータはefですが、IVFを使用する場合、調整するパラメータはnprobeです。最適な再現率と検索パフォーマンスのバランスを取るには、使用されているインデックスタイプに固有のこれらのパラメータを微調整する必要があります。
Zilliz Cloudは、上記の複雑なパラメータセットを操作する代わりに、検索パラメータ調整を簡素化するために統一されたパラメータlevelを使用します。
levelパラメータを増加させると再現率が向上しますが、検索パフォーマンスが低下する可能性もあります。値のデフォルトは1で、1から10の範囲です。デフォルト値では再現率は90%となり、通常、ほとんどのユースケースに十分です。ただし、より高い再現率が必要な場合は、この値を増加させてください。
levelパラメータを微調整する際、enable_recall_calculationをtrueに設定して、異なるlevel値での検索精度を評価できます。
level および enable_recall_calculation パラメータは依然としてパブリックプレビュー段階であり、互換性の問題により完全に使用できない可能性があります。ご支援が必要な場合は、support@zilliz.com までお問い合わせください。
まとめ
この記事が、Zilliz Cloud上のコレクションでベクトルフィールドのインデックスを構築および最適化するプロセスを簡素化する強力なツールであるAUTOINDEXをより深く理解するのに役立ったことを願っています。 AUTOINDEXは、検索およびインデックスの最も適した構成を自動的に決定することで、従来の方法と比較してユーザーの時間と労力を節約します。パフォーマンス最適化クラスターを使用している場合も容量最適化クラスターを使用している場合も、AUTOINDEXはニーズに合わせて調整されたインデックスでより高速で効率的な検索を実現できます。AUTOINDEXまたはZilliz Cloudの他の機能についてご質問がある場合は、いつでもチームまでお気軽にお問い合わせください。お手伝いできることを嬉しく思います!