23
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【コピペでOK】Gemini RAGはこんなに簡単!寝てる間にGitHub Actionsが最新ドキュメントを学習するAIアシスタントを作ろう

Posted at

Gemini API の File Search Tool は、RAGを超簡単に使えるようになる魔法です。

すぐに使える、コードを以下からダウンロードしてください。
https://github.com/sinzy0925/py_gemini-rag

はじめに

「公式ドキュメント、読むのが大変...」「AIに最新の仕様について質問できたらいいのに...」
開発者なら誰しも一度はこう思ったことがあるのではないでしょうか?

そんな願いを叶える技術が**RAG (Retrieval-Augmented Generation)**です。AIに独自の知識を与えることで、特定の専門分野に特化した超優秀なアシスタントを作り出せます。

しかし、従来のRAG構築には、

  • 面倒なデータの前処理(チャンク分割、エンベディング...)
  • ベクトルデータベースの構築・管理
  • 知識源となるドキュメントの定期的な手動更新

といった、多くの「大変な作業」が伴いました。

この記事では、そんな常識を覆します。
GoogleのGemini File Search toolGitHub Actionsを組み合わせることで、データ作成からAIの構築までを驚くほど簡単に、そして完全に自動化する方法をご紹介します。

完成すれば、あなたは**「寝ている間に勝手に最新の公式ドキュメントを学習し続ける、自分だけの専門家AI」**を手に入れることができます。

本記事で構築するシステムのすごいところ

このAIアシスタントの核心的なアイデアは2つです。

1. Gemini File Search toolが「とにかく簡単」

従来のRAG構築が「自分で図書館を建て、本を整理し、索引を作る」作業だったとすれば、Gemini File Search toolは 「最新鋭の国立図書館に、段ボールに詰めた本(テキストファイル)を持って行くだけ」 です。

  • 面倒な前処理は一切不要!
  • ベクトルDBの管理も不要!
  • ただテキストファイルをAPIにアップロードするだけ!

これだけで、裏側でチャンク分割、ベクトル化、インデックス作成が全自動で行われ、すぐに使える高性能なRAGシステムが完成します。

2. GitHub Actionsで「データ準備を完全自動化」

RAGの品質は、元となるデータの鮮度で決まります。しかし、公式ドキュメントは日々更新されるため、手動で追従するのは現実的ではありません。

そこで、GitHub Actionsの出番です。

  • 時間のかかるWebスクレイピングをGitHubのサーバー上で実行
  • 定期実行(週に一度など)や手動実行で、いつでも最新のドキュメントを取得
  • 取得したデータに差分があれば、自動でGitリポジトリにコミット&プッシュ

これにより、「自分のPCを動かすことなく、寝ている間に知識ベースが勝手に更新され続ける」という、夢のような開発サイクルが実現します。

システム構成図

このプロジェクトは、以下の流れで動作します。

構築手順

それでは、実際にAIアシスタントを構築していきましょう!

Step 1: 環境構築

まずは、プロジェクトの準備をします。

1-1. コードの取得とライブラリのインストール

適当な場所にリポジトリをクローン(またはファイルをダウンロード)し、requirements.txtを使って必要なライブラリをインストールします。

# プロジェクト用のディレクトリを作成し移動
mkdir gemini-rag-assistant && cd gemini-rag-assistant

# (ここにプロジェクトの全ファイルをコピー or git clone)

# 必要なライブラリをインストール
pip install -r requirements.txt

1-2. APIキーの設定

プロジェクトのルートに.envファイルを作成し、Google AI Studioで取得したご自身のGemini APIキーを設定します。

.env
GEMINI_API_KEY="YOUR_GEMINI_API_KEY_HERE"

Step 2:【最重要】GitHub Actionsで知識ベースを自動作成する

ここがこのプロジェクトの肝です。時間のかかるデータ収集をGitHubに任せましょう。

  1. このプロジェクト一式を、ご自身のGitHubリポジトリにプッシュします。
  2. リポジトリの Actions タブに移動します。
  3. 左側のワークフローリストに「Update Documentation Files」が表示されているはずです。
  4. Run workflow」ボタンをクリックして、ワークフローを手動で実行します。

これで、GitHubのサーバーがあなたの代わりにGoogle Apps ScriptGemini APIの公式ドキュメントをすべてダウンロードし、RAGに適したテキストファイルに変換し、リポジトリにプッシュしてくれます。

処理が完了したら、ローカルPCでgit pullを実行してください。gas_docs_txtgemini_api_docs_txtというフォルダに、AIの知識源となる大量のテキストファイルが生成されているはずです!

Step 3: AIにドキュメントを学習させる(RAGストアの構築)

次に、ローカルに準備されたテキストファイルをGemini APIにアップロードし、AIの「脳」となるRAGストアを構築します。この作業は最初に一度だけ行います。

python setup_rag_store.py

実行が完了すると、コンソールにfileSearchStores/xxxxxxxxのような**ストア名(ID)**が表示されます。このIDを忘れずにコピーしておきましょう。

Step 4: AIアシスタントと対話する!

いよいよ、完成したAIアシスタントと対話します。

  1. query_rag.pyファイルを開き、FILE_SEARCH_STORE_NAMEの値を、先ほどコピーしたストア名に書き換えます。

    # query_rag.py
    FILE_SEARCH_STORE_NAME = "fileSearchStores/xxxxxxxxxxxx" # ← ここを書き換える
    
  2. ターミナルで以下のコマンドを実行します。

    python query_rag.py
    

これで準備は完了です!ターミナルに「GASに関する質問を入力してください」と表示されたら、自由に質問を投げかけてみてください。

質問の例

【良い質問の例】

Google Apps Scriptで、件名が「レポート提出」、宛先が「test@example.com」、本文が「本日分のレポートを提出します。」という内容のメールを下書きとして作成するコードを教えてください。

【AIの回答例】

Google Apps Scriptで、...メールを下書きとして作成するには、以下のコードを使用できます。

function createDraftReportEmail() {
  const recipient = "test@example.com";
  const subject = "レポート提出";
  const body = "本日分のレポートを提出します。";

  GmailApp.createDraft(recipient, subject, body);

  Logger.log("下書きメールが作成されました。");
}

GmailApp.createDraft()という最適なメソッドを使った、完璧なコードが生成されました!

まとめ

本記事では、Gemini File Search APIの圧倒的な手軽さと、GitHub Actionsによるデータ準備の自動化を組み合わせることで、誰でも簡単に、かつ実践的なRAG AIアシスタントを構築できることを示しました。

  • 専門知識の注入は、ファイルをアップロードするだけ。
  • 知識の更新は、GitHub Actionsが寝ている間にやってくれる。

この手法を使えば、あらゆる公式ドキュメントや社内ナレッジを学習した、あなただけの専門家AIを無限に作り出すことができます。
ぜひ、このリポジトリをベースに、あなただけの最強のAI開発パートナーを育ててみてください!

23
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?