milvus-logo
LFAI
フロントページへ
  • ユーザーガイド

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

Milvusでは、スカラーインデックスは、従来のデータベースインデックスと同様に、特定の非ベクトルフィールド値によるメタフィルタリングを高速化するために使用されます。このガイドでは、整数や文字列などのフィールドに対するスカラーインデックスの作成と設定について説明します。

スカラインデックスの種類

  • オートインデックス:Milvusはスカラーフィールドのデータ型に基づいてインデックスタイプを自動的に決定します。特定のインデックスタイプを制御する必要がない場合に適しています。

  • カスタムインデックス:転置インデックスなど、正確なインデックスタイプを指定します。これは、インデックス・タイプの選択をより制御しやすくします。

オートインデックス

オートインデックスを使用するには、index_typeパラメータを add_index()でindex_typeパラメータを省略し、milvusがスカラーフィールドの型に基づいてインデックス型を推測できるようにします。

indexTypeパラメータを省略します。 IndexParamの indexType パラメータを省略し、 Milvus がスカラーフィールドの型に基づいてインデックスタイプを推測できるようにします。

index_typeパラメータを省略する。 createIndex()の index_type パラメータを省略すると、Milvus はスカラーフィールドの型に基づいてインデックスタイプを推測することができます。

スカラーデータ型とデフォルトのインデックス作成アルゴリズムのマッピングについては、スカラーフィールドのインデックス作成アルゴリズムを参照してください。

# Auto indexing
client = MilvusClient(
    uri="http://localhost:19530"
)

index_params = MilvusClient.prepare_index_params() # Prepare an empty IndexParams object, without having to specify any index parameters

index_params.add_index(
    field_name="scalar_1", # Name of the scalar field to be indexed
    index_type="", # Type of index to be created. For auto indexing, leave it empty or omit this parameter.
    index_name="default_index" # Name of the index to be created
)

client.create_index(
  collection_name="test_scalar_index", # Specify the collection name
  index_params=index_params
)
import io.milvus.v2.common.IndexParam;
import io.milvus.v2.service.index.request.CreateIndexReq;

IndexParam indexParamForScalarField = IndexParam.builder()
    .fieldName("scalar_1") // Name of the scalar field to be indexed
    .indexName("default_index") // Name of the index to be created
    .indexType("") // Type of index to be created. For auto indexing, leave it empty or omit this parameter.
    .build();

List<IndexParam> indexParams = new ArrayList<>();
indexParams.add(indexParamForVectorField);

CreateIndexReq createIndexReq = CreateIndexReq.builder()
    .collectionName("test_scalar_index") // Specify the collection name
    .indexParams(indexParams)
    .build();

client.createIndex(createIndexReq);
await client.createIndex({
    collection_name: "test_scalar_index", // Specify the collection name
    field_name: "scalar_1", // Name of the scalar field to be indexed
    index_name: "default_index", // Name of the index to be created
    index_type: "" // Type of index to be created. For auto indexing, leave it empty or omit this parameter.
})

カスタム・インデックス

カスタム・インデックスを使用するには、インデックスタイプの指定に add_index().

カスタム・インデックスを使用するには、.NET のindexTypeパラメータで特定のインデックス・タイプを指定します。 IndexParam.

カスタム・インデックスを使用するには、 . createIndex().

以下の例では、スカラー・フィールドscalar_2 に対して転置インデックスを作成しています。

index_params = MilvusClient.prepare_index_params() #  Prepare an IndexParams object

index_params.add_index(
    field_name="scalar_2", # Name of the scalar field to be indexed
    index_type="INVERTED", # Type of index to be created
    index_name="inverted_index" # Name of the index to be created
)

client.create_index(
  collection_name="test_scalar_index", # Specify the collection name
  index_params=index_params
)
import io.milvus.v2.common.IndexParam;
import io.milvus.v2.service.index.request.CreateIndexReq;

IndexParam indexParamForScalarField = IndexParam.builder()
    .fieldName("scalar_1") // Name of the scalar field to be indexed
    .indexName("inverted_index") // Name of the index to be created
    .indexType("INVERTED") // Type of index to be created
    .build();

List<IndexParam> indexParams = new ArrayList<>();
indexParams.add(indexParamForVectorField);

CreateIndexReq createIndexReq = CreateIndexReq.builder()
    .collectionName("test_scalar_index") // Specify the collection name
    .indexParams(indexParams)
    .build();

client.createIndex(createIndexReq);
await client.createIndex({
    collection_name: "test_scalar_index", // Specify the collection name
    field_name: "scalar_1", // Name of the scalar field to be indexed
    index_name: "inverted_index", // Name of the index to be created
    index_type: "INVERTED" // Type of index to be created
})

メソッドとパラメータ

  • prepare_index_params()

    IndexParamsオブジェクトを準備します。

  • add_index()

    IndexParamsオブジェクトにインデックス設定を追加します。

    • field_name(string)

      インデックスを作成するスカラー・フィールドの名前。

    • index_type(文字列):

      作成するスカラー・インデックスの型。暗黙的インデックス作成の場合は、このパラメータを空にするか省略します。

      カスタム・インデックスの場合、有効な値は以下のとおりです:

      • INVERTED: (推奨) 転置インデックスは、すべてのトークン化された単語をアルファベット順に並べた用語辞書で構成されます。詳細については、「スカラー・インデックス」を参照してください。

      • STL_SORT:標準テンプレート・ライブラリのソート・アルゴリズムを使用して、スカラー・フィールドをソートします。数値フィールド(INT8、INT16、INT32、INT64、FLOAT、DOUBLEなど)のみをサポート。

      • トライ:高速なプレフィックス検索と取得のためのツリーデータ構造。VARCHAR フィールドをサポート。

    • index_name(string)

      作成するスカラインデックスの名前。各スカラフィールドは 1 つのインデックスをサポートします。

  • create_index()

    指定したコレクションにインデックスを作成します。

    • collection_name(string)

      インデックスを作成するコレクションの名前。

    • index_params

      インデックス設定を含むIndexParamsオブジェクト。

メソッドとパラメータ

  • IndexParamIndexParam オブジェクトを準備します。
    • fieldName(String) インデックスを作成するスカラー・フィールドの名前。
    • indexName(String) 作成するスカラー・インデックスの名前。各スカラー・フィールドは1つのインデックスをサポートする。
    • indexType(String) 作成するスカラーインデックスのタイプ。暗黙的インデックス作成の場合は、このパラメータを空にするか省略します。 カスタム・インデックス作成の場合は、以下の値が有効です:
      • INVERTED: (推奨) 転置インデックスは、すべてのトークン化された単語をアルファベット順に並べた用語辞書で構成されます。詳細については、「スカラー・インデックス」を参照してください。
      • STL_SORT:標準テンプレート・ライブラリのソート・アルゴリズムを使用して、スカラー・フィールドをソートします。ブール値と数値フィールド(INT8、INT16、INT32、INT64、FLOAT、DOUBLEなど)をサポート。
      • トライ:高速なプレフィックス検索と取得のためのツリーデータ構造。VARCHAR フィールドをサポート。
  • CreateIndexReq指定したコレクションにインデックスを作成します。
    • collectionName(String) インデックスを作成するコレクションの名前。
    • indexParams(List) インデッ クス構成を含む IndexParam オブジ ェ ク ト の リ ス ト 。

メソッドとパラメータ

  • createIndex

    指定 し た コ レ ク シ ョ ンの イ ンデ ッ ク ス を作成 し ます。

    • collection_name(文字列) イ ンデ ッ ク ス を作成す る コ レ ク シ ョ ンの名前。
    • field_name(string) インデックスを作成するスカラー・フィールドの名前。
    • index_name(string) 作成するスカラー・インデックスの名前。各スカラー・フィールドは1つのインデックスをサポートします。
    • index_type(string) 作成するスカラー・インデックスのタイプ。暗黙的インデックスの場合は、このパラメータを空にするか省略します。 カスタムインデックスの場合は、以下の値が有効です:
      • INVERTED: (推奨) 転置インデックスは、すべてのトークン化された単語をアルファベット順に並べた用語辞書で構成されます。詳細については、「スカラー・インデックス」を参照してください。
      • STL_SORT:標準テンプレート・ライブラリのソート・アルゴリズムを使用して、スカラー・フィールドをソートします。ブール値と数値フィールド(INT8、INT16、INT32、INT64、FLOAT、DOUBLEなど)をサポート。
      • トライ:高速なプレフィックス検索と取得のためのツリーデータ構造。VARCHAR フィールドをサポート。

結果の検証

結果を検証するには list_indexes()メソッドを使用して、スカラー・インデックスの作成を検証する:

listIndexes() メソッドを使用して、スカラー・インデックスの作成を検証する:

スカラー・インデックスの作成を検証するには、listIndexes() メソッドを使用する:

client.list_indexes(
    collection_name="test_scalar_index"  # Specify the collection name
)

# Output:
# ['default_index','inverted_index']
import java.util.List;
import io.milvus.v2.service.index.request.ListIndexesReq;

ListIndexesReq listIndexesReq = ListIndexesReq.builder()
    .collectionName("test_scalar_index")  // Specify the collection name
    .build();

List<String> indexNames = client.listIndexes(listIndexesReq);

System.out.println(indexNames);

// Output:
// [
//     "default_index",
//     "inverted_index"
// ]
res = await client.listIndexes({
    collection_name: 'test_scalar_index'
})

console.log(res.indexes)

// Output:
// [
//     "default_index",
//     "inverted_index"
// ]   

制限

  • 現在、スカラー・インデックスはINT8、INT16、INT32、INT64、FLOAT、DOUBLE、BOOL、VARCHAR、ARRAYデータ型をサポートしているが、JSONデータ型はサポートしていない。

翻訳DeepL

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started
フィードバック

このページは役に立ちましたか ?