SQLite RAG 服务器

一个结合语义搜索与LLM工具集成的全栈RAG系统,支持文档管理、语义搜索和MCP集成。

  • by VansonLeung
  • JavaScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 VansonLeung/interactive_sqlite_rag_mcp

使用说明

集成MCP的交互式SQLite RAG服务器

一个将语义搜索与LLM工具集成相结合的全栈RAG(检索增强生成)系统。使用Node.js、React、SQLite向量搜索和FastMCP构建,实现无缝的AI代理集成。

特性

  • 文档管理:对具有自动向量嵌入的知识文档进行CRUD操作
  • 语义搜索:具有元数据过滤和相似性评分的自然语言搜索
  • 矢量存储器:SQLite具有SQLite-vss扩展,用于高效的向量相似性搜索
  • MCP集成:FastMCP服务器为Claude、OpenAI和其他LLM框架公开rag_search工具
  • 网络界面:用于文档管理和搜索测试的现代React UI
  • 健康监测:实时系统运行状况仪表板
  • 多数据库支持:存储库模式支持PostgreSQL迁移

快速开始

先决条件

  • Node.js 18+ (推荐LTS)
  • npm 9+ 或 纱线1.22+
  • OpenAI API密钥 (用于嵌入)

安装

  1. 克隆存储库

    git clone https://github.com/your-org/interactive-sqlite-rag-mcp.git
    cd interactive-sqlite-rag-mcp
    
  2. 安装后端依赖项

    cd backend
    npm install
    
  3. 安装前端依赖项

    cd ../frontend
    npm install
    

配置

  1. 后端环境变量

    cd backend
    cp .env.example .env
    # Edit .env with your OpenAI API key
    
  2. 前端环境变量 (可选,默认值应适用于开发)

    cd ../frontend
    cp .env.example .env
    

运行应用程序

  1. 启动后端服务器

    cd backend
    npm run dev
    

    服务器将于启动http://localhost:3000

  2. 启动前端(在另一个终端中)

    cd frontend
    npm run dev
    

    前端将从开始http://localhost:5173

  3. 访问应用程序

    • Web界面:http://localhost:5173
    • API文件:http://localhost:3000/api/docs(实施时)
    • MCP服务器:http://localhost:3001(用于LLM集成)

API终点

文件

  • POST /api/documents -创建具有自动嵌入功能的文档
  • GET /api/documents -列出文档(分页)
  • GET /api/documents/:id -按ID获取文档
  • PUT /api/documents/:id -更新文档
  • DELETE /api/documents/:id -删除文档

搜索

  • POST /api/search -带过滤器的语义搜索

健康

  • GET /api/health -系统健康状态

主控程序

  • GET /mcp/tools -列出可用的MCP工具

MCP集成

该系统公开了一个 rag_search LLM框架工具:

{
  "name": "rag_search",
  "description": "Search the knowledge base using semantic similarity",
  "parameters": {
    "query": "string (required)",
    "filters": "object (optional)",
    "limit": "number (optional, default 10)"
  }
}

Claude桌面配置

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "rag-server": {
      "command": "node",
      "args": ["/path/to/interactive-sqlite-rag-mcp/backend/src/mcp/server.js"],
      "env": {
        "OPENAI_API_KEY": "your-api-key"
      }
    }
  }
}

发展

测试

# Backend tests
cd backend
npm test
npm run test:coverage

# Frontend tests
cd frontend
npm test

代码检查

# Backend
cd backend
npm run lint
npm run lint:fix

# Frontend
cd frontend
npm run lint
npm run lint:fix

数据库

# Run migrations
cd backend
npm run migrate

# Seed with sample data
npm run seed

建筑

后端结构

backend/
├── src/
│   ├── models/           # Sequelize models
│   ├── repositories/     # Database abstraction layer
│   │   ├── adapters/     # SQLite/PostgreSQL adapters
│   ├── services/         # Business logic
│   ├── api/              # Express routes & middleware
│   └── mcp/              # FastMCP server
├── tests/                # Test suites
└── migrations/           # Database migrations

前端结构

frontend/
├── src/
│   ├── components/       # React components
│   ├── pages/           # Page components
│   ├── services/        # API clients
│   └── lib/             # Utilities
└── tests/               # Component tests

演出

  • 搜索延迟:对于<1K文档的查询,p95小于200ms
  • 文档创建:<500ms,包括嵌入生成
  • 内存使用:典型工作负载小于512MB
  • 并发用户:支持10+个同时搜索请求

贡献

  1. 遵循项目的 宪法
  2. 实施前编写测试(TDD)
  3. 确保最低80%的测试覆盖率
  4. 通过所有检查
  5. 更新面向用户的更改文档

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

支持

  • 问题:GitHub问题
  • 讨论:GitHub讨论
  • 文档:请参阅文档/目录