项目简介

MCP-RAG是一个基于Python的先进系统,它将模型上下文协议(MCP)与检索增强生成(RAG)功能深度融合。该项目提供了一个全面的框架,用于智能网络爬取、内容处理、多模态数据处理、以及通过集成测试和评估系统实现自动化代码演进。它作为一个MCP服务器,以标准化的JSON-RPC协议向LLM客户端提供丰富的功能和上下文。

主要功能点

  • 智能网络爬取: 利用Crawl4AI库进行高级网页抓取,支持网站地图、文本文件和常规网页的智能识别与处理,并将内容分块存储。
  • 多模态处理: 支持文本、图像和结构化数据的内容处理,通过ColPali实现视觉文档理解,并可提取并存储不同类型的信息。
  • 多源LLM与嵌入集成: 无缝集成OpenAI、Ollama和HuggingFace等多种大型语言模型和嵌入模型提供商,提供灵活的AI能力,支持多种嵌入模型和LLM模型。
  • 自动化代码演进: 具备自我改进的代码库,能够进行自动化测试、依赖校验、代码调试和版本控制,实现持续的代码演进和系统自修复。
  • RAG检索增强: 支持向量检索和关键词检索相结合的混合RAG查询,可针对文档内容和代码示例进行高效搜索,并可对结果进行重排序。
  • 安全沙箱与资源管理: 提供安全的沙箱执行环境和资源监控,确保系统稳定与安全,并追踪API成本和系统负载。
  • 性能与质量评估: 内置评估系统,衡量RAG查询的正确性、代码质量等,并能报告系统性能指标和演进趋势。

安装步骤

  1. 前提条件: 确保您的系统已安装 Python 3.8+ 和 SQLite。如果需要本地模型推理,建议配置GPU支持。
  2. 克隆仓库:
    git clone https://github.com/vedantparmar12/MCP-RAG.git
    cd MCP-RAG
  3. 安装依赖: 项目依赖列在 'requirements.txt' 文件中。执行以下命令安装:
    pip install -r requirements.txt
    注意:此命令将安装核心依赖以及所有支持提供商的可选依赖,可能需要较长时间。)
  4. 环境配置:
    • 在项目根目录创建 '.env' 文件。
    • 配置外部API密钥(如OpenAI、Cohere)和Supabase数据库连接字符串。
    • 根据您的需求,设置 'EMBEDDING_PROVIDER', 'LLM_PROVIDER', 'USE_RERANKING', 'USE_AGENTIC_RAG', 'USE_HYBRID_SEARCH', 'ENABLE_OLLAMA', 'ENABLE_HUGGINGFACE' 等环境变量,以启用或配置不同的功能。
    • 示例 '.env' 配置:
      SUPABASE_URL="YOUR_SUPABASE_URL"
      SUPABASE_SERVICE_KEY="YOUR_SUPABASE_SERVICE_KEY"
      OPENAI_API_KEY="YOUR_OPENAI_API_KEY"
      COHERE_API_KEY="YOUR_COHERE_API_KEY"
      EMBEDDING_PROVIDER="openai" # 或 "cohere", "ollama", "huggingface", "auto"
      LLM_PROVIDER="ollama" # 或 "huggingface", "auto"
      USE_RERANKING="true"
      USE_AGENTIC_RAG="true" # 启用代码示例提取和总结
      USE_HYBRID_SEARCH="true"
      ENABLE_OLLAMA="true" # 启用Ollama提供商
      OLLAMA_BASE_URL="http://localhost:11434"
      OLLAMA_LLM_MODEL="mistral:instruct"
      OLLAMA_EMBEDDING_MODEL="nomic-embed-text"
      HOST="0.0.0.0"
      PORT="8051"
      TRANSPORT="sse" # 或 "stdio"
      # 更多HuggingFace配置示例:
      ENABLE_HUGGINGFACE="true"
      HUGGINGFACE_API_TOKEN="YOUR_HUGGINGFACE_API_TOKEN" # 仅当HUGGINGFACE_LLM_USE_API="true"时需要
      HUGGINGFACE_LLM_MODEL="microsoft/Phi-3-mini-4k-instruct"
      HUGGINGFACE_EMBEDDING_MODEL="sentence-transformers/all-MiniLM-L6-v2"
      HUGGINGFACE_LLM_USE_API="false" # 设置为"true"使用HuggingFace Inference API
      HUGGINGFACE_LLM_DEVICE="cpu" # 或 "cuda", "mps"
      HUGGINGFACE_LLM_4BIT="false" # 启用4位量化
      HUGGINGFACE_LLM_8BIT="false" # 启用8位量化

服务器配置(供MCP客户端使用)

MCP客户端需要以下JSON格式的配置信息才能连接到MCP-RAG服务器。请根据您的实际部署环境修改 'working_directory' 和 'env' 中的具体值,特别是API密钥和Supabase凭据等敏感信息。

{
  "server_name": "mcp-crawl4ai-rag",
  "command": "python",
  "args": [
    "src/crawl4ai_mcp.py"
  ],
  "env": {
    "TRANSPORT": "sse",
    "HOST": "0.0.0.0",
    "PORT": "8051",
    "SUPABASE_URL": "YOUR_SUPABASE_URL_HERE",
    "SUPABASE_SERVICE_KEY": "YOUR_SUPABASE_SERVICE_KEY_HERE",
    "OPENAI_API_KEY": "YOUR_OPENAI_API_KEY_HERE",
    "COHERE_API_KEY": "YOUR_COHERE_API_KEY_HERE",
    "EMBEDDING_PROVIDER": "auto",
    "LLM_PROVIDER": "auto",
    "USE_RERANKING": "true",
    "USE_AGENTIC_RAG": "true",
    "USE_HYBRID_SEARCH": "true",
    "ENABLE_OLLAMA": "true",
    "OLLAMA_BASE_URL": "http://localhost:11434",
    "OLLAMA_LLM_MODEL": "mistral:instruct",
    "OLLAMA_EMBEDDING_MODEL": "nomic-embed-text",
    "ENABLE_HUGGINGFACE": "true",
    "HUGGINGFACE_API_TOKEN": "YOUR_HUGGINGFACE_API_TOKEN_HERE",
    "HUGGINGFACE_LLM_MODEL": "microsoft/Phi-3-mini-4k-instruct",
    "HUGGINGFACE_EMBEDDING_MODEL": "sentence-transformers/all-MiniLM-L6-v2",
    "HUGGINGFACE_LLM_USE_API": "false",
    "HUGGINGFACE_LLM_DEVICE": "cpu",
    "HUGGINGFACE_LLM_4BIT": "false",
    "HUGGINGFACE_LLM_8BIT": "false"
  },
  "working_directory": "/path/to/your/MCP-RAG/repository",
  "description": "MCP-RAG服务器,提供RAG、网络爬取和AI自演进功能。请根据实际部署路径修改 'working_directory',并提供所有必要的API密钥、Supabase凭据等环境变量,或在系统环境中预设好。"
}

基本使用方法

  1. 启动服务器: 在项目根目录下,运行MCP服务器。默认情况下,它会监听 '0.0.0.0:8051' 端口并使用 SSE 传输协议。
    python src/crawl4ai_mcp.py
    您可以通过设置 'TRANSPORT' 环境变量为 'stdio' 来使用标准输入输出传输:
    TRANSPORT=stdio python src/crawl4ai_mcp.py
  2. 通过MCP客户端调用工具: 一旦服务器启动,MCP客户端即可通过JSON-RPC协议调用其暴露的工具。MCP-RAG暴露了多种工具,例如用于网络爬取、数据检索、系统自修复等。
    • 示例:智能爬取URL 假设您已设置好MCP客户端并成功连接到MCP-RAG服务器。您可以使用客户端调用 'smart_crawl_url' 工具来智能爬取网页并存储内容:
      # 假设您的MCP客户端对象名为 'mcp_client'
      response = mcp_client.call_tool("smart_crawl_url", {"url": "https://docs.python.org/3/", "max_depth": 2})
      print(response)
    • 示例:获取可用数据源 在执行RAG查询之前,您可以先调用 'get_available_sources' 工具来查看已爬取并存储的数据源:
      response = mcp_client.call_tool("get_available_sources", {})
      print(response)
    • 示例:执行RAG查询 获取数据源后,您可以调用 'perform_rag_query' 工具进行检索增强查询。'source' 参数应使用 'get_available_sources' 返回的 'source_id':
      response = mcp_client.call_tool("perform_rag_query", {"query": "How to define a function in Python?", "source": "docs.python.org"})
      print(response)
    • 示例:系统自修复 如果系统出现问题,可以通过 'self_heal_system' 工具触发自动化诊断和修复流程:
      response = mcp_client.call_tool("self_heal_system", {"issue_description": "The RAG query is returning stale results from the cache."})
      print(response)

信息

分类

AI与计算