musabdulai-io/secure-rag-kit
GitHub: musabdulai-io/secure-rag-kit
一套内置多层安全防护机制的生产级 RAG 系统,在提供语义搜索和文档管理的同时,主动检测并拦截提示词注入与 PII 泄露风险。
Stars: 0 | Forks: 0
# Secure RAG Kit
一个生产就绪的 RAG(检索增强生成)系统,内置安全防护机制,用于 prompt injection 检测和 PII 过滤。
## 功能
- **语义搜索**:使用 OpenAI embeddings 和 Qdrant 进行基于向量的文档搜索
- **安全防护**:
- **输入防护**:检测 prompt injection、角色操纵、越狱尝试
- **输出防护**:检测并脱敏 PII(电子邮件、社会安全号码、信用卡、API 密钥)
- **速率限制器**:防止滥用和资源耗尽
- **文档管理**:上传、索引和搜索文本文档
- **现代化技术栈**:FastAPI、Next.js、PostgreSQL、Qdrant
## 快速开始
### 前置条件
- Docker 和 Docker Compose
- Python 3.11+
- Node.js 20+
### 安装说明
1. 克隆仓库:
```
git clone https://github.com/musabdulai-io/secure-rag-kit.git
cd secure-rag-kit
```
2. 运行安装脚本:
```
./setup.sh
```
3. 更新您的环境:
```
# 编辑 .env 并添加您的 OPENAI_API_KEY
nano .env
```
4. 启动服务:
```
docker compose up
```
5. 访问应用:
- 前端:http://localhost:3000
- 后端 API:http://localhost:8000
- API 文档:http://localhost:8000/docs
### 填充示例数据
```
docker compose exec backend python -m scripts.seed
```
### 测试安全防护
```
docker compose exec backend python -m scripts.test_security
```
## 架构
```
┌─────────────────────────────────────────────────────────────┐
│ Frontend │
│ (Next.js + MUI) │
└─────────────────────────┬───────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ API Layer │
│ (FastAPI) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Input Guard │ │ Rate Limiter │ │ Output Guard │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────┬───────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌───────────┐ ┌─────────────────┐
│ PostgreSQL │ │ Qdrant │ │ Storage │
│ (Documents) │ │ (Vectors) │ │ (Local/GCS) │
└─────────────────┘ └───────────┘ └─────────────────┘
```
## 安全功能
### 输入防护
检测并阻止:
- 角色操纵(“忽略之前的指令”)
- prompt 提取尝试
- 分隔符注入(```, ###)
- 越狱模式
- 编码攻击(base64)
### 输出防护
检测并脱敏:
- 电子邮件地址
- 电话号码
- 社会安全号码
- 信用卡号
- API 密钥和 token
- IP 地址
### 速率限制器
- 可配置的每个时间窗口的请求数
- 开发环境下在内存中进行
- 在生产环境中已准备好接入 Redis
## API 端点
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| POST | `/api/v1/rag/documents` | 上传文档 |
| GET | `/api/v1/rag/documents` | 列出所有文档 |
| GET | `/api/v1/rag/documents/{id}` | 根据 ID 获取文档 |
| DELETE | `/api/v1/rag/documents/{id}` | 删除文档 |
| POST | `/api/v1/rag/search` | 搜索文档 |
| GET | `/health` | 健康检查 |
## 配置
环境变量(参见 `.env.example`):
| 变量 | 描述 | 默认值 |
|----------|-------------|---------|
| `OPENAI_API_KEY` | OpenAI API 密钥 | 必需 |
| `DATABASE_URL` | PostgreSQL 连接字符串 | 参见 .env.example |
| `QDRANT_URL` | Qdrant 服务器 URL | http://localhost:6333 |
| `RATE_LIMIT_REQUESTS` | 每个时间窗口的最大请求数 | 100 |
| `RATE_LIMIT_WINDOW` | 速率限制时间窗口(秒) | 60 |
## 开发
### 本地开发(IDE 支持)
`./setup.sh` 脚本将设置您的本地环境:
- 创建包含依赖的 Python 虚拟环境
- 安装 Node.js 依赖
- 将 `.env.example` 复制为 `.env`
为了获得 IDE 智能提示,请激活后端 venv:
```
source backend/venv/bin/activate
```
### 数据库迁移
```
docker compose exec backend alembic revision --autogenerate -m "description"
docker compose exec backend alembic upgrade head
```
## 许可证
MIT
## 联系方式
有疑问或想讨论此项目?
- **电子邮件**:[hello@musabdulai.com](mailto:hello@musabdulai.com)
- **预约通话**:[安排会议](https://calendly.com/musabdulai/ai-security-check)
- **网站**:[musabdulai.com](https://musabdulai.com)
标签:AV绕过, FastAPI, MITM代理, RAG, 安全护栏, 数据脱敏, 测试用例, 请求拦截, 逆向工具