本文へスキップ

Google ADK + Live API + RAG Engine

2025.08
Google ADK、Live API、RAG Engine

Vertex AI Search は、数回のクリックですぐに利用できる RAG ソリューションを提供します。一方、ベクトル検索は、ベクトルベースとキーワード ベースのアプローチを組み合わせたハイブリッド手法に対応し、より関連性の高い回答を返します。また、ローカル ファイル、Cloud Storage、Google ドライブ、Slack、Jira など、さまざまなデータソースに接続して、独自のカスタム RAG エンジンを構築することもできます。

Google Cloudプロジェクト作成

Vertex AI APIを有効化

認証(ADC: Application Default Credentials)

# gcloudを入れる

brew install --cask google-cloud-sdk

# 認証情報を保存

# /.config/gcloud/application_default_credentials.json

gcloud auth application-default login

ADK 導入

python -m venv venv && source venv/bin/activate

pip install --upgrade google-genai  # Vertex AI/Live API クライアント

pip install google-adk # ADK

# agent作成

adk create ./agent

# webUI起動

adk web --reload

Live APIに対応しているモデルは2つあるが、publicに使えるものは1つのみ。下記を指定する。

gemini-2.5-flashは双方向の音声のやり取りはサポートしていない(音声入力、テキスト出力のみ)。

gemini-live-2.5-flash-preview-native-audio

https://cloud.google.com/vertex-ai/generative-ai/docs/live-api?hl=ja

リージョンはus-central1のみ対応なので、それ以外は選べない。

GOOGLE_CLOUD_LOCATION=us-central1

https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-flash?hl=en#live-api-native-audio

最小限でadk live apiを動かすならこれだけでOK。日本語で喋ってくれます。

from google.adk.agents import Agent

root_agent = Agent(

name='voice_assistant_agent',

model='gemini-live-2.5-flash-preview-native-audio',

description='明るい友人です',

instruction='友人に電話をかけているときのように、フレンドリーな回答をしてください。',

)

Vertex AI Search

Vertex AI Searchのデータストアはよしなに作成する(アプリは不要)。GCSにPDFをアップして、それをインポート。

Vertex AI Searchでアプリを作成し、このデータをインポートする。「生成 AI 機能から除外」チェックマークをopt inする。完了するまでしばらくかかる。

  • OCRパーサー……テキスト抽出
  • レイアウトパーサー……OCR+レイアウト情報も込み

音声対話

gemini-live-2.5-flash-preview-native-audioでも対話では、Vertex AI Searchが機能しなかった。サポートされているはずだが。

gemini-2.5-flashでテキスト対話の結果。大体あってます。

RAG Engine

オーディオ対話の’gemini-live-2.5-flash-preview-native-audio’では、RAG Engineは非対応。

https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-flash?hl=ja#live-api-native-audio

gemini-live-2.5-flashの方は非公開で、問い合わせるしかない。RAG対応しているかは不明。

モデル gemini-2.5-flash-lite を使用して、テキストで会話した場合。RAGは機能している。半分くらいは間違っている。

Screenshot 2025-08-25 at 20.09.37.png

Screenshot 2025-08-25 at 20.09.48.png

RAG Engineの手順

雑誌2012年7月号を使用した。

GCSバケット作成してPDFアップロード → 非公開設定にする、PDFは50MB以下にする

Vertex AI > RAG Engine からコーパス作成し、GCSのPDFをインポート。

雑誌なので、もしかするとレイアウトパーサーを使用する方が精度が高いかも。Document AIにてレイアウトパーサーのプロセッサを作成しておく。RAG Engineのコーパスを作成するときに、詳細設定からこれを選択する。

使用可能なリージョンは2つだけ? us-central1は使えなかったので、europe-west3を使用。プロジェクトとコーパスのリージョンは別になったが、動作は問題なかった。

Document AI

OCRするときのアプリ。プロセッサを作成したあとに、テストでファイルをアップして解析できる。このとき、変換されたjsonをダウンロードして中身を確認することができる。

RAGを細かくカスタムする場合:WIP

PDFをJSON化し、JSONを段落レコード(JSONL/TXT)に変換する。JSONLからembeddingsを作成する。

  1. Document AIでプロセッサを作成して、idなどを控える
  2. APIから使用するには、quotaプロジェクトの設定をする必要がある

# gcloudコマンドラインツール自体の認証

gcloud auth login

スクリプトを実行すれば、OCRされたjsonが先ほどのGCSバケット配下に作成される。

jsonl/txt以降の工程は未実装。