アプリケーションを本番環境の規模とパフォーマンスに対応させるには、コレクション インデックスを作成する必要があります。インデックスがない場合、ANN 検索はブルート フォース スキャンを実行するため、時間がかかります。インデックスを作成すると、インデックスが作成されたベクトル フィールドに対する検索が非常に高速になります。
距離指標を選択する
インデックスに適した距離指標を選択することは、類似性検索結果の精度と関連性を高めるために非常に重要です。最適な選択は、主にベクトル エンベディングの特性とデータの性質によって決まります。エンベディング モデルのトレーニングに使用された距離指標を使用するのが、最も重要なルールです。エンベディング モデルは、類似性が特定の距離計算で最適に捉えられるベクトル表現を生成するように最適化されています。別の指標を使用すると、最適ではない、または誤った検索結果につながる可能性があります。
エンベディング モデルのドキュメントを確認する: これが、意図された距離指標を最も確実に特定できる方法です。
ユースケースを考慮する: 意味的に類似するテキストや画像を見つける場合、コサイン類似度が最適な選択肢となることがよくあります。ベクトルの大きさで表される「強さ」や「強度」が重要な場合は、L2 距離の使用を検討してください。
ベクトルを分析する: ベクトルが正規化されているかどうかを判断します。正規化されている場合は、コサイン類似度またはドット積のいずれかを使用すると、同様のランキングが期待できます。
これらの要素を慎重に検討することで、インデックスに最適な距離指標を選択し、より正確で有意義な類似性検索結果を得ることができます。
ANN インデックスを作成する
特定のエンベディング フィールドで ANN インデックスを作成できます。デフォルトでは、データ オブジェクトの文字列、数値、ブール値のフィールドすべてがインデックスにプッシュダウンされ、インライン フィルタリングが可能になります。
コンピューティング費用を最適化するには、どのフィールドをフィルタ可能とするか(filter_fields)、またどのフィールドをペイロードとしてのみ保存するか(store_fields)を正確に指定します。
次の例は、コレクション movies でインデックス plot_index を作成する方法を示しています。
curl -X POST \ 'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/indexes?indexId=plot_index' \
-H 'Bearer $(gcloud auth print-access-token)' \
-H 'Content-Type: application/json' \
-d '{ \
"index_field": "plot_embedding", \
"filter_fields": [ \
"year", \
"genre" \
], \
"store_fields": [ \
"title" \
] \
}'
この例では、リクエストで year と genre がフィルタ可能(インデックスにフィルタ フィールドとして渡される)、ペイロード フィールド title がフィルタ不可能に指定されています。
インデックスを取得する
次の例は、コレクション movies に保存されている既存のインデックス plot_index を取得する方法を示しています。
curl -X GET \
'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/indexes/plot_index' \
-H 'Bearer $(gcloud auth print-access-token)' \
-H 'Content-Type: application/json'
インデックスを一覧表示する
次の例は、コレクション movies のすべてのインデックスを一覧表示する方法を示しています。
curl -X GET \
'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/indexes' \
-H 'Bearer $(gcloud auth print-access-token)' \
-H 'Content-Type: application/json'
インデックスを削除する
次の例は、既存のインデックス plot_index をコレクション movies から削除する方法を示しています。
curl -X DELETE \
'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/indexes/plot_index' \
-H 'Bearer $(gcloud auth print-access-token)' \
-H 'Content-Type: application/json'
次のステップ
- データ オブジェクトをクエリする方法を学習する。
- セマンティック検索またはハイブリッド検索を使用してデータ オブジェクトを検索する方法を学習する。