• Milvusについて
  • スタート
  • コンセプト
  • ユーザーガイド
    • コレクション
    • スキーマとデータフィールド
    • 挿入と削除
    • インデックス
    • 検索
    • エンベッディングとリランキング
    • ストレージの最適化
  • データインポート
  • AIツール
  • 管理ガイド
  • ツール
  • 統合
  • チュートリアル
  • よくあるご質問
  • API Reference

BIN_IVF_FLAT

BIN_IVF_FLATインデックスは、IVF_FLATインデックスのバイナリ埋め込み専用バージョンです。最初にベクトルデータを複数のクラスタ(nlist単位)に分割し、次にターゲット入力ベクトルを各クラスタの中心と比較することで、クエリの効率を向上させます。BIN_IVF_FLATは、精度と速度のバランスを微調整しながら、クエリ時間を大幅に短縮します。詳細はIVF_FLATを参照。

インデックスの構築

MilvusでベクトルフィールドにBIN_IVF_FLAT インデックスを構築するには、add_index() メソッドを使用し、index_typemetric_type 、インデックス用の追加パラメータを指定します。

from pymilvus import MilvusClient

# Prepare index building params
index_params = MilvusClient.prepare_index_params()

index_params.add_index(
    field_name="your_binary_vector_field_name", # Name of the vector field to be indexed
    index_type="BIN_IVF_FLAT", # Type of the index to create
    index_name="vector_index", # Name of the index to create
    metric_type="HAMMING", # Metric type used to measure similarity
    params={
        "nlist": 64, # Number of clusters for the index
    } # Index building params
)

この構成では

  • index_type:構築するインデックスのタイプ。この例ではBIN_IVF_FLAT とします。

  • metric_type:ベクトル間の距離の計算方法。バイナリ埋め込みでサポートされている値は、HAMMING (デフォルト)およびJACCARD です。詳細については、メトリック・タイプを参照してください。

  • params:インデックスを構築するための追加設定オプション。

    • nlist:データセットを分割するクラスタ数。

    BIN_IVF_FLAT インデックスで利用可能な構築パラメータについては、インデックス構築パラメータ を参照。

インデックス・パラメータを構成したら、create_index() メソッドを直接使用するか、create_collection メソッドでインデックス・パラメータを渡してインデックスを作成できます。詳細は、コレクションの作成 を参照してください。

インデックスでの検索

インデックスが構築され、エンティティが挿入されると、インデックスで類似検索を実行できます。

search_params = {
    "params": {
        "nprobe": 10, # Number of clusters to search
    }
}

res = MilvusClient.search(
    collection_name="your_collection_name", # Collection name
    anns_field="binary_vector_field",  # Binary vector field
    data=[query_binary_vector],  # Query binary vector
    limit=3,  # TopK results to return
    search_params=search_params
)

この構成では

  • params:インデックスで検索するための追加構成オプション。

    • nprobe:検索するクラスタの数。

    BIN_IVF_FLAT インデックスで利用可能な検索パラメータについては、インデックス固有の検索パラメータを参照してください。

インデックスパラメータ

このセクションでは、インデックスを構築し、インデックス上で検索を実行する際に使用するパラメータの概要を説明します。

インデックス構築パラメータ

以下の表は、paramsインデックスを構築する際に設定できるパラメータの一覧です。

パラメータ

説明

値の範囲

調整案

nlist

インデックス構築時に k-means アルゴリズムを使用して作成するクラスタの数。 重心で表される各クラスタには、ベクトルのリストが格納されます。このパラメータを増やすと、各クラスタ内のベクトル数が減り、より小さく、より集中したパーティションが作成されます。

タイプ整数Range:[1, 65536]

デフォルト値128

nlist の値を大きくすると、より洗練されたクラスターを作成することでリコールが向上しますが、インデックス作成時間が長くなります。ほとんどの場合、この範囲内の値を設定することを推奨する:[32, 4096].

インデックス固有の検索パラメータ

次の表は、search_params.paramsインデックス検索時に設定できるパラメータの一覧です。

パラメータ

説明

値の範囲

チューニングの提案

nprobe

候補を検索するクラスタの数。 値を大きくすると、より多くのクラスタを検索できるようになり、検索範囲が広がることでリコールが向上しますが、その代償としてクエリの待ち時間が長くなります。

タイプ整数Range:[1,nlist]

デフォルト値8

この値を大きくするとリコールが向上しますが、検索が遅くなる可能性があります。速度と精度のバランスをとるために、nlist に比例してnprobe を設定します。

ほとんどの場合、この範囲内の値を設定することを推奨する:[1, nlist]。

Try Managed Milvus for Free

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

Get Started
フィードバック

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