Rag chatbot with a localhost MCP server について
アップロードした PDF を基に職場の規則に回答する、RAG ベースの HR チャットボットです。ドキュメント検索、Streamlit のチャット画面、GPT-4 による回答生成を組み合わせています。
主な機能
- 01PDF のアップロードと解析
- 02テキストのチャンク分割
- 03メモリ内でのドキュメント索引
- 04類似度による関連箇所の検索
- 05GPT-4 による回答生成
- 06Streamlit チャット画面
活用シーン
- 01アップロードした職場規則の PDF に質問
- 02索引済みドキュメントから関連箇所を検索
MCP 対応
ローカル MCP サーバーがドキュメントの索引作成、検索、回答生成のツールを連携させます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
localhost MCP サーバーを使用した RAG チャットボット
関数呼び出しのハブとして localhost MCP サーバー を使用し、職場の規則を提供する RAG ベースの人事チャットボットを構築します。

概要
このプロジェクトでは、Streamlit と MCP サーバーを使用した検索拡張生成(RAG)チャットボットを実装します。ユーザーは PDF ファイルをアップロードでき、チャットボットは PDF から関連情報を取得して、自然言語での質問に回答します。このシステムは、OpenAI のモデル、LangChain のユーティリティ、インメモリのベクトルストアを活用し、効率的なドキュメント検索を実現します。
特徴
-
MCP ツールの統合:
MCP によるツールのオーケストレーションにより、ドキュメントのインデックス作成、検索、回答生成の間でスムーズな通信を実現します。バックエンドのツールは、新しい機能の追加に合わせて簡単に拡張または置き換えられます。 -
PDF のアップロードと解析:
PDF ファイルをアップロードすると、PDFPlumberLoaderを使用して解析し、テキストを抽出します。 -
テキストの分割:
抽出したテキストをRecursiveCharacterTextSplitterで小さなチャンクに分割し、効率的なインデックス作成と検索を可能にします。 -
ドキュメントのインデックス作成:
OpenAIEmbeddingsで生成した埋め込みを使用して、チャンクをインメモリのベクトルストアにインデックス化します。 -
類似度検索(コサイン類似度):
ユーザーがクエリを送信すると、チャットボットはクエリに基づいて類似度検索を実行し、最も関連性の高いドキュメントのチャンクを取得します。 -
プロンプトベースの回答生成:
カスタムのプロンプトテンプレートでユーザーの質問と取得したコンテキストを組み合わせ、GPT-4 を搭載した LLM(ChatOpenAIを使用)が最終的な回答を生成します。 -
インタラクティブなインターフェース:
Streamlit を使用し、ユーザーの質問とボットの回答を表示する、チャット形式のインタラクティブなインターフェースを提供します。
結果

コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。