ベクトル検索の概要
このドキュメントでは、BigQuery でのベクトル検索の概要について説明します。ベクトル検索を使用すると、エンベディングを検索して、意味的に類似したエンティティを識別できます。
エンベディングは、テキストや音声ファイルなど、特定のエンティティを表す高次元の数値ベクトルです。機械学習(ML)モデルは、エンベディングを使用してエンティティに関するセマンティクスをエンコードし、エンティティについての推論と比較を容易にします。たとえば、クラスタリング モデル、分類モデル、レコメンデーション モデルでの一般的な操作は、エンベディング空間内のベクトル間の距離を測定し、意味的に最も類似したアイテムを見つけることです。
ベクトル検索を実行するには、VECTOR_SEARCH
関数を使用します。また、必要に応じてベクトル インデックスを使用します。ベクトル インデックスを使用する場合、VECTOR_SEARCH
は近似最近傍検索の手法を使用して、ベクトル検索のパフォーマンスを向上させますが、再現率が低下するため、より近似的な結果が返されます。ブルート フォースを使用すると、ベクトル インデックスが使用できない場合に正確な結果が返されます。ベクトル インデックスが利用可能な場合でも、ブルート フォースを使って正確な結果を得ることができます。
ユースケース
エンベディング生成とベクトル検索を組み合わせると、典型的な例である検索補完生成(RAG)をはじめ、多くの興味深いユースケースが可能になります。その他の考えられるユースケースは次のとおりです。
- 新しいサポートケースのバッチが指定された場合、それぞれについて、類似する解決済みケースをいくつか見つけます。解決済みのケースに関する情報を大規模言語モデル(LLM)に渡し、新しいサポートケースの解決策を要約して提案する際に、コンテキストとして使用します。
- 監査ログエントリの場合、過去 30 日間で一致度が最も高いエントリを見つけます。
- 患者のプロファイル データからエンベディングを生成し、ベクトル検索を使用してプロファイルの似た患者を見つけ、その患者コホートに処方され成功した治療計画を探します。
- 保有しているスクールバス内に設置されているすべてのセンサーとカメラから取得した事故直前の記録を表すエンベディングの場合、保有している他の全車両から類似する瞬間の記録を見つけ、安全機能の作動を管理するモデルをさらに分析、チューニング、再トレーニングします。
- 画像の場合、BigQuery オブジェクト テーブル内で最も関連性の高い画像を見つけてモデルに渡し、キャプションを生成します。
料金
CREATE VECTOR INDEX
ステートメントと VECTOR_SEARCH
関数では、BigQuery コンピューティングの料金が使用されます。CREATE VECTOR INDEX
ステートメントの場合、処理されたバイト数でインデックス付きの列のみが考慮されます。
インデックス付きテーブルデータの合計サイズが組織ごとの上限を下回っている場合、ベクトル インデックスの作成と更新に必要な処理に対する料金は発生しません。この上限を超えるインデックス登録をサポートするには、インデックス管理ジョブ用に独自の予約を指定する必要があります。検索インデックスがアクティブな場合、ストレージの費用が発生します。インデックスのストレージ サイズは INFORMATION_SCHEMA.VECTOR_INDEXES
ビューで確認できます。検索インデックスのカバレッジが 100% でない場合にも、INFORMATION_SCHEMA.VECTOR_INDEXES
ビューで報告されるすべてのインデックス ストレージに対して費用が発生します。
割り当てと上限
詳細については、ベクトル インデックスの上限をご覧ください。
制限事項
VECTOR_SEARCH
関数を含むクエリは、BigQuery BI Engine によって高速化されません。VECTOR_SEARCH
の使用には、BigQuery のデータ セキュリティとガバナンスのルールが適用されます。詳細については、VECTOR_SEARCH
の制限事項をご覧ください。これらのルールは、ベクトル インデックスの生成には適用されません。
次のステップ
- ベクトル インデックスの作成の詳細を確認する。
- ベクトル検索を使用したエンベディングの検索のチュートリアルでは、ベクトル インデックスを作成し、インデックスありとインデックスなしの両方でエンベディングのベクトル検索を行う方法を学習できます。
テキスト エンベディングの生成と使用のチュートリアルで、次のタスクを行う方法を学習します。
- テキスト エンベディングを生成する。
- エンベディングにベクトル インデックスを作成する。
- エンベディングでベクトル検索を行い、類似したテキストを検索する。
- ベクトル検索の結果からプロンプト入力を補強して結果を改善することで、検索拡張生成(RAG)を行う。