始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create a database and enable pgVector extension
/ 20
Populate database with the sample dataset
/ 20
Create the service account toolbox-identity
/ 20
Create a Client Id
/ 20
Deploy the Toolbox
/ 20
大規模言語モデル(LLM)からの回答の品質を向上させる最良のツールの一つが、検索拡張生成(RAG)です。RAG は、非公開データを取得し、そのデータを使用して LLM に送信するプロンプトを拡張するパターンです。RAG を使用すると、LLM はプロンプトに含まれるデータに基づいてより正確な回答を生成できます。
Google Cloud のスケーラブルで高パフォーマンスの PostgreSQL 対応データベースである AlloyDB を使用して、ベクトル エンベディングと呼ばれる特殊な種類のベクトルデータを保存し、これを基準に検索します。ベクトル エンベディングは、セマンティック検索を使用して取得できます。セマンティック検索では、利用可能なデータの中から、ユーザーの自然言語によるクエリに最も適したデータを取得できます。取得したデータがプロンプトで LLM に渡されます。
データベースからデータを取得するために、データベース オペレーションをツールのセットとして公開するミドルウェア サーバーである MCP ツールボックスを使用します。エージェントは、ツールボックスに接続して、それらのツールを実行します。これにより、安全で、スケーラブルで、モジュラーな方法で、データベースの操作を管理できるようになります。
また、生成 AI を構築して使用するための Google Cloud のフルマネージド統合 AI 開発プラットフォームである Vertex AI も使用します。ここで構築するアプリケーションでは、Gemini Pro というモデルを使用します。これは、テキスト プロンプトまたはチャット プロンプトで画像、音声、動画、PDF ファイルを追加したり、長いコンテキストを理解したりできるマルチモーダル基盤モデルです。
このラボでは、次について学びます。
この Qwiklabs ハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側のパネルには、このラボで使用する必要がある一時的な認証情報が表示されます。
ユーザー名をコピーし、[Google Console を開く] をクリックします。 ラボでリソースが起動し、別のタブで [アカウントの選択] ページが表示されます。
[アカウントの選択] ページで [別のアカウントを使用] をクリックします。[ログイン] ページが開きます。
[接続の詳細] パネルでコピーしたユーザー名を貼り付けます。パスワードもコピーして貼り付けます。
しばらくすると、このタブで Cloud コンソールが開きます。
Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。
Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。
[続行] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
出力:
出力例:
出力:
出力例:
このタスクでは、Python、MCP ツールボックス、PostgreSQL クライアントをインストールします。
仮想マシン(VM)はすでに作成されています。この VM で、アプリケーションと MCP ツールボックスをホストします。
Cloud Shell で次のコマンドを実行して、VM に接続します。
承認するよう求められた場合は、[承認] をクリックします。
gcloud compute ssh コマンドで尋ねられる各質問について、Enter キーまたは Return キーを押して、デフォルトの入力を指定します。
しばらく待つと、VM にログインした状態になります。
Python と Git をインストールするには、VM で次のコマンドを実行します。
インストールが完了すると、仮想 Python 環境がアクティブになり、(.venv) プロンプトが表示されます。
VM の SSH セッションがタイムアウトした場合やタブが閉じられた場合は、VM に再度 SSH で接続し、コマンド source ~/.venv/bin/activate を実行することで、仮想 Python 環境を再起動できます。
Python のバージョンを確認するには、次のコマンドを実行します。
次のような応答が返されます。
PostgreSQL クライアントをインストールするには、VM セッションで次のコマンドを実行します。
次のコマンドを実行して、このデモ用のコードのクローンを作成します。
次のコマンドを実行して、MCP ツールボックスのバイナリをダウンロードします。
このタスクでは、PostgreSQL クライアントを使用してベクトル データベースを作成します。
AlloyDB インスタンスはすでに作成されています。
次のコマンドを実行して、新しいデータベースを作成します。
psql が CREATE DATABASE で応答します。
データベースでセマンティック検索をサポートできるようにするには、エンティティをベクトル エンベディングで表現する必要があります。
このデータベースでベクトル エンベディングを有効にするには、次のコマンドを実行します。
psql が CREATE EXTENSION で応答します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、MCP ツールボックスを使用して、AlloyDB のベクトル データベースにサンプルデータを入力します。このデータを、チャット アプリケーションで使用することになります。
データモデルを表示するには、次のコマンドを実行します。
Python データモデルが表示されます。このモデルには、空港、フライト、ターミナル内の設備、ポリシー、航空券に関するデータが含まれています。
空港に関するサンプルデータを表示するには、次のコマンドを実行します。
これらのコマンドにより、空港データセットの列名を指定する CSV ヘッダーと、サンフランシスコ国際空港(SFO)に対応する行が表示されます。空港モデルのデータは、国際航空運送協会(IATA)コード、または国、都市、空港名に基づいて取得できます。このテーブルの行は、キーワード検索を使用して検索できるため、このデータにはベクトル エンベディングはありません。
フライトに関するサンプルデータを表示するには、次のコマンドを実行します。
これらのコマンドにより、フライト データセットの列名を指定する CSV ヘッダーと、最初の 10 行の SFO 発着フライトが表示されます。フライトモデルのデータは、航空会社とフライト番号、または出発空港コードと到着空港コードに基づいて取得できます。
設備に関するサンプルデータを表示するには、次のコマンドを実行します。
このコマンドにより、設備データセットの列名を指定する CSV ヘッダーと、最初の設備が表示されます。
最初の設備には、名前、説明、場所、ターミナル、カテゴリ、営業時間などの単純な値がいくつかあります。その後に続く値は、名前、説明、場所を統合した content です。最後の値は embedding で、これが行のベクトル エンベディングです。
エンベディングは 768 個の数字からなる配列であり、セマンティック検索の実行時に使用されます。これらのエンベディングは、Vertex AI が提供する AI モデルを使用して計算されます。ユーザーがクエリを入力すると、クエリからベクトル エンベディングが作成され、検索のエンベディングに近いベクトル エンベディングを持つデータが取得されます。
ポリシーデータも同様の方法でベクトル エンベディングを使用します。
次のコマンドを実行して、MCP ツールボックスに必要な環境変数を構成します。
これらの MCP ツールボックス環境変数は、PostgreSQL クライアントで使用したものと似ています。
次に、MCP ツールボックスを実行します。
データの初期化のために、次のコマンドを実行して MCP ツールボックスをバックグラウンドで実行します。
アンパサンド(&)を指定することでツールボックスがバックグラウンドで実行されるので、同じ SSH セッションでデータベースの初期化を実行できます。
次のコマンドを実行して、デモアプリの Python 依存関係をインストールします。
次のコマンドを実行して、データベース スクリプトを実行します。
最初のコマンドで Python モジュールへのパスを追加した後に、初期化スクリプトでデータベースにデータを入力しています。
次のコマンドを実行して、入力されたデータを確認します。
PostgreSQL コマンドから、airports テーブルに入っている空港の数が返されます。
次のコマンドを実行して、バックグラウンドのツールボックス プロセスを終了します。
このタスクでは、MCP ツールボックスのサービス アカウントを作成します。
このラボのチャットアプリでは、MCP ツールボックスが、データベースから関連情報を抽出する役割を担います。AI アプリケーションからのリクエストに基づいて、データベースから必要な情報を抽出します。このサービス アカウントが、Cloud Run で実行される MCP ツールボックス サービスの ID として使用されることになります。
SSH ユーザーには、プロジェクト インスタンスでサービス アカウントに適切なロールを付与する権限がありません。新しい Cloud Shell タブを使用して、サービス アカウントを作成します。
Cloud Shell で、新しい Cloud Shell タブを開くには、新しいタブを開く(+)をクリックします。
新しいタブで次のコマンドを実行して、サービス アカウントを作成します。
このサービス アカウントが作成されます。
次のコマンドを実行して、サービス アカウントに必要な権限を付与します。
このサービス アカウントに次のロールが付与されます。
roles/alloydb.client: ツールボックスが AlloyDB データベースにアクセスできるようにします。roles/serviceusage.serviceUsageConsumer: ツールボックスがサービスを使用できるようにします。roles/secretmanager.secretAccessor: ツールボックスが Secret Manager に保存されているシークレットを取得できるようにします。新しいタブを閉じるには、次のコマンドを実行します。
このタスクでは、ログインするユーザーに表示する OAuth 同意画面を登録します。
認可に OAuth 2.0 を使用する場合、Google が同意画面を表示して、アプリケーションとデータを共有することに対するユーザーの同意を得ます。
Google Cloud コンソールで、ナビゲーション メニュー()を選択し、[API とサービス] > [OAuth 同意画面] を選択します。
[開始] をクリックします。
[アプリ名] に「Cymbal Air」と入力します。
[ユーザー サポートメール] をクリックし、受講者のメールアドレスをクリックしてから、[次へ] をクリックします。
[対象] で [内部] を選択し、[次へ] をクリックします。
プロジェクトへのアクセス権を持つユーザーは、アプリにログインできるはずです。
ラボの手順の左側にあるパネルで、[ユーザー名] の値をコピーします。
[連絡先情報] に、コピーしたユーザー名を貼り付けます。
[次へ] をクリックします。
チェックボックスをクリックしてユーザーデータに関するポリシーに同意し、[続行] をクリックしてから、[作成] をクリックします。
これで同意画面の設定は完了です。
このタスクでは、アプリケーションのクライアント ID を作成します。
Google の OAuth サービスを使用するには、アプリケーションにクライアント ID が必要になります。このリクエストを送信できる許可されたオリジンと、ユーザーがログインに同意した後にウェブアプリがリダイレクトされるリダイレクト URI を構成します。
Google Cloud コンソールで、ナビゲーション メニュー()を選択し、[API とサービス] > [認証情報] を選択します。
[+ 認証情報を作成]、[OAuth クライアント ID] の順にクリックします。
クライアント ID は、Google の OAuth サーバーで個々のアプリを識別するために使用されます。
[アプリケーションの種類] で [ウェブ アプリケーション] を選択します。
[名前] に「Cymbal Air」と入力します。
JavaScript のオリジンとリダイレクト URI は、Cloud Shell を使用して生成できます。
Cloud Shell で、新しい Cloud Shell タブを開くには、新しいタブを開く(+)をクリックします。
オリジンとリダイレクト URI を取得するには、新しいタブで次のコマンドを実行します。
[承認済みの JavaScript 生成元] で [+ URI を追加] をクリックします。
echo コマンドで作成したオリジン URI をコピーし、[URIs 1] に貼り付けます。
[承認済みのリダイレクト URI] で [+ URI を追加] をクリックします。
echo コマンドで作成したリダイレクト URI をコピーし、[URIs 1] に貼り付けます。
環境変数を作成するために、VM に SSH 接続した Cloud Shell タブに切り替え、次のコマンドを貼り付けます。Enter キーは押さないでください。
[認証情報] ウィンドウで、[作成] をクリックします。
クライアント ID とクライアント シークレットが作成されます。このテスト アプリケーションでは、クライアント ID のみを使用します。
[クライアント ID をコピー]()をクリックします。
クライアント ID がクリップボードにコピーされます。
VM の SSH Cloud Shell タブで、クライアント ID を貼り付け、Enter キーを押します。
エクスポートは次のようになります。
このタスクでは、MCP ツールボックスを Cloud Run にデプロイします。
ツールボックス用のサンプルの tools.yaml ファイルが用意されていますが、いくつかの設定を変更する必要があります。
次のコマンドを実行して、構成設定を表示します。
この YAML ファイルには、データベースと OAuth の構成設定が含まれています。
次のような設定になっているはずです。
次のコマンドを実行して、環境に合うように設定を変更します。
これらのコマンドは、sed を使用して、サンプルの tools.yaml ファイルの中の特定の設定を置き換えています。また、デフォルトの IP タイプはパブリックであるため、ipType 行をパスワード行の下に追加しています。
次のコマンドを実行して、ファイルの変更内容を確認します。
設定ファイルの最初の部分の値が更新されていることが確認できるはずです。
機密性の高い設定(特にデータベースのパスワードとクライアント ID)は、シークレットとして保護する必要があります。
機密情報をコード リポジトリに格納したり、実行アプリに含めたりする代わりに、Secret Manager を使用してシークレットを保護することができます。
次のコマンドを実行して、シークレットを作成します。
次のコマンドを実行して、シークレットが保存されたことを確認します。
tools という名前のシークレットが表示されます。
VM に SSH 接続した Cloud Shell タブで、次のコマンドを実行して、ツールボックスを Cloud Run にデプロイします。
デプロイが完了するまで待ちます。
サービスを確認するには、次のコマンドを実行します。
「Hello World」というメッセージが表示されたら、サービスが稼働し、リクエストを処理できる状態になっています。
このタスクでは、検索サービスを使用するサンプル チャット アプリケーションを実行します。
VM に SSH 接続した Cloud Shell タブで、次のコマンドを実行して、チャット アプリケーションのルートに戻ります。
アプリケーションを起動する前に、いくつかの環境変数を設定する必要があります。フライトや帰りの空港の設備について尋ねるなど、アプリケーションの基本的な機能を使用するには、TOOLBOX_URL という名前の環境変数に、Cloud Run で実行されているツールボックス サービスの URL を設定する必要があります。
次のコマンドを実行して、ツールボックス サービスの URL を指定します。
ローカル アプリケーションが MCP ツールボックスを介してデータベースにアクセスするときに、このツールボックスの URL が使用されます。
アプリケーションを実行するには、次のコマンドを実行します。
次のような応答が返されます。
アプリケーションが実行中になりました。
VM で実行されているアプリケーションに接続するには、いくつかの方法があります。たとえば、VPC のファイアウォール ルールを使用して VM でポート 8081 を開いたり、パブリック IP を持つロードバランサを作成したりできます。ここでは、VM への SSH トンネルを使用して、Cloud Shell ポート 8080 を VM ポート 8081 に変換します。
Cloud Shell で、新しい Cloud Shell タブを開くには、新しいタブを開く(+)をクリックします。
VM ポートへの SSH トンネルを作成するには、新しいタブで次のコマンドを実行します。
この gcloud コマンドは、Cloud Shell の localhost ポート 8080 を VM のポート 8081 に接続します。「Cannot assign requested address」というエラーは無視してかまいません。
ウェブブラウザでアプリケーションを実行するには、[ウェブでプレビュー] をクリックし、[ポート 8080 でプレビュー] を選択します。
ブラウザで新しいタブが開き、アプリケーションが実行されます。Cymbal Air アプリケーションに「Welcome to Cymbal Air! How may I assist you?」というプロンプトが表示されます。
次のクエリを入力します。
これに対して、アプリケーションは、サンフランシスコ国際空港(SFO)からロサンゼルス国際空港(LAX)への次のフライトを答えるか、情報を明確にするために質問を返します。
次のクエリを入力します。
どのフライトなのか確認する質問を返す可能性はありますが、チャットアプリは、コンテキストを理解し、SFO の出発ゲートの近くにあるレストランを返すはずです。
このタスクでは、アプリケーションにログインしてフライトを予約します。
[Sign in] をクリックします。
ポップアップ ウィンドウが開きます。
ポップアップ ウィンドウで、受講者を選択します。
Cymbal Air が受講者のユーザーに関する情報にアクセスできるようにするには、[Continue] をクリックします。
受講者アカウントにログインします。
次のクエリを入力します。
アプリケーションが、話題にされていたフライトを提示します。
[Looks good to me. Book it] をクリックします。
フライトの予約が完了しました。
次のクエリを入力します。
予約したフライトが表示されます。
チャットアプリは、次のようなユーザーの質問に答えるのに役立ちます。
このアプリケーションは、最新の Google 基盤モデルを使用して回答を生成し、AlloyDB の運用データベースのフライトと設備に関する情報で回答を拡張しています。このデモ アプリケーションについて詳しくは、プロジェクトの GitHub ページをご覧ください。
大規模言語モデル(LLM)と検索拡張生成(RAG)を活用して、魅力的で有益な会話を作成するチャット アプリケーションを構築できました。
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
マニュアルの最終更新日: 2025 年 10 月 13 日
ラボの最終テスト日: 2025 年 10 月 13 日
Copyright 2025 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください