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, 安全护栏, 数据脱敏, 测试用例, 请求拦截, 逆向工具