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

スカラーフィールドのインデックス

Zilliz Cloudは、特に大規模なデータセットにおいて、フィルタリングおよび検索パフォーマンスを大幅に高速化するために、スカラーフィールド(非ベクトルフィールド)のインデックス作成をサポートしています。

概要

スカラーフィールドのインデックス作成は任意ですが、フィルター条件で特定のスカラーフィールドに頻繁にアクセスする場合は推奨されます。

Zilliz Cloudは、以下のフィールドタイプに対してAUTOINDEXをサポートしています。

フィールドタイプ

説明

VARCHAR

文字列

INT8, INT32, INT64

整数

FLOAT, DOUBLE

浮動小数点数

BOOL

ブール値

ARRAY

スカラー値の同種配列

GEOMETRY

空間情報を格納するジオメトリックデータ

事前準備

インデックスを作成する前に、ベクトルフィールドとスカラーフィールドの両方を含むコレクションを定義します。Zilliz Cloudでは、すべてのコレクションにベクトルフィールドが必要です。

この例では、必須のベクトルフィールド(vector)とDOUBLE型のスカラーフィールド(price)を含む商品カタログのスキーマを定義します。

from pymilvus import MilvusClient, DataType

client = MilvusClient(uri="YOUR_CLUSTER_ENDPOINT") # ご使用のクラスターエンドポイントに置き換えてください

# 動的フィールドサポート付きスキーマを定義
schema = client.create_schema(
auto_id=False,
enable_dynamic_field=True # 動的フィールドを有効化
)

# フィールドを定義
schema.add_field(field_name="product_id", datatype=DataType.INT64, is_primary=True)
schema.add_field(field_name="vector", datatype=DataType.FLOAT_VECTOR, dim=5) # ベクトルフィールド
schema.add_field(field_name="price", datatype=DataType.DOUBLE) # スカラーフィールド

# コレクションを作成
client.create_collection(
collection_name="product_catalog",
schema=schema
)

スカラーフィールドにインデックスを作成

AUTOINDEXを使用してスカラーフィールドにインデックスを作成できます。追加のインデックスパラメータは必要ありません。以下の例では、priceフィールドにインデックスを作成します。

index_params = client.prepare_index_params() # どのインデックスパラメータも指定せずに、空のIndexParamsオブジェクトを準備

index_params.add_index(
field_name="price", # インデックス対象のスカラーフィールド名
index_type="AUTOINDEX", # 作成するインデックスの種類
index_name="price_index" # 作成するインデックス名
)

インデックスパラメータを定義したら、create_index()を使用してコレクションに適用できます。

client.create_index(
collection_name="product_catalog",
index_params=index_params
)

インデックスの詳細を確認

インデックスを作成した後、その詳細を確認できます。

# インデックスを説明
res = client.list_indexes(
collection_name="product_catalog"
)

print(res)

res = client.describe_index(
collection_name="product_catalog",
index_name="price_index"
)

print(res)

インデックスを削除

必要なくなった場合、簡単にインデックスを削除できます。

# インデックスを削除
client.drop_index(
collection_name="product_catalog",
index_name="price_index"
)

高度な機能

スカラーインデックスに関する他にも、ご興味をお持ちいただける高度な機能がいくつかあります。

NGRAM [READ MORE]

Zilliz Cloudの`NGRAM`インデックスは、`VARCHAR`フィールドまたは`JSON`フィールド内の特定のJSONパスの`LIKE`クエリを高速化するために構築されています。インデックスを構築する前に、Zilliz Cloudはテキストを固定長nの短い重複するサブストリングに分割します。これはn-gramとして知られています。例えば、n = 3の場合、単語「Milvus」は3-gramの「Mil」、「ilv」、「lvu」、および「vus」に分割されます。これらのn-gramは、各グラムをそのグラムが出現するドキュメントIDにマッピングする反転インデックスに格納されます。クエリ時には、このインデックスによりZilliz Cloudは検索を候補の少数に迅速に絞り込むことができ、はるかに高速なクエリ実行が可能になります。