始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create an embeddings model and configure it to a Vertex AI model endpoint
/ 20
Create a new table and load the products data
/ 40
Generate and store text embeddings for the products data
/ 20
Perform vector search using text embeddings in Spanner
/ 20
アプリケーションで Spanner データベースを検索する際、入力した検索フレーズが実際に保存されているテキストに含まれていないとしても、関連するデータをすばやく特定できるとしたらどうでしょうか。Vertex AI のテキスト エンベディングの力を活用して Spanner 内でベクトル検索を行うことで、これを実現できるようになりました。
Spanner は、グローバル規模でのトランザクション整合性と、高可用性を実現する自動かつ同期的なレプリケーションを備えたフルマネージドのデータベース サービスです。AI 機能を活用して、生成 AI アプリケーションの構築や、特定の検索語との関連性に基づいて Spanner データベース内のデータを抽出するなどのタスクも実行できます。
ベクトル検索とは、(キーワードの完全一致ではなく)セマンティックな意味に基づいて同様のアイテムをすばやく見つけるために使用できる手法のことで、音声、画像、動画、テキストをはじめ、さまざまな種類のデータに適用できます。特にテキストでは、ベクトル検索を適用することで、検索語や検索フレーズとコンテンツが完全に一致していなくても、類似したテキスト アイテムを検索できます。
このラボでは、Spanner でベクトル検索を構成する際の基礎として、まず、テキスト エンベディング(テキストのセマンティックな意味を数値で表すベクトル)を生成して保存する方法を学びます。次に、これらのテキスト エンベディングを使用して、高速の類似検索を行う方法を学びます。Codelab「Spanner ベクトル検索を使ってみる」を基に作成されたこのハンズオンラボでは、自転車商品のデータセットを使用し、Spanner におけるベクトル検索の活用方法を示しながら、テキストが完全に一致しない場合でも検索フレーズに最も関連性の高い商品を見つける方法を紹介します。
このラボでは、次の方法について学びます。
こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。
このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 左側の [ラボの詳細] ペインには、以下が表示されます。
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。
ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
[ラボの詳細] ペインでもユーザー名を確認できます。
[次へ] をクリックします。
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
[ラボの詳細] ペインでもパスワードを確認できます。
[次へ] をクリックします。
その後次のように進みます。
その後、このタブで Google Cloud コンソールが開きます。
このラボ環境では、cymbal-retail という名前の Spanner インスタンスと cymbal-bicycles という名前のデータベースがすでにプロビジョニングされています。
このタスクでは、テキスト エンベディングの生成に使用するエンベディング モデルを作成して設定し、Spanner での一連のワークフローを開始します。これにより、後のタスクに必要となる Spanner サービス アカウントの作成も自動的に開始されます。具体的には、EmbeddingsModel というエンベディング モデルを作成し、
Google Cloud コンソールで、ナビゲーション メニュー()> [すべてのプロダクトを表示] をクリックします。[データベース] で、[Spanner] をクリックします。
[インスタンス] ページで、Cymbal Retail Spanner Instance という名前のインスタンスをクリックして、インスタンスの詳細を確認します。
[データベース] で、cymbal-bicycles という名前のデータベースをクリックします。
[データベース] の下の Spanner メニューで、[Spanner Studio] をクリックします。
Spanner Studio ページで、[新しい SQL エディタタブ] をクリックして新しいクエリ ウィンドウを開きます。
エンベディング モデルを作成して Vertex AI モデルのエンドポイントに設定するには、次のクエリをコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
クエリが正常に実行されると、「更新完了」というメッセージが表示されます。
Spanner Studio を開いたまま、次のタスクに進みます。
エンベディング モデルの作成と設定が完了したので、次に、ベクトル検索用のテキスト エンベディングを生成するためのデータが必要になります。
このタスクでは、Cymbal Bicycles という架空の会社の商品を対象に、商品名や在庫数などの商品情報を格納する列と、商品説明のベクトル エンベディング(次のタスクで生成)を格納するための列を備えた新しいテーブルを作成します。最後に、Cymbal Bicycles の商品データのサンプルを Spanner のテーブルに読み込みます。
Spanner Studio のクエリエディタで、[実行] と同じメニューバーにある [クリア] をクリックして、前のクエリを削除します。
products という名前の新しいテーブルを作成するために、次のクエリをコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。
productDescriptionEmbedding という列の型は ARRAY<FLOAT32> で、次のタスクで作成するベクトル値を格納できます。
クエリが正常に実行されると、「更新完了」というメッセージが表示されます。
[実行] と同じメニューバーにある [クリア] をもう一度クリックして、前のクエリを削除します。
テーブルにデータを読み込むには、次のクエリをコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。
このクエリでは商品の小さなサンプルが読み込まれますが、テーブルに読み込まれる 10 件の各商品について、必要な情報はすべて含まれています。
クエリが正常に実行されると、「このステートメントで 10 行が挿入されました。返された行はありません」というメッセージが表示されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 1 でエンベディング モデルを作成する際に、Vertex AI モデルのエンドポイントを介してエンベディング モデルにアクセスするために使用される Spanner サービス アカウントの作成も開始されています。
このタスクではまず、このサービス アカウントに Vertex AI エンドポイントへアクセスするために必要なロールが付与されていることを確認します。次に、クエリを実行して商品説明のエンベディングを生成し、products テーブルに保存します。
Google Cloud コンソールのナビゲーション メニュー()で、[IAM と管理] > [IAM] を選択します。
[アクセス権を付与] をクリックします。
[新しいプリンシパル] に、Spanner サービス アカウント ID(service-
[ロールを選択] で、フィルタを使用して Cloud Spanner API サービス エージェントを検索し、選択して [ロール] ボックスに設定します。
[保存] をクリックします。
No change - principal already exists on the policy(変更なし - プリンシパルはすでにポリシーに存在します)」というメッセージが表示された場合は、ロールを再度付与しようとせずに、次のセクションに進んでください。Spanner サービス アカウントに適切なロールが付与されていることを確認したので、商品説明のテキスト エンベディングを生成し、products テーブルに追加します。
タスク 1 のステップ 1~4 に沿って、Spanner Studio に戻ります。
次のクエリをコピーしてクエリ ウィンドウに貼り付け、生成されたエンベディングで productDescriptionEmbedding という名前の列を更新し、[実行] をクリックします。
Permission denied on the resource(リソースへのアクセスが拒否されました)のようなエラー メッセージが表示された場合は、前の手順で付与した権限が完全に反映されるまで数分待ってから、クエリを再実行してください。
クエリが正常に実行されると、「クエリによって 10 行が更新されました」というメッセージが表示されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Spanner Studio を開いたまま、次のタスクに進みます。
商品説明のテキスト エンベディングを生成して保存したので、データに対して初のリアルタイムのベクトル検索を行う準備が整いました。
このタスクでは、クエリを実行して「I'd like to buy a starter bike for my 3 year old child」というフレーズに基づく類似検索を行い、商品データにこのテキストの完全一致が含まれていないとしても関連性が最も高い上位 5 件の商品をすばやく取得します。
Spanner Studio のクエリエディタで、[実行] と同じメニューバーにある [クリア] をクリックして、前のクエリを削除します。
テキスト エンベディングを使用してベクトル検索を行うには、次のクエリをコピーしてクエリ ウィンドウに貼り付け、[実行] をクリックします。
このクエリは、productDescriptionEmbedding 列の値を使用して、検索フレーズ「I'd like to buy a starter bike for my 3 year old child」と意味的に最も類似している上位 5 件のデータベース行を検索します。
注目する点として、検索フレーズのエンベディングは、このクエリで動的に生成されます。上記のコード内の「I'd like to buy a starter bike for my 3 year old child」の部分を任意の新しい検索語句に置き換えて、このクエリをさらに試してみてください。
出力は次のようになります。
| productName | productDescription | inventoryCount | distance |
|---|---|---|---|
| Cymbal Sprout | Let their cycling journey begin with the Cymbal Sprout, the ideal balance bike for beginning riders ages 2-4 years... | 10 | 0.3094387191860244 |
| Cymbal Spark Jr. | Light, vibrant, and ready for adventure, the Spark Jr. is the perfect first bike for young riders (ages 5-8)... | 34 | 0.3412342902117166 |
| Cymbal Helios Helmet | Safety meets style with the Cymbal children's bike helmet... | 100 | 0.4197863319656684 |
| Cymbal Breeze | Cruise in style and embrace effortless pedaling with the Breeze electric bike... | 72 | 0.485231776523978 |
| Cymbal Phoenix Lights | See and be seen with the Phoenix bike lights... | 87 | 0.5251486508206732 |
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このラボでは、Spanner でエンベディング モデルを作成して Vertex AI モデルのエンドポイントに設定する方法、Spanner のテーブルでテキスト エンベディングを生成して保存する方法、保存したテキスト エンベディングを使用して Spanner でベクトル検索を行う方法を学びました。
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2025 年 10 月 28 日
ラボの最終テスト日: 2025 年 10 月 28 日
Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください