项目简介
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 处理、问答、摘要和目录管理等能力。
安装步骤
- 安装 DocsRay:
pip install docsray - 下载必需的模型: 这是运行 DocsRay 的核心步骤,模型文件较大(约 8GB)。
你也可以使用 'docsray download-models --check' 来检查模型状态。docsray download-models - (可选)启用 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
- Metal (Apple Silicon):
服务器配置(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 客户端中进行。
-
启动 MCP 服务器: 在命令行运行:
docsray mcp服务器会在后台等待 MCP 客户端连接并发送 JSON-RPC 请求。请保持此命令行窗口开启。
-
在 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与计算