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

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 つのフェーズで実装しています。

  1. インデックスの構築

    • 取り込み中、Zilliz Cloud はインデックス対象フィールドのすべての値を収集します。

    • 値は、C++ STL の std::sort を使用して昇順にソートされます。

    • 各値はエンティティ ID とペアにされ、ソートされた配列がインデックスとして永続化されます。

  2. クエリの高速化

    • クエリ時、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 インデックスを作成する方法を示します。

python
from pymilvus import MilvusClient

client = MilvusClient(uri="YOUR_CLUSTER_ENDPOINT")

# Assume you have defined a TIMESTAMPTZ field named "tsz" in your collection schema

# Prepare index parameters

index_params = client.prepare_index_params()

# Add STL_SORT index on the "tsz" field

index_params.add_index(

field_name="tsz",
index_type="STL_SORT",
index_name="tsz_index",
params={}
)

# Create the index on the collection

client.create_index(

collection_name="tsz_demo",
index_params=index_params
)

インデックスを削除する​

コレクションから既存のインデックスを削除するには、drop_index() メソッドを使用します。

Notes

Milvus v2.6.x 互換のクラスターでは、スカラーインデックスが不要になったら、コレクションを先にリリースすることなく、直接削除できます。

python
client.drop_index(

collection_name="tsz_demo",
index_name="tsz_index"
)

使用上の注意​

  • フィールドタイプ: 数値、VARCHAR、および TIMESTAMPTZ フィールドで動作します。データ型の詳細については、Boolean & Number および TIMESTAMPTZ Field を参照してください。

  • パラメーター: インデックスパラメーターは必要ありません。

  • Mmap 非対応: STL_SORT ではメモリマップモードは使用できません。