Search Engine With Rag And Mcp

Search Engine With Rag And Mcp

🚀 带 RAG 和 MCP 的搜索引擎

这是一个强大的搜索引擎,它结合了 LangChain、模型上下文协议(MCP)、检索增强生成(RAG)和 Ollama,构建了一个代理型 AI 系统。该系统能够进行网络搜索、信息检索,并为用户提供相关答案。

🚀 快速开始

本搜索引擎功能强大且灵活,支持多种使用模式。你可以按照以下安装步骤和使用方法,快速体验其强大功能。

✨ 主要特性

  • 网络搜索功能:使用 Exa API 进行网络搜索,同时利用 FireCrawl 获取网页内容。
  • 信息提取:借助 RAG(检索增强生成)提取更相关的信息。
  • 标准化工具调用:通过 MCP(模型上下文协议)服务器实现标准化的工具调用。
  • 多 LLM 支持:既支持通过 Ollama 使用本地 LLM,也支持通过 OpenAI 使用基于云的 LLM。
  • 灵活架构:支持直接搜索、代理型搜索或服务端模式,满足不同场景需求。
  • 错误处理:具备全面的错误处理机制和优雅的降回策略。
  • 高效执行:采用 Python 3.13+ 并带有类型提示,同时支持异步处理以高效执行网络操作。

📦 安装指南

  1. 克隆仓库
git clone https://github.com/your-username/search-engine-with-rag-and-mcp.git
cd search-engine-with-rag-and-mcp
  1. 安装依赖
pip install -r requirements.txt

💻 使用示例

基础用法

直接搜索模式

  • 运行搜索引擎服务端
python src/main.py serve --mode direct
  • 使用搜索引擎进行查询
python src/main.py search --query "your-query-here"

代理型搜索模式

  • 运行代理服务端
python src/main.py serve --mode agent
  • 通过 API 调用代理进行搜索
curl -X POST http://localhost:8000/agent/search -d '{"query": "your-query-here"}'

MCP 服务器模式

  • 运行 MCP 服务器
python src/main.py serve --mode mcp
  • 通过 HTTP 协议调用 MCP 服务
curl -X POST http://localhost:8001/mcp/execute -d '{"tool": "search", "input": "your-query-here"}'

📚 详细文档

架构

该项目集成了几个关键组件:

  1. 搜索模块:使用 Exa API 进行网络搜索,使用 FireCrawl 获取内容。
  2. RAG 模块:嵌入文档、分块并存储到 FAISS 向量库中。
  3. MCP 服务器:提供标准化协议用于工具调用。
  4. 代理:基于 LangChain 的代理,利用搜索和 RAG 功能。

项目结构

search-engine-with-rag-and-mcp/
├── LICENSE              # MIT 许可证
├── README.md            # 项目文档
├── data/                # 数据目录
├── docs/                # 文档
│   └── env_template.md  # 环境变量文档模板
├── logs/                # 日志文件目录(自动创建)
├── src/                 # 主包(源代码)
│   ├── __init__.py
│   ├── core/            # 核心功能
│   │   ├── __init__.py
│   │   ├── main.py      # 入口点
│   │   ├── search.py    # 网络搜索模块
│   │   ├── rag.py       # RAG 实现
│   │   ├── agent.py     # LangChain 代理
│   │   └── mcp_server.py # MCP 服务器实现
│   └── utils/           # 工具包
└── __init__.py
└── requirements.txt      # 依赖管理

开发

项目遵循以下最佳实践:

  • 代码格式化:使用 black 进行自动格式化,确保编码风格一致。
  • 类型检查:利用 mypy 进行静态类型检查,避免运行时错误。
  • Linting:应用 flake8pylint 进行代码质量控制。
  • 单元测试:采用 pytest 编写和执行单元测试,确保功能正确性。

📄 许可证

项目遵循 MIT 许可证,详细内容请参阅 LICENSE 文件。

致谢

感谢以下项目的贡献:

  • 0 关注
  • 0 收藏,8 浏览
  • system 提出于 2025-09-22 23:30

相似服务问题