FLAT
FLATインデックスは、浮動小数点ベクトルをインデックス化し検索するための、最も単純で簡単な方法の1つです。高度な前処理やデータ構造化を行うことなく、各クエリ・ベクトルをデータセット内のすべてのベクトルと直接比較するという、総当たり的なアプローチに依存しています。このアプローチでは、一致する可能性のあるすべてのベクトルが評価されるため、100%の再現率という精度が保証される。
しかし、この網羅的検索法にはトレードオフがある。FLATインデックスはMilvusの他のインデックスタイプと比較して最も遅いインデックスオプションであり、全てのクエリに対してデータセットのフルスキャンを実行するためである。そのため、パフォーマンスが懸念される巨大なデータセットを扱う環境には適していません。FLATインデックスの主な利点は、学習や複雑なパラメータ設定を必要としないため、シンプルで信頼性が高いことです。
インデックスの構築
Milvusでベクトル場にFLAT
インデックスを構築するには、add_index()
メソッドを使用し、index_type
とmetric_type
インデックスのパラメータを指定します。
from pymilvus import MilvusClient
# Prepare index building params
index_params = MilvusClient.prepare_index_params()
index_params.add_index(
field_name="your_vector_field_name", # Name of the vector field to be indexed
index_type="FLAT", # Type of the index to create
index_name="vector_index", # Name of the index to create
metric_type="L2", # Metric type used to measure similarity
params={} # No additional parameters required for FLAT
)
この設定では
index_type
:構築するインデックスのタイプ。この例ではFLAT
とします。metric_type
:ベクトル間の距離の計算方法。サポートされている値には、COSINE
、L2
、IP
があります。詳細については、メトリック・タイプを参照してください。params
:FLAT インデックスには追加のパラメータは必要ありません。
インデックス・パラメータを構成したら、create_index()
メソッドを直接使用するか、create_collection
メソッドでインデックス・パラメータを渡してインデックスを作成できます。詳細は、Create Collection を参照してください。
インデックスでの検索
インデックスが構築され、エンティティが挿入されると、インデックスで類似検索を実行できます。
res = MilvusClient.search(
collection_name="your_collection_name", # Collection name
data=[[0.1, 0.2, 0.3, 0.4, 0.5]], # Query vector
limit=3, # TopK results to return
search_params={"params": {}} # No additional parameters required for FLAT
)
インデックスパラメータ
FLAT インデックスでは、インデックス作成中も検索処理中も追加のパラメータは必要ありません。