Vertex AI Vecter Search を使用すると、ベクトル エンベディングを使用して意味的に類似しているアイテムを検索できます。 Spanner To Vertex AI ベクトル検索ワークフローを使用すると、Spanner データベースをベクトル検索と統合して、Spanner データのベクトル類似性検索を実行できます。
次の図は、ベクトル検索を有効にして Spanner データで使用する方法のエンドツーエンドのアプリケーション ワークフローを示しています。
一般的なワークフローは次のとおりです。
ベクトル エンベディングを生成して保存する。
データのベクトル エンベディングを生成して、運用データとともに Spanner に保存して管理できます。Spanner の
ML.PREDICT
SQL 関数を使用してエンベディングを生成し、Vertex AI のtextembedding-gecko
モデルにアクセスするか、またはVertex AI にデプロイされた他のエンベディング モデルを使用することができます。エンベディングをベクトル検索と同期する。
Spanner To Vertex AI ベクトル検索ワークフローを使用する。これは、ワークフローを使用してデプロイされ、エンベディングをエクスポートしてベクトル検索インデックスにアップロードします。Cloud Scheduler を使用してこのワークフローを定期的にスケジュールすると、Spanner のエンベディングの最新の変更でベクトル検索インデックスを最新の状態に維持できます。
ベクトル検索インデックスを使用してベクトル類似度検索を実行します。
ベクトル検索インデックスをクエリして、意味的に類似しているアイテムを検索し、結果を検索します。パブリック エンドポイントまたは VPC ピアリングを使用してクエリを実行できます。
使用例
ベクトル検索のユースケースの一例は、何十万もの在庫を持つオンライン小売店です。このシナリオでは、オンライン小売店のデベロッパーが、Spanner の商品カタログでベクトル類似度検索を使用して、お客様が検索クエリに基づいて関連商品を見つけることを支援します。
一般的なワークフローに示されているステップ 1 とステップ 2 に従って、商品カタログのベクトル エンベディングを生成し、これらのエンベディングをベクトル検索と同期します。
お客様がアプリケーションを閲覧し、「水中で着用できる最良の速乾スポーツパンツ」のような検索をしているとします。アプリケーションがこのクエリを受信したら、Spanner の ML.PREDICT
SQL 関数を使用して、この検索リクエストのリクエスト エンベディングを生成する必要があります。商品カタログのエンベディングの生成に使用したものと同じエンベディング モデルを使用してください。
次に、ベクトル検索インデックスをクエリし、対応するエンベディングがお客様の検索リクエストから生成されたリクエスト エンベディングと類似しているプロダクト ID を取得します。検索インデックスでは、ウェイクボード ショートパンツ、サーフィン用アパレル、スイミング パンツなど、意味が似ているアイテムに対して商品 ID が提案されることがあります。
ベクトル検索からこれらの類似した商品 ID が返されたら、Spanner に商品の説明、在庫数、価格、その他の関連するメタデータをクエリし、お客様に表示できます。
生成 AI を使用して、Spanner から返される結果を処理してからお客様に表示することもできます。たとえば、Google の大規模生成 AI モデルを使用して、おすすめの商品の簡潔な要約を生成できます。詳細については、生成 AI を使用して e コマース アプリケーションでパーソナライズされたレコメンデーションを取得する方法に関するチュートリアルをご覧ください。
次のステップ
- Spanner を使用してエンベディングを生成する方法を学習する。
- AI のマルチツールのご紹介: ベクトル エンベディングについて詳細を確認する。
- 機械学習とエンベディングの詳細については、エンベディングに関するクラッシュ コースをご覧ください。
- Spanner To Vertex AI ベクトル検索ワークフローの詳細については、GitHub リポジトリをご覧ください。
- Python での一般的なデータ分析オペレーションを容易にし、Jupyter Notebooks との統合を含むオープンソースの spanner-analytics パッケージについて学習する。