返回市场
带有RAG和MCP的搜索引擎

带有RAG和MCP的搜索引擎

作者:arkeodev2 星标更新:2025-04-28

项目介绍

基于RAG和MCP的搜索引擎

一个强大的搜索引擎,结合了LangChain、模型上下文协议(MCP)、检索增强生成(RAG)以及Ollama,创建了一个能够搜索网络、检索信息并提供相关答案的代理AI系统。

特性

  • 使用Exa API进行网络搜索能力
  • 使用FireCrawl检索网页内容
  • 使用RAG(检索增强生成)提取更相关信息
  • 使用MCP(模型上下文协议)服务器标准化工具调用
  • 支持通过Ollama使用本地LLM,以及通过OpenAI使用基于云的LLM
  • 灵活架构支持直接搜索、代理搜索或服务器模式
  • 完整的错误处理和优雅降级
  • 使用Python 3.13+并带有类型提示
  • 异步处理以提高网络操作效率

架构

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

  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
│       ├── env.py       # 环境变量加载
│       └── logger.py    # 日志配置
├── pyproject.toml       # Poetry配置
├── requirements.txt     # 项目依赖
└── tests/               # 测试目录

开始使用

预备条件

  • Python 3.13+
  • Poetry(可选,用于开发)
  • Exa和FireCrawl的API密钥
  • (可选)本地安装Ollama
  • (可选)OpenAI API密钥

安装

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

# 或者使用poetry
poetry install
  1. 创建.env文件(参考docs/env_template.md)

使用

应用程序有三种主要的操作模式:

1. 直接搜索模式(默认)

# 使用pip
python -m src.core.main "你的搜索查询"

# 或者使用poetry
poetry run python -m src.core.main "你的搜索查询"

2. 代理模式

python -m src.core.main --agent "你的搜索查询"

3. MCP服务器模式

python -m src.core.main --server

你也可以指定自定义主机和端口:

python -m src.core.main --server --host 0.0.0.0 --port  8080

使用Ollama(可选)

要使用Ollama进行本地嵌入和LLM能力:

  1. 安装Ollama:https://ollama.ai/
  2. 拉取模型:
ollama pull mistral:latest
  1. 在你的.env文件中设置适当的环境变量:
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=mistral:latest

开发

本项目遵循以下最佳实践:

  • 代码格式化:Black和isort以保持一致的代码风格
  • 类型检查:使用mypy进行静态类型检查
  • 代码质量检查:使用flake8进行代码质量检查
  • 测试:使用pytest进行单元测试和集成测试
  • 环境管理:使用python-dotenv管理环境变量
  • 日志记录:结构化日志记录到控制台和文件

许可证

本项目根据MIT许可证发布 - 查看LICENSE文件获取详细信息。

致谢