文档检索增强生成服务器

一个基于模型上下文协议(MCP)的检索增强生成(RAG)系统,允许用户导入文档并使用AI进行查询。

  • by aruc-dev
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 aruc-dev/doc-rag-mcp-server

使用说明

RAG MCP服务器文档

一个使用模型上下文协议(MCP)的检索增强生成(RAG)系统,允许您使用AI摄取文档并查询它们。

特性

  • 文件摄入:加载文本文档并创建向量嵌入
  • 语义搜索:使用自然语言查询文档
  • 永久存储:用于持久文档存储的ChromaDB矢量数据库
  • MCP架构:集成LangGraph客户端的FastMCP服务器
  • AI驱动:支持多个AI提供商:
    • Google Gemini用于嵌入和会话AI
    • Ollama负责本地法学硕士执行(注重隐私)

设置

  1. Python要求:

    • 需要Python 3.11或更高版本
    • 这个项目已经用Python 3.11进行了测试
  2. 创建虚拟环境(推荐):

    python3.11 -m venv .venv
    source .venv/bin/activate  # On macOS/Linux
    # or
    .venv\Scripts\activate     # On Windows
    
  3. 安装依赖关系:

    pip install -r requirements.txt
    
  4. 配置LLM提供程序:

    选择Google Gemini(基于云)或Ollama(本地)作为您的法学硕士提供者:

    选项A:谷歌双子座(默认)

    # Copy the example environment file
    cp .env.example .env
    
    # Edit .env and set LLM_PROVIDER=gemini
    # Add your Google Gemini API key
    # Get your API key from: https://makersuite.google.com/app/apikey
    

    选项B:Ollama(当地)

    # Copy the example environment file
    cp .env.example .env
    
    # Edit .env and set LLM_PROVIDER=ollama
    # Make sure Ollama is installed and running locally
    # Install Ollama from: https://ollama.ai
    
  5. 更新.env文件:

    对于谷歌双子座:

    LLM_PROVIDER=gemini
    GOOGLE_GEMINI_API_KEY=your_actual_google_gemini_api_key_here
    

    对于Ollama:

    LLM_PROVIDER=ollama
    OLLAMA_BASE_URL=http://localhost:11434
    OLLAMA_MODEL=llama3.2
    OLLAMA_EMBEDDING_MODEL=nomic-embed-text
    

Ollama设置

如果您选择使用Ollama,请按照以下附加步骤操作:

  1. 安装Ollama:

    # Visit https://ollama.ai and download for your platform
    # Or use package manager (macOS):
    brew install ollama
    
  2. 启动Ollama服务:

    ollama serve
    
  3. 拉动所需型号:

    # Pull the chat model (choose one):
    ollama pull llama3.2  # Recommended: Latest Llama model
    # OR
    ollama pull llama2    # Alternative: Stable Llama2 model
    
    # Pull the embedding model (required):
    ollama pull nomic-embed-text
    

用法

  1. 激活虚拟环境:

    source .venv/bin/activate  # On macOS/Linux
    # or
    .venv\Scripts\activate     # On Windows
    
  2. 启动MCP服务器:

    python rag_mcp_server.py
    
  3. 启动客户端(在单独的终端中):

    # Activate the virtual environment in the new terminal too
    source .venv/bin/activate
    python mcp_client.py
    
  4. 摄入文件:

    You: ingest_document /path/to/your/document.txt
    # OR provide the file path directly:
    You: /Users/username/Documents/sample_doc.md
    
  5. 查询文档:

    You: What are the main topics covered in this document?
    You: How can I get IT support?
    You: What are the working hours?
    
  6. 退出并停用:

    # To exit the client, type 'exit', 'quit', or 'q'
    # To deactivate the virtual environment when done:
    deactivate
    

可用工具

  • ingest_document(file_path: str):将文本文档加载并处理到矢量存储中
  • query_rag_store(query: str):根据查询在矢量存储中搜索相关内容

建筑

  • RAG服务器:基于FastMCP的服务器,提供文档摄取和查询工具
  • 客户端:基于LangGraph的会话代理,支持:
    • 谷歌双子座(基于云)
    • Ollama(本地,注重隐私)
  • 向量存储:ChromaDB用于持久文档存储
  • 嵌入:特定于提供商的嵌入模型:
    • 谷歌双子座: models/embedding-001
    • 奥拉马: nomic-embed-text

故障排除

常见问题

  1. 404 Ollama嵌入错误:

    INFO HTTP Request: POST http://localhost:11434/api/embed "HTTP/1.1 404 Not Found"
    

    解决方案:拉动嵌入模型:

    ollama pull nomic-embed-text
    
  2. ChromaDB重置: 如果您需要清除所有摄入的文件:

    rm -rf rag_chroma_db
    
  3. 在提供商之间切换:

    • 编辑 .env 文件和更改 LLM_PROVIDER
    • 重新启动MCP客户端
    • 如果切换嵌入模型,请清除ChromaDB

测试配置

使用提供的测试脚本验证您的设置:

python test_llm_providers.py

MCP检查员

要检查和调试您的MCP服务器工具和功能:

# Activate virtual environment and run MCP Inspector
source .venv/bin/activate && npx @modelcontextprotocol/inspector /path/to/your/project/.venv/bin/python rag_mcp_server.py

替换 /path/to/your/project/ 根据您的实际项目路径。这将打开一个web界面,您可以在其中:

  • 查看可用工具(ingest_document 和 query_rag_store)
  • 交互式测试工具功能
  • 调试工具模式和响应
  • 验证您的MCP服务器实现

安全

  • API键仅从环境变量加载
  • 这 .env 文件被排除在版本控制之外
  • 永远不要将API密钥提交到存储库

需求

  • Python 3.11+
  • Google Gemini:Google Gemini API密钥
  • 献给Ollama:当地Ollama安装,配备所需型号
  • 中列出的所需软件包 requirements.txt

附加功能

  • 提供商灵活性:在基于云的和本地AI提供商之间切换
  • 隐私选项:使用Olama进行完全本地文档处理
  • 永久存储:ChromaDB维护跨会话的文档嵌入
  • 自动模型检测:服务器会自动为所选提供程序使用正确的嵌入模型