STL_SORT
STL_SORT インデックスは、Zilliz Cloud 内の数値フィールド(INT8、INT16 など)、VARCHAR フィールド、または TIMESTAMPTZ フィールドに対するクエリパフォーマンスを向上させるために、データをソート順に整理するよう特別に設計されたインデックスタイプです。
以下のようなクエリを頻繁に実行する場合は、STL_SORT インデックスを使用してください。
-
==、!=、>、<、>=、<=演算子を使用した比較フィルタリング -
INおよびLIKE演算子を使用した範囲フィルタリング
サポートされるデータ型
-
数値フィールド(例:
INT8、INT16、INT32、INT64、FLOAT、DOUBLE)。詳細については、Boolean & Number を参照してください。 -
VARCHARフィールド。詳細については、String Field を参照してください。 -
TIMESTAMPTZフィールド。詳細については、TIMESTAMPTZ Field を参照してください。
動作原理
Zilliz Cloud は STL_SORT を2つのフェーズで実装しています。
-
インデックスの構築
-
インジェスト中、Zilliz Cloud はインデックス付きフィールドのすべての値を収集します。
-
値は、C++ STL の std::sort を使用して昇順にソートされます。
-
各値はそのエンティティ ID とペアリングされ、ソートされた配列がインデックスとして永続化されます。
-
-
クエリの高速化
-
クエリ時、Zilliz Cloud はソートされた配列に対して 二分探索(std::lower_bound および std::upper_bound)を使用します。
-
等価性の場合、Zilliz Cloud は一致するすべての値を迅速に見つけます。
-
範囲の場合、Zilliz Cloud は開始位置と終了位置を特定し、その間のすべての値を返します。
-
一致するエンティティ ID は、最終的な結果の組み立てのためにクエリ実行エンジンに渡されます。
-
これにより、クエリの複雑さは O(n)(フルスキャン)から O(log n + m) に削減されます。ここで、m は一致数です。
STL_SORT インデックスの作成
数値、VARCHAR、または TIMESTAMPTZ フィールドに STL_SORT インデックスを作成できます。追加のパラメータは必要ありません。
以下の例は、TIMESTAMPTZ フィールドに STL_SORT インデックスを作成する方法を示しています。
from pymilvus import MilvusClient
client = MilvusClient(uri="YOUR_CLUSTER_ENDPOINT") # Replace with your server address
# Assume you have defined a TIMESTAMPTZ field named "tsz" in your collection schema
# Prepare index parameters
index_params = client.prepare_index_params()
# Add RTREE index on the "tsz" field
index_params.add_index(
field_name="tsz",
index_type="STL_SORT", # Index for TIMESTAMPTZ
index_name="tsz_index", # Optional, name your index
params={} # No extra params needed
)
# Create the index on the collection
client.create_index(
collection_name="tsz_demo",
index_params=index_params
)
インデックスの削除
drop_index() メソッドを使用して、コレクションから既存のインデックスを削除します。
Milvus v2.6.x と互換性のあるクラスターでは、不要になったスカラーインデックスを、コレクションを最初にリリースすることなく直接削除できます。
client.drop_index(
collection_name="tsz_demo", # Name of the collection
index_name="tsz_index" # Name of the index to drop
)
使用上の注意
-
フィールド型: 数値、
VARCHAR、およびTIMESTAMPTZフィールドで動作します。データ型の詳細については、Boolean & Number および TIMESTAMPTZ Field を参照してください。 -
パラメータ: インデックスパラメータは必要ありません。
-
mmap サポートされていません: メモリマップモードは
STL_SORTでは使用できません。