RAGとMCPを備えた検索エンジン
LangChain、Model Context Protocol (MCP)、Retrieval-Augmented Generation (RAG)、Ollama を組み合わせて、Web を検索し、情報を取得し、関連する回答を提供できるエージェント AI システムを作成する強力な検索エンジンです。
特徴
Exa API を使用した Web 検索機能
FireCrawl を使用した Web コンテンツ検索
より関連性の高い情報抽出のためのRAG(検索拡張生成)
標準化されたツール呼び出しのためのMCP(モデルコンテキストプロトコル)サーバー
Ollama経由のローカルLLMとOpenAI経由のクラウドベースLLMの両方をサポート
直接検索、エージェントベースの検索、またはサーバーモードをサポートする柔軟なアーキテクチャ
包括的なエラー処理と適切なフォールバック
型ヒント付きのPython 3.13+
効率的なWeb操作のための非同期処理
Related MCP server: MPC Docs Server
建築
このプロジェクトでは、いくつかの重要なコンポーネントが統合されています。
検索モジュール: Exa API を使用して Web を検索し、FireCrawl を使用してコンテンツを取得します。
RAGモジュール: ドキュメントを埋め込み、チャンク化し、FAISSベクトルストアに保存します。
MCPサーバー:ツール呼び出しのための標準化されたプロトコルを提供します
エージェント: 検索とRAG機能を使用するLangChainベースのエージェント
プロジェクト構造
search-engine-with-rag-and-mcp/
├── LICENSE # MIT License
├── README.md # Project documentation
├── data/ # Data directories
├── docs/ # Documentation
│ └── env_template.md # Environment variables documentation
├── logs/ # Log files directory (auto-created)
├── src/ # Main package (source code)
│ ├── __init__.py
│ ├── core/ # Core functionality
│ │ ├── __init__.py
│ │ ├── main.py # Main entry point
│ │ ├── search.py # Web search module
│ │ ├── rag.py # RAG implementation
│ │ ├── agent.py # LangChain agent
│ │ └── mcp_server.py # MCP server implementation
│ └── utils/ # Utility modules
│ ├── __init__.py
│ ├── env.py # Environment variable loading
│ └── logger.py # Logging configuration
├── pyproject.toml # Poetry configuration
├── requirements.txt # Project dependencies
└── tests/ # Test directoryはじめる
前提条件
Python 3.13以上
詩(オプション、開発用)
Exa と FireCrawl の API キー
(オプション)Ollamaをローカルにインストール
(オプション)OpenAI APIキー
インストール
リポジトリをクローンする
git clone https://github.com/yourusername/search-engine-with-rag-and-mcp.git
cd search-engine-with-rag-and-mcp依存関係をインストールする
# Using pip
pip install -r requirements.txt
# Or using poetry
poetry install.envファイルを作成します (docs/env_template.md を参照として使用します)
使用法
アプリケーションには主に 3 つの動作モードがあります。
1. ダイレクト検索モード(デフォルト)
# Using pip
python -m src.core.main "your search query"
# Or using poetry
poetry run python -m src.core.main "your search query"2. エージェントモード
python -m src.core.main --agent "your search query"3. MCPサーバーモード
python -m src.core.main --serverカスタムホストとポートを指定することもできます。
python -m src.core.main --server --host 0.0.0.0 --port 8080Ollamaの使用(オプション)
ローカル埋め込みと LLM 機能に Ollama を使用するには:
Ollamaをインストール: https://ollama.ai/
モデルをプルします:
ollama pull mistral:latest.envファイルで適切な環境変数を設定します。
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=mistral:latest発達
このプロジェクトは、次のベスト プラクティスに従います。
コードフォーマット: 一貫したコードスタイルのための黒とisort
型チェック: 静的型チェック用の mypy
リンティング: コード品質のためのflake8
テスト: 単体テストと統合テスト用の pytest
環境管理: 環境変数を管理するための python-dotenv
ログ記録: コンソールとファイルの両方に構造化されたログ記録
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。
謝辞
エージェントフレームワークのLangChain
標準化されたツール呼び出しのためのモデルコンテキストプロトコル
ローカルLLM機能のためのOllama
ウェブ検索機能のExa
ウェブコンテンツ検索のためのFireCrawl