生成AIチャットボットにGemini API File Search Toolを組み込んでみた #gemini #rag #slack #mcp #ai #llm #langchain

はじめに
生成AI付Slackチャットボットでは、その応答にAzure OpenAIを利用しているため、広く世界に公開していない情報、例えば社内文書について知りません。このような状況を解決するためのRAG (Retrieval Augmented Generation; 検索拡張生成) という仕組みがありますが、実際にRAGを構築しようとするととても大変です(過去記事「Azure AI SearchでRAGしてみよう! チャットプレイグラウンドとWebアプリ編」)。そこに登場したのがGemini API ファイル検索です。手軽かつ安価に構築できるので、RAGがかなり身近になったと思います(過去記事「Gemini API File Search Toolを使ってみた」)。
本稿では、生成AI付SlackチャットボットからMCPを介してのGemini API File Search Toolの利用を紹介します。
なお、Gemini API File Search Toolは2025年11月初旬に発表されたばかりであり、本稿の内容は2025年12月に確認したものです。機能の更新や変更によって、そのまま適用できない可能性があることをあらかじめご了承ください。
前提条件
生成AI付Slackチャットボットとして「玄米茶」を利用します。
これはBolt for Pythonを用いたSlackアプリで、LangChain + LangGraphを基盤としています。またLangChain MCP Adaptersを利用し、Model Context Protocol (MCP)でさまざまな機能を呼び出せるようになっています。
生成AIはAzure OpenAIを使用しています。
RAGの準備
まず、過去記事「Gemini API File Search Toolを使ってみた」の通りにしてRAGの準備を行います。今回はテストとして、弊社の社内規則などのPDFファイルを対象としました。これらのPDFファイルはGoogle Driveに配置します。
Gemini API File Search Toolは、直接Google Driveにアクセスしてファイルを取り込む、という機能を持っていません。そのため別途、Google Driveからファイルを取得し、Gemini API File Search Toolで取り込む、という手段を取る必要があります。

この動作からもわかる通り、RAGから見た「情報ソース」とは取り込んだファイルの内容であり、そのファイルが元々置かれていたGoogle DriveでのURLではありません。しかし、エンドユーザからすると「情報ソースを教えて」と要求したとき、Google DriveのURLが返ってこないのは直感に反する動作です。
そこで、Gemini API File Search Toolとは別に、「情報ソース」のIDとGoogle DriveのURLを結びつけるデータベースを別途準備し、取り込みと同時に登録するツールを作成しました。

※もしかしたらGemini API File Search Tool単独で、情報ソースの補足・追加情報としてURLを与えることができるのかもしれませんが、どうにもうまくいきませんでした。Gemini API File Search Toolだけで完結できる方法をご存知の方はご一報ください。
Slackとの接続
弊社Slackには生成AI付チャットボットとして「玄米茶」が常駐しています。玄米茶はMCP (Model Context Protocol)によって他の機能を呼び出すことができるようになっているので、Gemini API File Search Toolで問い合わせを行うMCPサーバを作成しました。

このMCPサーバは、Gemini API File Search Toolで問い合わせるだけでなく、問い合わせ結果と「情報ソース」データベースを突き合わせて、Google DriveのURLも返すようになっています。
動作例
弊社の勤務形態の「コア無しフレックスタイム制(フルフレックスタイム制)」について質問してみました。

Gemini API File Search Toolの問い合わせ結果をGPTに通してSlackに返しているため、最初の回答にGoogle DriveのURLが入っていませんでしたが、それを表示するようさらに要請したところ、関連する社内規則のファイルURLを正しく回答してきました。これにより、一般的な意味で回答しているのではなく、弊社の社内規則に基いた回答結果が生成されたことがわかります。
ちなみに、これだけやってもGeminiに対する料金は全体で5円も発生していません。
まとめ
本稿では、社内の生成AI付Slackチャットボット「玄米茶」のMCP利用機能を通して、Gemini API File Search Toolを利用し、社内規約をRAGとして検索できるようにしてみた結果を紹介しました。
およそ1年半前に今回と同様のSlackチャットボットにRAGを組み込むという構想をした際は、まだMCPは存在していませんでしたし、RAGを構築するにはさまざまな要素を組み合わせなければならず、オールインワンですぐ使える仕組みも存在していませんでした。そのため構築のハードルが高く、費用の高さも相まって、当時は結局RAG構築を断念していました。
Gemini API File Search ToolはRAGに必要な要素を別途用意せずほぼオールインワンで使えますし、料金もかなり安価です。そして現在はModel Context Protocol (MCP)という共通の仕組みが登場したため、生成AIツールとの連携の学習コストもかなり下がったと言えます。
Gemini API File Search Toolの守備範囲外ですが、現状ではGoogle Drive内が更新された場合に追随する仕組みのない静的なものとなっています。RAGやデータベースの更新は手動で行う必要があります。しかし、社内規則のように、毎時間毎日といった頻繁な更新でなければ、これでも十分に利用可能だと考えています。
今後もGemini API File Search Toolの機能・仕様のアップデートの追跡や、この仕組みの更新を続け、レポートできたらと思います。
