init: RAG 知识库服务初始提交

- 后端 API(Flask + Gunicorn)
- RAG 引擎(混合检索 + 云端 Reranker + 引用溯源)
- 文档解析(MinerU + 多格式支持)
- Docker 生产部署配置
- 排除前端项目、敏感配置、模型文件
This commit is contained in:
lacerate551
2026-06-04 17:35:27 +08:00
commit 100d1a06eb
158 changed files with 64534 additions and 0 deletions

134
AGENTS.md Normal file
View File

@@ -0,0 +1,134 @@
# RAG 知识库服务
## 项目定位
RAG 服务负责:
- **向量存储**ChromaDB 向量数据库管理
- **关键词检索**BM25 索引
- **文档解析**PDF/Word/Excel 解析与分块
- **知识库问答**Agentic RAG 问答引擎
- **同步服务**:文档变更检测与向量化
后端服务负责:
- 用户认证与权限控制
- 会话管理与对话历史
- 审计日志与反馈记录
- 业务数据存储
## 虚拟环境 (重要)
本项目虚拟环境目录为 `venv/`,运行 Python 脚本时**必须**使用虚拟环境。
### Codex 中运行脚本
```bash
# 正确方式 - 使用完整路径
"C:/Users/qq318/Desktop/rag-agent/venv/Scripts/python.exe" "C:/Users/qq318/Desktop/rag-agent/脚本名.py"
```
### 用户在 PowerShell 中运行
```powershell
# 方式1: 激活虚拟环境后运行
.\venv\Scripts\Activate.ps1
python main.py
# 方式2: 直接使用虚拟环境 Python
.\venv\Scripts\python.exe main.py
```
## 项目结构
```
├── main.py # 统一启动入口
├── config.py # API 配置(需自行创建)
├── requirements.txt # 依赖列表
├── core/ # RAG 核心引擎
│ ├── agentic.py # AgenticRAG 智能问答
│ ├── bm25_index.py # BM25 关键词检索
│ ├── chunker.py # 语义分块器
│ └── engine.py # 基础检索引擎
├── parsers/ # 文档解析器
│ ├── pdf_odl.py # PDF 解析
│ ├── docx_docling.py # Word 解析
│ └── excel_parser.py # Excel 解析
├── knowledge/ # 知识库管理
│ ├── manager.py # 向量库管理器
│ ├── router.py # 知识库路由
│ └── sync.py # 同步服务
├── exam_pkg/ # 出题系统(无状态)
│ ├── manager.py # 题目生成逻辑
│ └── api.py # 出题接口
├── auth/ # 认证
│ ├── gateway.py # Header 读取
│ └── security.py # 输入/输出安全
├── api/ # API 路由层
│ ├── __init__.py # create_app() 工厂
│ ├── chat_routes.py # 问答接口
│ ├── kb_routes.py # 向量库管理
│ ├── document_routes.py # 文档管理
│ └── sync_routes.py # 同步服务
├── documents/ # 知识库文档目录
├── vector_store/ # 向量数据库 (ChromaDB)
├── chat-ui/ # 前端界面
└── venv/ # 虚拟环境
```
## 快速启动
```powershell
# 安装依赖
.\venv\Scripts\pip install -r requirements.txt
# 启动服务
python main.py # 端口 5001
python main.py --port 8080 # 指定端口
```
## 开发模式
设置环境变量 `DEV_MODE=true`(默认开启)时:
- 支持模拟用户:`Authorization: Bearer mock-token-admin`
- 无需后端网关注入 Header
- 所有核心功能可本地测试
## API 接口概览
### 问答接口
- `POST /chat` - 普通聊天
- `POST /rag` - 知识库问答
- `POST /rag/stream` - 流式问答
- `POST /search` - 混合检索
### 向量库管理
- `GET /collections` - 向量库列表
- `POST /collections` - 创建向量库
- `PUT /collections/<name>` - 修改向量库
- `DELETE /collections/<name>` - 删除向量库
### 文档管理
- `POST /documents/upload` - 上传文件
- `POST /documents/batch-upload` - 批量上传
- `GET /documents/list` - 文档列表
- `DELETE /documents/<path>` - 删除文档
### 切片管理
- `GET /documents/<path>/chunks` - 查看文件切片
- `POST /chunks` - 新增切片
- `PUT /chunks/<id>` - 修改切片
- `DELETE /chunks/<id>` - 删除切片
### 同步服务
- `POST /sync` - 触发同步
- `GET /sync/status` - 同步状态
### 出题接口
- `POST /exam/generate` - 生成题目
- `POST /exam/grade` - 批改答案