arrow_back

BigQuery でマルチモーダル ベクトル検索を実装する: チャレンジラボ

ログイン 参加
700 以上のラボとコースにアクセス

BigQuery でマルチモーダル ベクトル検索を実装する: チャレンジラボ

ラボ 1時間 30分 universal_currency_alt クレジット: 5 show_chart 中級
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
700 以上のラボとコースにアクセス

GSP523

Google Cloud セルフペース ラボのロゴ

概要

チャレンジラボでは、シナリオと一連のタスクが提供されます。手順ガイドに沿って進める形式ではなく、コース内のラボで習得したスキルを駆使して、ご自身でタスクを完了していただきます。タスクが適切に完了したかどうかは、このページに表示される自動スコアリング システムで確認できます。

チャレンジラボは、Google Cloud の新しいコンセプトについて学習するためのものではありません。デフォルト値を変更する、エラー メッセージを読み調査を行ってミスを修正するなど、習得したスキルを応用する能力が求められます。

100% のスコアを達成するには、制限時間内に全タスクを完了する必要があります。

このラボは、スキルバッジ コース「BigQuery でマルチモーダル ベクトル検索を実装する」に登録している受講者を対象としています。準備が整ったらチャレンジを開始しましょう。

チャレンジ シナリオ

あなたは、オンライン小売店 Cymbal のデータ サイエンティストです。マーケティング比較調査に役立てるために、市場で類似商品を継続的に検索するパイプラインを構築したいと考えていますが、次のような課題があります。

  • マルチモーダル データの処理方法: 収集対象のデータはテキスト、画像、動画などのマルチモーダル形式で、一部のファイルは Cloud Storage に保存されています。
  • キーワード検索ではなくセマンティック(意味的)類似性検索を実行する方法: 複数の要素(画像、説明、特定の特徴など)をもとに類似した商品を見つけることが目的の場合は、キーワード検索が効果的でない可能性があります。
  • BigQuery を使用してソリューションを実現する方法: データのほとんどがすでに BigQuery に保存されているため、同じツールを使用すれば学習曲線がゆるやかになります。

このような課題に対処するために、あなたは BigQuery でマルチモーダル ベクトル検索を実装することにしました。

テスト対象トピック

  • BigQuery で外部ソース接続を作成し、適切な IAM 権限を付与する。
  • 画像を保存するためのオブジェクト テーブルを作成する。
  • 画像(マルチモーダル データ)をベクトルに変換するためのエンベディングを生成する。
  • ベクトル検索を実行して類似商品を見つける。

前提条件

このラボを完了するには、BigQuery と Cloud Storage に精通している必要があります。

Gemini in BigQuery」という学習プログラムに、このスキルバッジ コースに関する包括的なナレッジベースが用意されています。このチャレンジラボを修了できるよう、次の 3 つのコースとそのラボを確認して知識を身につけることをおすすめします。

設定と要件

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

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

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

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

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • 残り時間
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの詳細] ペインでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの詳細] ペインでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後次のように進みます。

    • 利用規約に同意してください。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

その後、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニュー アイコンと検索フィールド

タスク 1. ソース接続を作成し、IAM 権限を付与する

外部ソース接続を作成する

BigQuery 内で Vertex AI を使ってエンベディング モデルなどのリモート生成 AI モデルを利用するには、 リージョンに vector_conn という名前の新しい外部ソース接続を作成します。

この接続は、Vertex AI と BigQuery の間の安全なパイプラインとして機能し、生成 AI モデルの安全な利用を可能にします。

ヒントを開いて、役立つ情報を確認しましょう!

新しいサービス アカウントに IAM 権限を付与する

Vertex AI リソースと BigQuery データにアクセスするには、外部ソース接続用のサービス アカウントに適切な IAM 権限を付与する必要があります。

前のセクションで作成したサービス アカウントに、次のロールを割り当てます。

  • BigQuery データオーナー
  • ストレージ オブジェクト閲覧者
  • Vertex AI ユーザー

ヒントを開いて、役立つ情報を確認しましょう!

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ソース接続を作成し、IAM 権限を付与する。

タスク 2. オブジェクト テーブルを作成する

Google Cloud Storage に保存されている画像や動画などの非構造化データをクエリするには、事前に作成された BigQuery データセット gcc_bqml_dataset 内に gcc_image_object_table というオブジェクト テーブルを作成します。

このテーブルには、オブジェクトに関するメタデータ(URL やコンテンツ タイプなど)が保存されますが、非構造化データ自体は保存されません。オブジェクト テーブルは他の BigQuery テーブルと同様にクエリできるため、SQL(または Python)を使用して、メタデータに基づいてオブジェクトをフィルタして選択できます。

BigQuery SQL エディタで次の SQL コードを実行します。角括弧で囲まれたプレースホルダ [] を、正しいコードに置き換えてください(たとえば、[PROJECT_ID] を、このラボ環境に割り当てられたプロジェクト ID に置き換えます)。

Create or replace external table `[PROJECT_ID].[DATASET_NAME].[OBJECT_TABLE_NAME]` with connection `[PROJECT_ID].[CONNECTION_REGION].[CONNECTION_NAME]` options ( object_metadata='SIMPLE', uris=['gs://[PROJECT_ID]/*'] )

ヒントを開いて、役立つ情報を確認しましょう!

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 オブジェクト テーブルを作成する。

タスク 3. エンベディングを生成する

エンベディング モデルに接続する

リモート エンベディング モデルに接続するには、BigQuery で、事前に作成された BigQuery データセット gcc_bqml_dataset 内に gcc_embedding という新しいモデルを作成し、エンドポイント(モデル名)として multimodalembedding@001 を指定します。

BigQuery SQL エディタで次の SQL コードを実行します。角括弧で囲まれたプレースホルダ [] を、正しいコードに置き換えてください(たとえば、[PROJECT_ID] を、このラボ環境に割り当てられたプロジェクト ID に置き換えます)。

Create or replace model `[PROJECT_ID].[DATASET_NAME].[MODEL_NAME]` remote with connection `[PROJECT_ID].[CONNECTION_REGION].[CONNECTION_NAME]` options( [DEFINE_ENDPOINT] );

ヒントを開いて、役立つ情報を確認しましょう!

エンベディングを生成する

画像のエンベディングを生成するには、事前に作成された BigQuery データセット gcc_bqml_dataset 内の gcc_retail_store_embeddings というテーブルにエンベディングを保存します。

  1. BigQuery SQL エディタで次の SQL コードを実行します。角括弧で囲まれたプレースホルダ [] を、正しいコードに置き換えてください(たとえば、[PROJECT_ID] を、このラボ環境に割り当てられたプロジェクト ID に置き換えます)。
Create or replace table `[PROJECT_ID].[DATASET_NAME].[EMBEDDINGS_TABLE_NAME]` as select *, REGEXP_EXTRACT(uri, r'[^/]+$') as product_name from [EMBEDDINGS_FUNCTION] ( MODEL `[PROJECT_ID].[DATASET_NAME].[MODEL_NAME]`, TABLE `[PROJECT_ID].[DATASET_NAME].[OBJECT_TABLE_NAME]` )

ヒントを開いて、役立つ情報を確認しましょう!

  1. (省略可)エンベディングの結果を確認するには、次のコードを更新して実行します(エンベディングの結果は浮動小数点数であり、そのままではすぐに理解できない可能性があります)。
SELECT * FROM `[PROJECT_ID].[DATASET_NAME].[EMBEDDINGS_TABLE_NAME]`

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

タスク 4. ベクトル検索を実行する

ベクトル検索を実行して検索フレーズに最も類似した画像を見つけるには、事前に作成された BigQuery データセット gcc_bqml_dataset 内の gcc_vector_search_table というテーブルに検索結果を保存します。

  1. BigQuery SQL エディタで次の SQL コードを実行します。角括弧で囲まれたプレースホルダ [] を、正しいコードに置き換えてください(たとえば、[PROJECT_ID] を、このラボ環境に割り当てられたプロジェクト ID に置き換えます)。
Create or replace table `[PROJECT_ID].[DATASET_NAME].[SEARCH_RESULTS_TABLE]` AS select base.uri, base.product_name, base.content_type, distance from [VECTOR_SEARCH_FUNCTION](table [DATASET_NAME].[EMBEDDINGS_TABLE_NAME],'ml_generate_embedding_result', ( SELECT ml_generate_embedding_result as embedding_col FROM [EMBEDDINGS_FUNCTION] ( MODEL `[DATASET_NAME].[MODEL_NAME]`, (select 'Men Sweaters' as content), STRUCT(TRUE AS flatten_json_output) ) ), [STATEMENT_TO_SELECT_TOP_2_RESULTS], distance_type => 'COSINE' );

ヒントを開いて、役立つ情報を確認しましょう!

  1. (省略可)ベクトル検索結果を確認するには、次のコードを更新して実行します。
SELECT * FROM `[PROJECT_ID].[DATASET_NAME].[SEARCH_RESULTS_TABLE]`

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。 ベクトル検索を実行する。

お疲れさまでした

BigQuery でマルチモーダル ベクトル検索を正しく実装することができました。このラボでは、まず外部リソースへの接続を確立し、サービス アカウントに適切な IAM 権限を付与しました。次に、画像メタデータを保存するオブジェクト テーブルを作成しました。続いて、エンベディングを生成し、画像をベクトルに変換しました。最後に、ベクトルを検索して、目的の商品を見つけました。

これで、このプロセスを応用して、独自のユースケースでマルチモーダル データを検索できるようになりました。

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2025 年 2 月 12 日

ラボの最終テスト日: 2025 年 2 月 12 日

Copyright 2025 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

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

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

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

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

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

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

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

ありがとうございます。

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

1 回に 1 つのラボ

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

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

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