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

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 ではメモリマップモードを利用できません。