PDF检索增强生成系统

一个基于MCP服务器和Chroma向量数据库的PDF检索增强生成系统,允许Claude查询大型PDF文件中的信息。

  • by zeyangxu
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 zeyangxu/local-rag

使用说明

带MCP服务器的PDF RAG系统

该项目实现了一个带有MCP服务器的检索增强生成(RAG)系统,允许Claude访问和查询大型PDF文件中的信息。它使用Chroma作为矢量数据库。

先决条件

  • Node.js(v14或更高版本)
  • npm(v6或更高版本)
  • 安装ChromaDB的Python 3.9+
  • OpenAI API密钥(用于嵌入)

设置

  1. 克隆存储库
  2. 安装依赖项:
    npm install
    
  3. 安装Python依赖项:
    python3 -m pip install chromadb
    
  4. 通过编辑来配置环境变量 .env 文件:
    OPENAI_API_KEY=your_openai_api_key
    PORT=3000  # Port for the MCP server
    

用法

1.添加PDF文件

将您的PDF文件放在 data/pdfs 目录:

data/
  pdfs/
    your-file1.pdf
    your-file2.pdf

2.启动Chroma服务器

启动Chroma数据库服务器:

./start-chroma.sh

或手动:

python3 -m chromadb.cli.cli run --path ./data/chroma_db

这将在以下位置启动Chroma服务器http://localhost:8000.

3.摄取PDF

在新终端中,处理PDF并创建矢量存储:

npm run ingest

这将:

  • 从PDF中提取文本
  • 将文本分割成块
  • 创建嵌入
  • 将矢量存储在Chroma数据库中

4.启动MCP服务器

在另一个终端中,启动服务器:

npm run dev

MCP服务器将在以下地点提供:http://localhost:3000/api/mcp/query

5.查询MCP服务器

您可以使用Claude或REST客户端查询系统:

POST http://localhost:3000/api/mcp/query
Content-Type: application/json

{
  "query": "What does the document say about...",
  "topK": 5  # Optional, number of results to return
}

克劳德集成

通过MCP与Claude一起使用:

  1. 配置Claude以使用MCP端点
  2. 确保Claude可以访问此服务器
  3. 现在,Claude可以通过RAG系统查询您的PDF内容

项目结构

  • src/
    • index.ts -主服务器文件
    • ingest.ts -处理PDF的脚本
    • services/
      • documentProcessor.ts -PDF处理和Chroma数据库操作
      • mcpService.ts -克劳德的MCP服务
    • routes/
      • mcpRoutes.ts -MCP的API路线
    • utils/
      • env.ts -环境变量实用程序
  • data/
    • pdfs/ -PDF文件目录
    • chroma_db/ -Chroma矢量数据库目录
  • start-chroma.sh -启动Chroma服务器的脚本

许可证

麻省理工学院