RAG与MCP搜索引擎

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

  • by arkeodev
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 arkeodev/search-engine-with-rag-and-mcp

使用说明

带有RAG和MCP的搜索引擎

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

特性

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

建筑

该项目整合了几个关键组成部分:

  1. 搜索模块:使用Exa API搜索web,使用FireCrawl检索内容
  2. RAG模块:嵌入文档,将其分块,并将其存储在FAISS矢量存储中
  3. MCP服务器:为工具调用提供标准化协议
  4. 代理:基于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密钥

安装

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

# Or using poetry
poetry install
  1. 创建一个 .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功能:

  1. 安装Ollama:https://ollama.ai/
  2. 拉一个模型:
ollama pull mistral:latest
  1. 在您的 .env 文件:
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=mistral:latest

发展

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

  • 代码格式化:黑色和isort,代码风格一致
  • 类型检查:mypy用于静态类型检查
  • 代码检查:flake8用于代码质量
  • 测试:pytest用于单元和集成测试
  • 环境管理:用于管理环境变量的python dotenv
  • 日志记录:控制台和文件的结构化日志记录

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

致谢