キカガク プラットフォームブログ

株式会社キカガクのプラットフォームブログです。エンジニアやデザイナー、プロダクトマネージャーなどが記事を書いています。

Google Next Tokyo ‘24 に参加したので生成 AI アプリでRAG を構築してみた

こんにちは、プラットフォーム部プラットフォームチームの北田です。

8/1, 8/2 の2日間にわたって開催された Google Cloud Next Tokyo の Day2 に参加してきました。

こういった大きなディベロッパーイベントに参加するのは初めてでしたが興味深いセッションをたくさん拝聴できたのでとても貴重な体験ができました。

私が参加したセッションの一つに「顧客体験向上のための生成 AI を利用したチャットボット構築」というセッションがありました。

そこで実際にハンズオン形式でデモをしていた Vertex AI Agent Builder (以下 Agent Builder)がとても興味深かったので、今回は実際に Vertex AI を活用して Agent Builder を触ってみようと思います。

今回やること

Agent Builder を使って賃貸の原状回復に関するお助けチャットアプリを作成してみます。

その後に Agent Builder 上で作成したモデルを Google Chat に連携するところまでを実装していきます。

モチベーション

例えば賃貸に住んでいて引っ越しをすることがよくあると思います。

退去の手続きなどとても面倒なことが多いですが、その際に住んでいる賃貸の部屋を傷つけてしまったり、掃除を怠って壁を汚してしまうことがよくあるのではないでしょうか?

できるだけ退去する際は無駄な出費を抑えたいと思いますが、そういった原状回復などの負担を貸借人のどちらがすべきかなど、賃貸契約に関することを自分で調べたり何十ページにも及ぶ資料を読むのはとても大変です。

今回は国土交通省から提供されているガイドラインなどのドキュメントを読み込ませて回答を生成するようにアプリを作成していきます。

Agent Builder とは

Agent Builder は、ノーコードからハイコードまで簡単に AI アプリケーションを作成することができる Vertex AI のサービスの1つです。 Agent Builder 自体は以下の機能で構成されています

  • Vertex AI Agent
  • Vertex AI Search

各サービスの詳細については公式ドキュメントを確認してみてください。

https://cloud.google.com/products/agent-builder?hl=ja

今回は Agent Builder 上で RAG (検索拡張生成)を導入してみます。

すごく簡単に言うと生成 AI の出力を強化してくれるフレームワークみたいなもので

  • 事実に基づく根拠付け
  • コンテキストの関連性向上
  • ベクトル データベースを使って効率的かつ正確な検索

を可能にしてくれます。

料金

クエリごとの従量制課金となっており、$12/1,000 クエリで利用することができます。

https://cloud.google.com/generative-ai-app-builder/pricing?hl=ja

アプリを作ってみる

Agent Builder 上でアプリを作成

まずはアプリを作成していきます。「アプリを作成」から「エージェント」を選択してください。

今回は「賃貸トラブル助けるくん」というアプリ名で登録していきます。

リージョンは作成時点では asia-northeast1 (東京)が存在しなかったので global を選択します。

作成が完了すると Agent Console という画面に遷移します。

学習データの準備

今回グラウンディングするデータは国土交通省のホームページに記載されているこちらの PDF を使用します。グラウンディングとは、モデルの出力を検証可能な情報源に紐付けることです。

PDF をダウンロードしたら、次に Cloud Storage に PDF を格納するフォルダを作成していきます。

必要な API をあらかじめ有効にする必要があります

  • Discovery Engine API
  • BigQuery API
  • Cloud Storage API

これでデータの準備は完了です。

Agent Builder と学習データを紐づける

先ほど格納した PDF ファイルを Agent Builder に紐づけていきます。

Agent Builder のコンソール画面から「データストア」を選択し「データストアを作成」から作成していきます。

ソースはウェブサイトを直接参照したり、Big Query や外部 API などさまざまなデータソースを選択することができます。

今回は Cloud Storage です。

データストアの作成が完了したら、このデータストアを Agent Builder に紐づけます。

実際には Tool から Agent Builder の紐づけを行っていくことになります。

Agent Console の「Tool」からツール名や説明文を入力して「Unstructured documents」から先程作成したデータストアを選択すれば OK です。

次にグラウンディングの設定です。

ここではどのレベルでグラウンディングを行うかを選択することができます。

Very High に近づけるほどより関連性の高いレスポンスを生成することができます。

設定できたら「save」で保存してください。

ここまで完了したら最後に今作成した Tool を Agent Builder に紐づけます。

Agent Console に戻り、先程作成した Tool が Available Tools に表示されていると思うのでチェックをつけて保存してください。

Code Interpreter組み込みの Tool でデフォルトで使えますがここでは不要なのでそのままで OK です。

試してみる

ここまでで一旦 Agent Builder 上のアプリを作成することができました。

では早速学習データに基づく回答が得られるか試してみます。

チャット画面では Gemini のモデルを gemini 1.5-flash、gemini 1.0-pro, text-bison から 選択することができます。

一度画面をリロードして右側のチャットフォームになにか質問を投げてみます。

するとインプットしたガイドライン PDF から質問に該当する箇所の回答を受け取ることができました。

また、parameter のタブをクリックしてみると実際にどのソース(今回の場合は GCS に保存した 34 ページの PDF のみ)のどの箇所から参照した回答なのかを確認することができます。

{
    "answer": "原状回復ガイドラインでは、賃借人の負担対象範囲について、可能な限り毀損部分に限定し、毀損部分の補修工事が可能な最低限度を施工単位とすることを基本としています。 したがって、賃借人に原状回復義務がある場合の費用負担についても、補修工事が最低限可能な施工単位に基づく補修費用相当分が負担対象範囲の基本となります。",
    "snippets": [
        {
            "text": "(3) 賃借人の負担対象範囲 ① 基本的な考え方 原状回復は、毀損部分の復旧であることから、可能な限り毀損部分に限定し、毀損部分の補修工 事が可能な最低限度を施工単位とすることを基本とする。したがって、賃借人に原状回復義務があ る場合の費用負担についても、補修工事が最低限可能な施工単位に基づく補修費用相当分が負担対 象範囲の基本となる。",
            "uri": "https://storage.cloud.google.com/vertext-ai-apartment/000991391.pdf#page=18",
            "title": "原状回復をめぐるトラブルとガイドライン"
        },
        {
            "uri": "https://storage.cloud.google.com/vertext-ai-apartment/000991391.pdf#page=18",
            "title": "原状回復をめぐるトラブルとガイドライン",
            "text": "③ 経過年数(入居年数)を考慮しないものもっとも、建物本体と同様に長期間の使用に耐えられる部位であって、部分補
            ....
         },
       ...
      ]
 }

Google Chat と連携

参考にした公式ドキュメントをはこちらです。

https://cloud.google.com/dialogflow/cx/docs/concept/integration/google-chat?hl=ja

Google Chat API の設定

Agent Builder 上で学習データを元にした回答 AI を確認することができました。

次に Google Chat でアプリを動かせるように設定していきます。

サイドメニューの「Integrations」から Google Chat を選択します。

こちらは Google Chat 上にどの用に表示するかの設定になります。

アバターURL は Google Chat 上のアイコンです。

入力が完了したら「start」を押して Google Chat API との連携を開始します。

次に Google Chat API から設定を行います。

Google Chat API」から「構成」をクリックします。

すると先ほど設定した内容がこちらに反映されていることが確認できます。

特に変更する項目はありませんが「公開設定」や「ログ」の設定は任意で設定してみてください。

Google Chat で動かしてみる

最後に Google Chat から先程の Agent Builder と連携ができているか確認してみます。

Goolge Chat から「チャットを新規作成」し、Agent Builder で設定したアプリ名で検索します。

アプリは表示されたら選択してチャットを始めることができます。

Agent Console 上でテストしたように学習インプットに基づく回答が得られればバッチリです。

また試しに、質問に対して AI が回答を生成してしまうハルシネーションが行われないかも確かめてみます。

原状回復の公式ガイドラインには借り主の家賃や家賃値下げの交渉については当然書かれていません。

スマホから呼び出してみます。

ばっちりです。

まとめ

Vertex AI 上で簡単に生成AI アプリケーションを試すことができました。

今回は全くのノーコードで簡単にRAG を構築してみましたが、例えば Cloud Run などサーバレス環境にホストしてアプリケーションとしてカスタムドメイン化したり、BigQuery と連携してデータ分析を行うなど様々なことができそうです。