Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】UAJY Handbook RAG Chatbot Splits FAISS Search From Gemini

2026年09月16日に「Dev.to」が公開したITニュース「UAJY Handbook RAG Chatbot Splits FAISS Search From Gemini」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

大学ハンドブックの内容に答えるAIチャットボットが公開された。PDFから抽出した情報をFAISSで検索し、Gemini AIが根拠付きで回答を生成する。誤情報防止機能も備え、実装例として検証できる。ローカル検索とクラウドAIの組み合わせが特徴だ。

ITニュース解説

UAJY Academic Document RAG Chatbotは、インドネシアのUniversitas Atma Jaya Yogyakartaの産業技術学部が発行する2025/2026年度版学術ハンドブックの内容に基づいて、ユーザーの質問に答えるAIチャットボットである。このシステムは、RAG(Retrieval Augmented Generation:検索拡張生成)という技術を用いており、これは大規模言語モデル(LLM)が外部の情報源から関連情報を検索し、その情報を基に回答を生成することで、より正確で信頼性の高い応答を実現する手法だ。開発者にとっては、ドキュメントのデータ取り込みから、関連情報の検索、引用元を明記した回答の生成、さらには不適切な質問に対する拒否制御まで、RAGチャットボットの実装プロセス全体を詳細に学ぶことができる具体的なサンプルとなる。

このチャットボットが情報を処理する最初の段階は、「イングションパイプライン」と呼ばれるデータ取り込みの工程である。まず、ハンドブックのPDFファイルからテキストや表のデータを抽出するために、pdfplumberというツールが使用される。抽出された情報は、意味のある塊である「チャンク」に分割される。例えば、関連する複数の文や一つの段落が、それぞれ個別のチャンクとして扱われる。次に、これらのテキストチャンクは、AIが理解できる数値の形式である「埋め込み(Embedding)」に変換される。このプロジェクトでは、Googleのgemini-embedding-001というモデルが使われ、各チャンクは3,072次元の数値ベクトルとなる。このベクトルは、テキストの意味を数学的に表現したものであり、意味が近いテキストはベクトル空間内で互いに近い位置に配置される。作成された埋め込みベクトルは、FAISS(Facebook AI Similarity Search)という高速な類似性検索ライブラリのインデックスに保存される。このインデックスには、元の情報がハンドブックのどのページや見出しに記載されていたかというメタデータも合わせて記録される。この一連の処理の結果、112ページからなるハンドブックのデータは、検索可能な350個のチャンクとしてインデックスに格納されることになる。

ユーザーがチャットボットに質問をすると、システムの「ランタイム」(実行時)処理が開始される。ユーザーはStreamlitというウェブアプリケーションフレームワークで構築されたインターフェースを通じて質問を入力する。この質問も埋め込みベクトルに変換され、FAISSインデックスに保存されているハンドブックのチャンクの中から、質問の意味内容に最も近い「トップK」個(最も関連性の高い上位数個)のチャンクが高速に検索される。検索によって取得された関連情報と、これまでの会話履歴を組み合わせることで、チャットボットはGoogleのGemini 2.5 Flashという大規模言語モデルに送るための「プロンプト」を作成する。Geminiはこのプロンプトに基づいて回答を生成し、チャットボットはその回答にハンドブックのページ番号や章、セクションのタイトルといった引用元情報を付加してユーザーに提示する。これにより、ユーザーは回答がハンドブックのどの部分に基づいているのかを容易に確認でき、回答の信頼性が向上する。

このチャットボットには、回答の正確性を保つために、サポートされていない質問に対して回答を「拒否する制御」が組み込まれている。これは、AIが事実に基づかない情報、いわゆる「幻覚(ハルシネーション)」を生成するのを防ぐための重要な機能である。一つ目の制御は、質問と検索されたチャンクとの類似度が、事前に設定された「類似性閾値」を下回る場合、そのチャンクを回答生成に使わないというものだ。これにより、関連性の低い情報が回答に混入するのを防ぐ。二つ目の制御は、システムプロンプトを通じてGeminiに与えられる指示である。この指示は、もし取得されたドキュメントのコンテキスト(情報源)だけでは質問に完全に答えられない場合、Geminiに回答を拒否するよう促すものだ。プロジェクトのドキュメントには、これらの制御が幻覚を防ぐための防御策であり、生成される回答は取得されたPDFチャンクの内容にのみ依拠しなければならないと明記されている。

チャットボットの性能は、用意された評価テストによって測定された。プロジェクトのリポジトリには、評価実行ツールと20問のテストファイルが含まれている。このうち15問はハンドブックの内容に関する質問(インスコープ質問)で、残りの5問はハンドブックには記載されていない内容の質問(アウトオブスコープ質問)である。評価結果では、インスコープ質問に対する関連情報検索の精度を示す「Retrieval Recall@4」が100%であった。これは、関連する情報チャンクが常に上位4位以内の検索結果に含まれたことを意味する。アウトオブスコープ質問に対する回答拒否の正確性も100%であり、ハンドブックにない質問に対しては適切に回答を拒否できたことが示されている。システム応答の速度については、情報の検索にかかる平均レイテンシー(遅延時間)が0.42秒、ユーザーへの回答が完全に返されるまでの合計応答レイテンシーは約1.85秒であったと報告されている。これらの数値は、このプロジェクトが公開したテストスイートに基づいた結果である。

このプロジェクトの設計は、その内部動作を具体的に確認できる「検査可能なデザイン」を特徴としている。つまり、RAG技術がどのように実装されているかを開発者がコードを通じて容易に理解できるようになっている。しかし、公開されている評価結果は20問のテストスイートにおける特定の挙動を示しているに過ぎず、「プロダクショングレード」(実運用に耐えうるレベル)や「幻覚なし」といった広範な主張を裏付ける決定的な証拠とは言えない点には留意が必要だ。プロジェクト自身の免責事項も、このチャットボットが教育および情報検索のアシスタントであり、公式な権限は学務部に属すると明記することで、その位置づけを明確にしている。また、このシステムは「ローカル」で動作するコンポーネントと「ホスト型(クラウド)」のコンポーネントが混在しており、この配置にはエンジニアリング上の重要なトレードオフが存在する。具体的には、FAISSインデックスとCPUベースの類似性検索はユーザーのローカル環境で実行されるが、埋め込みの作成や最終的な回答生成にはGoogle GeminiのサービスがAPI経由で利用されるため、システムのセットアップにはGemini APIキーが必要となる。この設計は、ユーザーに対して高速なローカル検索層を提供するものの、完全にローカルで動作するRAGシステムではない。この「分割」が、想定されるデプロイメント環境に適合するかどうかが、今後のエンジニアリング上の重要な判断点となるだろう。ローカルでのベクトル検索が単独で十分かという視点ではなく、システム全体としてこの構成が最適であるかが問われる。

関連コンテンツ

関連IT用語