
始める前に
- ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
- ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
- 画面左上の [ラボを開始] をクリックして開始します
Create a database and enable pgVector extension
/ 20
Populate database with the sample dataset
/ 20
Create the service account retrieval-identity
/ 20
Deploy the Retrieval Service
/ 20
Create a Client Id
/ 20
大規模言語モデル(LLM)からの回答の品質を向上させる最良のツールの一つが、検索拡張生成(RAG)です。RAG は、非公開データを取得し、そのデータを使用して LLM に送信するプロンプトを拡張するパターンです。RAG を使用すると、LLM はプロンプトに含まれるデータに基づいてより正確な回答を生成できます。
Google Cloud のスケーラブルで高パフォーマンスの PostgreSQL 対応データベースである AlloyDB を使用して、ベクトル エンベディングと呼ばれる特殊な種類のベクトルデータを保存し、これを基準に検索します。ベクトル エンベディングは、セマンティック検索を使用して取得できます。セマンティック検索では、利用可能なデータの中から、ユーザーの自然言語によるクエリに最も適したデータを取得できます。取得したデータがプロンプトでモデルに渡されます。
また、生成 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 にプリインストールされており、タブ補完がサポートされています。
出力:
出力例:
出力:
出力例:
このタスクでは、PostgreSQL クライアントをインストールし、それを AlloyDB インスタンスに接続します。
仮想マシン(VM)はすでに作成されています。この VM でアプリケーションをホストします。また、この VM 上に PostgreSQL クライアントを作成します。
VM に接続するには、次のコマンドを実行します。
承認するよう求められた場合は、[承認] をクリックします。
gcloud compute ssh
コマンドで尋ねられる各質問について、Enter キーまたは Return キーを押して、デフォルトの入力を指定します。
しばらく待つと、VM にログインした状態になります。
PostgreSQL クライアントをインストールするには、VM セッションで次のコマンドを実行します。
AlloyDB インスタンスはすでに作成されています。
必要なシェル変数を作成するには、次のコマンドを実行します。
psql を使用して AlloyDB インスタンスに接続するには、次のコマンドを実行します。
psql が AlloyDB データベースに接続すると、postgres=>
プロンプトが表示されます。これで、データベースに接続されました。
psql セッションを終了するには、次のコマンドを実行します。
このタスクでは、PostgreSQL クライアントを使用して AlloyDB データベースを作成し、ベクトル エンベディングを有効にします。
新しいデータベースを作成するには、VM セッションで次のコマンドを実行します。
psql が CREATE DATABASE
で応答します。
データベースでセマンティック検索をサポートできるようにするには、エンティティをベクトル エンベディングで表現する必要があります。
このデータベースでベクトル エンベディングを有効にするには、次のコマンドを実行します。
psql が CREATE EXTENSION
で応答します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
このタスクでは、VM に Python をインストールします。Python を使用して、データベースにデータを入力します。
Python と Git をインストールするには、VM で次のコマンドを実行します。
インストールが完了すると、仮想 Python 環境がアクティブになり、(.venv)
プロンプトが表示されます。
VM の SSH セッションがタイムアウトした場合やタブが閉じられた場合は、VM に再度 SSH で接続し、コマンド source ~/.venv/bin/activate
を実行することで、仮想 Python 環境を再起動できます。
Python のバージョンを確認するには、次のコマンドを実行します。
次のような応答が返されます。
このタスクでは、AlloyDB のベクトル データベースにサンプルデータを入力します。入力したデータが、サンプルのチャット アプリケーションで使用されます。
サンプル アプリケーションとデータは、genai-databases-retrieval-app という名前の GitHub リポジトリに保存されています。
リポジトリのクローンを作成するには、VM で次のコマンドを実行します。
データモデルを表示するには、次のコマンドを実行します。
Python データモデルが表示されます。このモデルには、空港、フライト、ターミナル内の設備、ポリシー、航空券に関するデータが含まれています。
空港に関するサンプルデータを表示するには、次のコマンドを実行します。
これらのコマンドにより、空港データセットの列名を指定する CSV ヘッダーと、サンフランシスコ国際空港(SFO)に対応する行が表示されます。空港モデルのデータは、国際航空運送協会(IATA)コード、または国、都市、空港名に基づいて取得できます。このテーブルの行は、キーワード検索を使用して検索できるため、このデータにはベクトル エンベディングはありません。
フライトに関するサンプルデータを表示するには、次のコマンドを実行します。
これらのコマンドにより、フライト データセットの列名を指定する CSV ヘッダーと、最初の 10 行の SFO 発着フライトが表示されます。フライトモデルのデータは、航空会社とフライト番号、または出発空港コードと到着空港コードに基づいて取得できます。
設備に関するサンプルデータを表示するには、次のコマンドを実行します。
このコマンドにより、設備データセットの列名を指定する CSV ヘッダーと、最初の設備が表示されます。
最初の設備には、名前、説明、場所、ターミナル、カテゴリ、営業時間などの単純な値がいくつかあります。その後に続く値は、名前、説明、場所を統合した content
です。最後の値は embedding
で、これが行のベクトル エンベディングです。
エンベディングは 768 個の数字からなる配列であり、セマンティック検索の実行時に使用されます。これらのエンベディングは、Vertex AI が提供する AI モデルを使用して計算されます。ユーザーがクエリを入力すると、クエリからベクトル エンベディングが作成され、検索のエンベディングに近いベクトル エンベディングを持つデータが取得されます。
ポリシーデータも同様の方法でベクトル エンベディングを使用します。
データベース構成ファイルを作成するには、次のコマンドを実行します。
インスタンスの IP アドレス、ユーザー名、パスワード、データベースが更新された状態の構成ファイル config.yml
が作成されます。構成ファイルの内容は次のようになります。
データベースにサンプル データセットを取り込むには、次のコマンドを実行します。
最初のコマンドは、必要なすべてのパッケージを Python 仮想環境に追加し、2 番目のコマンドはデータベースにデータを取り込みます。
このタスクでは、検索サービス用のサービス アカウントを作成します。
検索サービスは、データベースから関連する情報を抽出する役割を担います。AI アプリケーションからのリクエストに基づいて、データベースから必要な情報を抽出します。作成するサービス アカウントを、この Cloud Run サービスの ID として使用します。
SSH ユーザーには、プロジェクト インスタンスでサービス アカウントに適切なロールを付与する権限がありません。新しい Cloud Shell タブを使用して、サービス アカウントを作成します。
Cloud Shell で、新しい Cloud Shell タブを開くには、新しいタブを開く(+)をクリックします。
サービス アカウントを作成して必要な権限を付与するには、新しいタブで次のコマンドを実行します。
サービスが Vertex AI を呼び出せるようにするために、このサービス アカウントには roles/aiplatform.user
ロールを付与します。
新しいタブを閉じるには、次のコマンドを実行します。
このタスクでは、Cloud Run に検索サービスをデプロイします。
検索サービスをデプロイするには、VM の SSH Cloud Shell タブで次のコマンドを実行します。
デプロイが完了するまで数分待ちます。
サービスを確認するには、次のコマンドを実行します。
「Hello World」というメッセージが表示されたら、サービスが稼働中の状態になり、リクエストに対応していることを意味します。
このタスクでは、ログインするユーザーに表示する 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] に貼り付けます。
[作成] をクリックします。
クライアント ID とクライアント シークレットが作成されます。このテスト アプリケーションでは、クライアント ID のみを使用します。
環境変数を作成するには、VM の SSH Cloud Shell タブで、次のコマンドを貼り付けます。Enter キーは押さないでください。
[クライアント ID をコピー]()をクリックします。
クライアント ID がクリップボードにコピーされます。
VM の SSH Cloud Shell タブで、クライアント ID を貼り付け、Enter キーを押します。
エクスポートは次のようになります。
このタスクでは、検索サービスを使用するサンプル チャット アプリケーションを実行します。
チャット アプリケーションの Python 要件をインストールするには、VM の SSH Cloud Shell タブで次のコマンドを実行します。
アプリケーションを起動する前に、いくつかの環境変数を設定する必要があります。フライトや帰りの空港の設備の検索といったアプリケーションの基本的な機能を使用するには、BASE_URL
という名前の環境変数に、検索サービスのベース URL を格納する必要があります。
検索サービスのベース URL を指定するには、次のコマンドを実行します。
ベース URL は、ローカル アプリケーションが検索サービスにアクセスするときに使用されます。
アプリケーションを実行するには、次のコマンドを実行します。
次のような応答が返されます。
アプリケーションが実行中になりました。
VM で実行されているアプリケーションに接続するには、いくつかの方法があります。たとえば、VPC のファイアウォール ルールを使用して VM でポート 8081 を開いたり、パブリック IP を持つロードバランサを作成したりできます。ここでは、VM への SSH トンネルを使用して、Cloud Shell ポート 8080 を VM ポート 8081 に変換します。
Cloud Shell で、新しい Cloud Shell タブを開くには、新しいタブを開く(+)をクリックします。
VM ポートへの SSH トンネルを作成するには、新しいタブで次のコマンドを実行します。
この gcloud コマンドにより、Cloud Shell のポート 8080 が VM のポート 8081 に接続されます。「Cannot assign requested address」というエラーは無視してかまいません。
ウェブブラウザでアプリケーションを実行するには、[ウェブでプレビュー] をクリックし、[ポート 8080 でプレビュー] を選択します。
ブラウザで新しいタブが開き、アプリケーションが実行されます。Cymbal Air アプリケーションに「Welcome to Cymbal Air! How may I assist you?」というプロンプトが表示されます。
次のクエリを入力します。
アプリケーションが、SFO からダラス / フォートワースへの次のフライトを回答します。
次のクエリを入力します。
アプリケーションはコンテキストを理解し、SFO の出発ゲートの近くにあるレストランを回答します。
このタスクでは、アプリケーションにログインしてフライトを予約します。
[Sign in] をクリックします。
ポップアップ ウィンドウが開きます。
ポップアップ ウィンドウで、受講者を選択します。
受講者アカウントにログインします。
受講者としてログインすることを確認するよう求められたら、[Confirm] をクリックします。
次のクエリを入力します。
アプリケーションが、話題にされていたフライトを提示します。
[Looks good to me. Book it] をクリックします。
フライトの予約が完了しました。
次のクエリを入力します。
予約したフライトが表示されます。
チャットアプリは、次のようなユーザーの質問に答えるのに役立ちます。
このアプリケーションは、最新の Google 基盤モデルを使用して回答を生成し、AlloyDB の運用データベースのフライトと設備に関する情報で回答を拡張しています。このデモ アプリケーションについて詳しくは、プロジェクトの GitHub ページをご覧ください。
大規模言語モデル(LLM)と検索拡張生成(RAG)を活用して、魅力的で有益な会話を作成するチャット アプリケーションを構築できました。
ラボが完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Google Cloud Skills Boost から削除され、アカウントの情報も消去されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。
このコンテンツは現在ご利用いただけません
利用可能になりましたら、メールでお知らせいたします
ありがとうございます。
利用可能になりましたら、メールでご連絡いたします
1 回に 1 つのラボ
既存のラボをすべて終了して、このラボを開始することを確認してください