带有RAG和MCP的搜索引擎
一个强大的搜索引擎,结合了LangChain、模型上下文协议(MCP)、检索增强生成(RAG)和Ollama,创建了一个能够搜索网络、检索信息并提供相关答案的代理人工智能系统。
特性
- 使用Exa API的Web搜索功能
- 使用FireCrawl进行Web内容检索
- RAG(检索增强生成)用于提取更相关的信息
- 用于标准化工具调用的MCP(模型上下文协议)服务器
- 通过Ollama支持本地LLM,通过OpenAI支持基于云的LLM
- 支持直接搜索、基于代理的搜索或服务器模式的灵活架构
- 全面的错误处理和优雅的回退
- 带类型提示的Python 3.13+
- 异步处理实现高效的web操作
建筑
该项目整合了几个关键组成部分:
- 搜索模块:使用Exa API搜索web,使用FireCrawl检索内容
- RAG模块:嵌入文档,将其分块,并将其存储在FAISS矢量存储中
- MCP服务器:为工具调用提供标准化协议
- 代理:基于LangChain的代理,使用搜索和RAG功能
项目结构
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作为参考)
用法
该应用程序有三种主要操作模式:
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 8080使用Olama(可选)
要使用Olama进行本地嵌入和LLM功能:
- 安装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许可证获得许可-请参阅 许可证 文件以获取详细信息。
