ナレッジ検索・回答AIエージェントG-gen Tech AgentをADKで開発した事例

記事タイトルとURLをコピーする

G-genの杉村です。Agent Development Kit(ADK)を使い、社内外のドキュメントやナレッジを検索して、技術的な質問に回答する AI エージェントを開発した事例を紹介します。

はじめに

開発したもの

当記事では、G-gen のサービスとして提供されている G-gen Tech Agent の開発事例を紹介します。G-gen Tech Agent は、Google Cloud や Google Workspace に関する技術的な質問に回答するチャットツールです。バックエンドでは AI エージェントが稼働しており、以下のような情報ソースから情報を取得して、その結果を要約して回答を生成します。

G-gen Tech Agent の画面

ユーザーが自然言語による質問を行うと、AI エージェントはこれらのソースに対して、Google Cloud の Vertex AI Search(AI Applications サービスの1機能)という仕組みを使って検索を行います。

Vertex AI Search の検索結果を、生成 AI モデル Gemini が解釈・要約を行い、ユーザーに対する回答を生成します。

公式ドキュメントに加え、G-gen の技術ブログや過去のサポートナレッジに基づいて生成が行われるため、高い精度が期待できます。

G-gen Tech Agent では、上記の「Vertex AI Search による複数データソースへの検索」「その結果を要約して最終回答を作成する」という一連の流れを、Agent Development Kit(ADK)というフレームワークを使って実装しました。

利用可能ユーザー

G-gen Tech Agent は、G-gen の Google Cloud / Google Workspace 請求代行サービスの付帯サービスとして顧客に提供されています。「Google Cloud と Google Workspace の両方で請求代行サービスを契約している」などの提供条件があります。

G-gen Tech Agent は、G-gen 独自の AI ソリューションである G-gen Tech Suite の一部として提供されています。G-gen Tech Suite には G-gen Tech Agent の他に、Google Cloud と Google Workspace の最新技術アップデート情報に関する解説を日本語で閲覧できる G-gen Tech Update という Web サービスも付帯しています。

利用条件など、詳細は営業担当者にお問い合わせください。

請求代行サービスに無料付帯する G-gen Tech Suite

動作

G-gen Tech Agent は、以下のように動作します。

URL にアクセスすると、Google アカウントでの認証画面が表示されます。認証が完了されると、以下のような画面が表示されます。

G-gen Tech Agent の画面

質問を画面下部のテキストボックスに入力し、送信します。マークダウン形式での入力に対応しており、AI に正しく質問内容を伝えるのに役立ちます。

バックエンドでは複数のデータソースに検索を行い、またそれらを要約するため、回答には30秒ほどかかる場合があります。

エージェントが思考中

回答が生成されました。AI エージェントには、前の会話を引き継いで続けて質問することもできます。また、公式ドキュメントや関連ブログ記事リンクなども表示されます。

生成された回答

関連リンクも表示される

ユースケース

技術的な仕様に関する質問

「Google ドライブで共有ドライブ間でファイルを移動すると、共有リンクは変わってしまいますか?」

トラブルシューティング

「Vertex AI で Gemini API を呼び出していますが、429 RESOURCE_EXHAUSTED というエラーが頻発します。どうしたらいいですか?」

学習リソースの提案

「BigQuery を学ぶのに役立つコンテンツを教えてください。」

アーキテクチャ

マルチエージェント

G-gen Tech Agent は、マルチエージェント構成となっています。マルチエージェント構成では、複数の AI エージェントが協働してタスクを遂行します。以下は、エージェント構成を示したものです。

G-gen Tech Agent のマルチエージェント構成

ユーザーが質問を行うとまず、ルートエージェント(root = 根)と呼ばれるエージェントが起動します。このエージェントは SequentialAgent と呼ばれる ADK の Class を用いて構成されています。

SequentialAgent は、複数のエージェントをシーケンシャルに(直列に)実行するものです。このエージェント自体は思考を行わず、単に複数エージェントを直列に実行するワークフローを構成するために存在します。

SequentialAgent の指示に基づき、はじめにデータソース検索エージェントが起動します。このエージェントは ParallelAgent で実装されています。

ParallelAgent も、SequentialAgent と同様に、思考を行わず、複数のエージェントをパラレルに(並列で)実行するためのワークフロー制御を行うエージェントです。この ParallelAgent から呼び出されて、2つのエージェントが同時に起動します。公式ドキュメント検索エージェントと、G-gen ナレッジ検索エージェントです。

これらの検索エージェントは、Tools(エージェントが目的を達成するために使うプログラム群)として Vertex AI Search を用いて、Google の公式ドキュメントや G-gen のナレッジに対して検索を行います。パラレルに実行している理由は、回答までの時間を短縮するためです。

これらの検索ツールに対して検索を行う際、エージェントはユーザーからの質問を適切な検索クエリに変換して検索を実行します。この検索クエリ生成には、LLM の特性である自然言語の解釈が必須です。ユーザーからの質問をそのまま検索にかけたのでは、適切な検索結果は得られません。データソースに応じて、技術要素をスペース区切りの単語で検索したり、あるいは技術的な要素だけを抽出した自然な質問文に変換して、Vertex AI Search に対して検索または質問を実行します。

なお、G-gen ナレッジ検索エージェントは補助的な情報源として、Google 検索グラウンディングを有効化した Gemini による生成も用います。G-gen のナレッジだけを基にするのではなく、一般的なインターネット情報を追加の情報源とできるように、いわばサードオピニオンとして追加しています。

Vertex AI Search から検索結果が得られると、最後に最終回答作成エージェントが起動します。生成 AI モデル Gemini を用いて、前のエージェントが見つけ出した検索結果を統合・要約して、質問者の意図に沿う回答を生成します。

なぜ AI エージェントなのか

当システムを実装するにあたり、単純な RAG 構成等ではなく、ADK を使った AI マルチエージェントという実装を選択した理由として、以下が挙げられます。

  • AI エージェントおよび ADK の実証実験としての意義
  • 複数のデータソースへの検索を統合して要約するというワークフロー的な処理の性質

前者については、当社が Google Cloud 専業インテグレーターであり、今後顧客に AI エージェントの実装を提案するにあたっての実証実験的な意義がありました。ただし、これはシステムの技術選定における本筋ではありません。

後者のほうが重要です。従来型の RAG では、例えば Gemini における実装であれば、API エンドポイントへ生成リクエストを送信するときに Tools として Google 検索ツールを渡し、グラウンディングを指示します。また Vertex AI Search であれば、あるデータソースをグラウンディング先として指定した Vertex AI Search アプリに対して answer メソッドで回答の生成を指示します。

これらの生成方法だと、「単一の生成リクエストで1つまたは複数のデータソースに対するグラウンディングを行う」ということはできても、「あるデータソースを根拠とした生成リクエスト A と、別のデータソースを根拠とした生成リクエスト B を統合して、複数の根拠や視点に基づいて結果を生成する」といったことはできません。実際に Vertex AI Search の Blended Search(複数のデータソースに対してグラウンディングを行う機能)を使って Google Cloud の技術に関する質問に回答させたところ、関連度が高いと判断された一部のデータソースに基づいて回答が生成されてしまい、AI エージェント構成とした場合よりも精度が低いものとなりました。

G-gen Tech Agent のユースケースでは、AI エージェントが複数の生成結果を統合することにより精度が高まったため、単純な RAG 構成よりも適切と判断されました。

インフラ構成

G-gen Tech Agent は Web サービスであり、ホストするためにサーバーが必要です。G-gen Tech Agent は、サーバーレスなプラットフォームである Cloud Run にホストされています。

AI エージェントのホスト先として、Google Cloud では他に Vertex AI Agent Engine が挙げられます。今回は、エージェントを Web 経由だけでなく社内の Slack 経由でも呼び出すなどの将来的な拡張性を見込み、より小回りの効く Cloud Run を採用しました(Agent Engine でも同様のことは実現できます。追加の採用理由として、類似の社内ツールが以前 Cloud Run で実装されていたため、このアセットを流用したという背景もあります)。

構成図は、以下のとおりです。

インフラ構成図

すべての要素はサーバーレスで実装されています。利用した Google Cloud サービスは以下のとおりです。

  • Cloud Run(フロントエンド・バックエンド)
  • Vertex AI(生成 AI モデル Gemini の API)
  • AI Applications - Vertex AI Search(データソースに対する検索)

当システムでは、Vertex AI Search を使ってデータソースに対する検索を行っています。

G-gen が保有する Web サイトである G-gen Tech Blog に対しては、高度なインデックス登録(Advanced index)が有効化できます。これを行うことで、ウェブサイトに対して単なる単語検索ではなく、自然言語でクエリすると自然言語によって回答が返ってくる answer メソッドが利用可能になります。

一方で、Google の公式ドキュメントは G-gen が保有するものではないため、高度なインデックス登録に必須なドメイン認証を行うことができません。そのため通常のウェブサイト検索となり、検索には search メソッドを使っています。投げかける検索クエリはスペース区切りの単語としています。

また、過去サポートケースに基づいた FAQ に対しても、Vertex AI Search の answer メソッドを使っています。データストアは BigQuery に格納された構造化データです。

このようにデータソースに応じて適切な検索クエリが異なりますが、生成 AI により、適切な検索クエリを生成させています。

バッチ処理

G-gen の過去サポートケースについては、過去の顧客とのやりとりを直接的に検索させているわけではありません。日次のバッチ処理で顧客とのやりとりの情報を要約して FAQ 化し、BigQuery に格納したうえで、Vertex AI Search のデータストア化しています。

また FAQ には純粋な技術的な情報のみが含まれており、顧客固有の情報や機密情報、個人情報が入りこまないよう、検知と処理、人間の目によるチェックを行っています。さらに、バッチ処理時やフロントエンド側のシステムプロンプトでも、そういった情報が回答に入りこまないように LLM に指示されており、この対策は信頼度が絶対といえないまでも多層的な対策の一環を担っています。

過去のサポートケースを FAQ 化するための日次のバッチ処理でも、Gemini モデルが使われています。

バッチ処理構成図

ADK 関連記事

以下は、最近の ADK に関する関連記事です。開発にあたり、参考にしてください。

blog.g-gen.co.jp

blog.g-gen.co.jp

blog.g-gen.co.jp

blog.g-gen.co.jp

杉村 勇馬 (記事一覧)

執行役員 CTO

元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。