项目简介

DocsRay 是一个强大的 PDF 问答系统,它结合了先进的检索增强生成 (RAG) 方法和多模态 AI 能力,可以理解文档中的文本、图像和图表。除了提供 Web UI、API 和 CLI 接口外,DocsRay 还实现了一个基于 Model Context Protocol (MCP) 的服务器,允许兼容的 LLM 客户端(如 Claude Desktop)利用 DocsRay 的能力来理解和查询 PDF 文档,为 LLM 提供丰富的文档上下文。

主要功能点

  • PDF 内容提取与分析: 从 PDF 中提取文本,并使用多模态 AI 分析图像、图表等视觉内容,甚至进行基于 LLM 的 OCR。
  • 高效 RAG: 采用粗粒度到细粒度的搜索方法,结合向量嵌入,实现精准的文档检索和问答。
  • 目录管理: 管理 PDF 文件目录,支持加载和处理指定目录下的 PDF。
  • 缓存机制: 对已处理的 PDF 数据(文本、索引、摘要)进行缓存,提高加载速度。
  • 文档摘要: 生成结构化的文档摘要。
  • 多模型支持: 使用多种本地运行的嵌入模型和 LLM 模型(需下载)。
  • MCP 接口: 通过 MCP 协议向 LLM 客户端提供 PDF 处理、问答、摘要和目录管理等能力。

安装步骤

  1. 安装 DocsRay:
    pip install docsray
  2. 下载必需的模型: 这是运行 DocsRay 的核心步骤,模型文件较大(约 8GB)。
    docsray download-models
    你也可以使用 'docsray download-models --check' 来检查模型状态。
  3. (可选)启用 GPU 支持: 如果你的系统有兼容的 GPU (NVIDIA CUDA 或 Apple Metal),可以安装 'llama-cpp-python' 的 GPU 版本以加速。
    • Metal (Apple Silicon):
      CMAKE_ARGS=-DLLAMA_METAL=on FORCE_CMAKE=1 pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir
    • CUDA (NVIDIA):
      CMAKE_ARGS=-DGGML_CUDA=on FORCE_CMAKE=1 pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir

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

DocsRay 的 MCP 服务器是设计给支持 MCP 协议的 LLM 客户端调用的,例如 Claude Desktop。客户端需要知道如何启动 DocsRay MCP 服务器。

通常,LLM 客户端的 MCP 配置信息需要以下关键参数:

  • server name: 服务器的标识名称,例如 'docsray'。
  • command: 用于启动 DocsRay MCP 服务器的可执行文件或脚本路径。通常是你的 Python 解释器路径。
  • args: 传递给 'command' 的参数列表。对于 DocsRay MCP 服务器,你需要传递 MCP 服务器脚本的路径作为参数。

对于 Claude Desktop 用户:

DocsRay 提供了一个便捷命令来自动配置 Claude Desktop 的 MCP 设置文件:

docsray configure-claude

运行此命令后,它会自动找到你的 Python 解释器路径和 DocsRay 的 'mcp_server.py' 脚本路径,并将它们写入 Claude Desktop 的配置文件 ('claude_desktop_config.json') 中。配置文件通常位于操作系统特定的用户应用数据目录(例如 macOS 的 '~/Library/Application Support/Claude' 或 Windows 的 '%APPDATA%\Claude')。

配置完成后,请务必重启 Claude Desktop 以加载新的 MCP 服务器配置。

对于其他 MCP 客户端用户:

你需要手动创建或修改客户端的 MCP 配置文件,添加一个条目来指向你的 Python 解释器和 DocsRay 安装目录中的 'mcp_server.py' 文件。具体配置格式请参考你使用的 MCP 客户端文档。

  • command: 你的 Python 解释器完整路径(例如 '/usr/local/bin/python3' 或 'C:\Python310\python.exe')。
  • args: DocsRay 安装目录下的 'mcp_server.py' 脚本的完整路径。你可以在 Python 环境中通过 'import docsray; print(docsray.file)' 找到 DocsRay 包的位置,然后找到 'mcp_server.py'。

基本使用方法

DocsRay 的 MCP 服务器不是一个直接交互的终端程序,它通过标准 I/O 接口与 MCP 客户端通信。启动服务器后,所有交互都在 MCP 客户端中进行。

  1. 启动 MCP 服务器: 在命令行运行:

    docsray mcp

    服务器会在后台等待 MCP 客户端连接并发送 JSON-RPC 请求。请保持此命令行窗口开启。

  2. 在 MCP 客户端中使用: 打开你配置好的 MCP 客户端(例如 Claude Desktop)。客户端应该能检测到并连接到 DocsRay MCP 服务器。在客户端的聊天界面中,你可以通过自然语言或特定的命令格式调用 DocsRay 提供的工具。例如(这些是 Claude Desktop 中可能触发 DocsRay 工具的示例文本,具体取决于客户端的实现):

    • 询问当前 PDF 目录:'What's my current PDF directory?'
    • 列出目录下的 PDF:'List all PDFs in my current directory.' 或 'Show me the PDF files in /path/to/my/docs'.
    • 加载并处理一个 PDF:'Load the PDF named "my_document.pdf"'.
    • 询问已加载 PDF 的问题:'What are the main findings in this document?' 或 'Tell me about the methodology described?'.
    • 生成摘要:'Summarize this document'.
    • 获取目录信息:'Show me information about /path/to/pdfs'.

通过这些工具,LLM 客户端可以将用户的关于 PDF 的请求转发给 DocsRay MCP 服务器处理,并将 DocsRay 返回的结果整合到 LLM 的回复中。

信息

分类

AI与计算