ラボの設定手順と要件
アカウントと進行状況を保護します。このラボを実行するには、常にシークレット ブラウジング ウィンドウとラボの認証情報を使用してください。

BigQuery でのベクトル検索

ラボ 45分 universal_currency_alt クレジット: 5 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。

概要

BigQuery ベクトル検索 ベクトル検索では、キーワードの完全一致を使用するのではなく、エンベディングと呼ばれる特徴の数値表現を比較することで、データセット内で最も類似したアイテムを見つけることができます。

オンライン ショッピングで、言葉でうまく説明できない商品を含め、探している商品と非常によく似た商品をウェブサイトがおすすめしてくることに感心したことはないでしょうか。多くの場合、これには単純なキーワード マッチングを超えた手法であるベクトル検索が使用されています。ベクトル検索では、テキストを検索するだけでなく、アイテムの基盤となる特徴や特性を分析して、概念的または視覚的に類似するものを見つけることができます。このラボでは、BigQuery に直接組み込まれた高度でスケーラブルなベクトル検索機能を実際に使用してみます。

Cymbal E-commerce のようなグローバルな小売業者にとって、このテクノロジーはカスタマー エクスペリエンスを大きく変えるものです。たとえば、顧客が「ハイキング用軽量ジャケット」を検索したとします。従来のキーワード検索では、説明に「ジャケット」ではなく「ウインドブレーカー」が使用されている場合、最適な商品を見逃す可能性があります。ベクトル検索を使用すると、Cymbal は商品画像と説明の数値表現であるエンべディングを分析し、正確な用語に関係なく、関連するすべてのアウターのリストを入手できます。これにより、顧客は必要な商品をすばやく見つけられるようになるため、顧客満足度の向上と売り上げの増加が実現します。さっそく Cymbal のためにこれを構築しましょう。

このラボでは、BigQuery を使用してベクトル検索を実行する方法を学習します。

** 注: このラボでは、プライバシー上の理由から、Cymbal の独自の商品リストと詳細な説明ではなく、特許の公開データベースを使用します。プロセスは同じで、データセット、テーブル、列の名前をソースデータに合わせて変更するだけです。

演習内容

  • ML モデルを使用してエンベディングを生成する
  • ベクトル インデックスを作成する
  • 作成したエンべディングに対して VECTOR_SEARCH 関数を使用する

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ご自身でラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

必要なもの

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
  • ラボを完了するために十分な時間
注: 個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。 注: Pixelbook を使用している場合は、このラボをシークレット ウィンドウで実施してください。

Google Cloud コンソールにログインする

  1. このラボ セッションで使用しているブラウザタブまたはウィンドウで、[接続の詳細] パネルからユーザー名をコピーし、[Google Console を開く] ボタンをクリックします。
注: アカウントの選択を求められたら、[別のアカウントを使用] をクリックします。
  1. ユーザー名を貼り付け、プロンプトが表示されたらパスワードを入力します。
  2. [次へ] をクリックします。
  3. 利用規約に同意します。

これは、このラボの間だけ有効な一時的なアカウントです。以下の点に注意してください。

  • 復元オプションを追加しないでください。
  • 無料トライアルに登録しないでください。
  1. コンソールが開いたら、左上のナビゲーション メニューナビゲーション メニュー アイコン)をクリックしてサービスのリストを確認します。

ナビゲーション メニュー

必要な API を確認または有効にする

  1. Google Cloud コンソールの上部の検索バーに「BigQuery API」と入力します。

  2. Marketplace で検索結果の「BigQuery API」をクリックします。

  3. API が有効になっていない場合は、[有効にする] をクリックして有効にします。

  4. BigQuery Connection APIVertex AI API についても、手順 1~3 を繰り返します。

タスク 1. テキスト エンベディング生成用のリモートモデルを作成する

このタスクでは、ベクトル検索に必要な Vertex AI テキスト エンベディング生成モデルを作成し、データベースのエンベディングを作成します。

AI モデルを作成する

  1. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー)で、[BigQuery] > [Studio] に移動します。

  2. [無題のクエリ] タブを選択します。

  3. 次のコードを入力します。

    CREATE OR REPLACE MODEL `bqml_lab.embedding_model` REMOTE WITH CONNECTION DEFAULT OPTIONS (ENDPOINT = 'text-embedding-005');

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ML モデルを作成する

  1. [実行] をクリックします。クエリの実行には数分かかります。サービス アカウントが見つからないというエラーが発生した場合は、同じクエリをもう一度実行します。

  2. クエリを次のコードに置き換えます。

    CREATE OR REPLACE TABLE `bqml_lab.embeddings` AS SELECT * FROM ML.GENERATE_EMBEDDING( MODEL `bqml_lab.embedding_model`, ( SELECT title, url, abstract AS content FROM `bqml_lab.patent_data` LIMIT 200000)) WHERE LENGTH(ml_generate_embedding_status) = 0;
  3. [実行] をクリックします。クエリの実行には約 5 分かかります。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 BigQuery ML モデルを使用して「embeddings」という名前のテーブルを作成する

  1. クエリを次のコードに置き換えます。

    CREATE OR REPLACE VECTOR INDEX my_index ON `bqml_lab.embeddings`(ml_generate_embedding_result) OPTIONS(index_type = 'IVF', distance_type = 'COSINE', ivf_options = '{"num_lists":500}');
  2. [実行] をクリックします。クエリの実行には数分かかります。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 「embeddings」テーブルにベクトル インデックスを作成する

  1. 次のコードを入力して、インデックスのステータスを確認します。

    SELECT table_name, index_name, index_status, coverage_percentage, last_refresh_time, disable_reason FROM `{{{project_0.project_id | "Project ID"}}}.bqml_lab.INFORMATION_SCHEMA.VECTOR_INDEXES`;
  2. [実行] をクリックします。coverage_percentage 列の値が 0 より大きく、last_refresh_time 列の値が NULL でない場合、インデックスは使用できる状態です。上記のクエリを初めて実行したときにインデックスの準備ができていない場合は、インデックスのステータスを確認するために、クエリをときどき再実行してください。インデックスが使用可能になったことを示す結果が表示されたら、ラボを続行します。

ベクトル インデックスを使用してテキストの類似度検索を行う

VECTOR_SEARCH 関数を使用して、検索キーワードに関連するエントリを検索します。この例では、検索キーワードとして「improving online shopper search results」を使用しています。この検索でエンベディングの生成に使用するモデルは、比較するテーブルのエンベディングの生成に使用するモデルと同じである必要があります。そうしないと、検索結果が正確になりません。

  1. [BigQuery クエリ] タブで、コードを以下に置き換えます。

    SELECT query.query, base.title, base.content FROM VECTOR_SEARCH( TABLE `bqml_lab.embeddings`, 'ml_generate_embedding_result', ( SELECT ml_generate_embedding_result, content AS query FROM ML.GENERATE_EMBEDDING( MODEL `bqml_lab.embedding_model`, (SELECT 'improving online shopper search results' AS content)) ), top_k => 5, options => '{"fraction_lists_to_search": 0.01}');
  2. [実行] をクリックします。

  3. 省略可: 他の検索を試す場合は、コード内の 'improving online shopper search results' を別の検索に置き換えます。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ベクトル インデックスを使用してテキストの類似度検索を行う

お疲れさまでした

AI モデル、データのエンベディング、ベクトル インデックスを作成しました。その後、検索キーワードに最も関連性の高いアイテムを見つけるために、インデックスを使用してクエリを実行しました。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。