Ritikjain91/marine-rag
GitHub: Ritikjain91/marine-rag
一个生产就绪的多租户安全 RAG 后端,支持 PDF 知识库上传与 AI 问答,具备严格的租户隔离和企业级防护机制。
Stars: 0 | Forks: 0
# Marine RAG — 多租户检索增强生成
一个生产就绪、安全的 RAG 后端,允许多个组织(租户)上传 PDF 知识库并通过 AI 进行查询——具备**严格的租户隔离**和**企业级防护机制**。
## 技术栈
| 层级 | 技术 |
|-------|------------|
| Runtime | Node.js + TypeScript |
| 框架 | Express |
| 数据库 | PostgreSQL + pgvector |
| 缓存 | Redis(带有内存回退机制) |
| AI/ML | OpenAI Embeddings + GPT-4o-mini |
| 校验 | Zod |
| 测试 | Jest + Supertest |
## 核心特性
- **多租户架构** — 共享数据库,基于行级别的租户隔离;从设计上杜绝跨租户访问
- **混合检索** — 结合向量相似度搜索(cosine)与 PostgreSQL 全文搜索(ts_rank)
- **防护机制** — Prompt 注入检测、范围外过滤、低置信度回退以及输入净化
- **JWT 认证 + RBAC** — 带有签名 token 的基于角色的访问控制(`admin` 与 `user`)
- **流式 API** — 基于 Server-Sent Events (SSE) 的实时 LLM token 流式传输
- **Redis 缓存** — 带有自动 TTL 和失效机制的查询结果缓存
- **容器化** — 通过 Docker Compose 一键完成本地环境搭建(Postgres + pgvector + Redis)
## 核心 API
| 方法 | Endpoint | 描述 |
|--------|----------|-------------|
| POST | `/tenant` | 创建新组织 |
| GET | `/tenant/:tenantId` | 获取租户详情 |
| POST | `/tenant/:tenantId/documents` | 上传 PDF(分块 + 生成 Embedding + 存储) |
| GET | `/tenant/:tenantId/documents` | 列出租户文档 |
| DELETE | `/tenant/:tenantId/documents/:id` | 移除文档及向量 |
| POST | `/tenant/:tenantId/query` | 提问(RAG pipeline) |
| GET | `/health` | 服务健康检查 |
## 快速开始
```
# 1. Clone
git clone https://github.com/yourusername/marine-rag.git
cd marine-rag
# 2. 启动 infrastructure
docker-compose up -d
# 3. 安装与运行
npm install
cp .env.example .env
npm run dev
```
标签:DLL 劫持, GNU通用公共许可证, MITM代理, Node.js, PostgreSQL, RAG, 后端开发, 多租户架构, 大语言模型, 搜索引擎查询, 检索增强生成, 测试用例, 请求拦截