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

View File

@@ -0,0 +1,352 @@
# RAG系统构建 - 需求负责清单
> 基于功能需求规格文档梳理RAG系统构建部分的功能点
## 核心RAG功能直接负责
### GKPT-AI-010: RAG向量数据库 [高优先级]
| 属性 | 内容 |
|-----|------|
| **功能描述** | 采用检索增强生成技术,结合向量数据库和大语言模型,实现高准确率的制度问答 |
| **使用频率** | 高 |
| **限制条件** | 向量数据库需支持十万级向量,具备合规性和数据安全要求 |
| **输入** | 用户问题 |
| **输出** | 检索结果、生成答案 |
| **处理流程** | 用户提问 → 混合检索(关键词+语义+结构化)→ 获取相关文本块 → 组装上下文 → 调用大模型生成答案 → 返回 |
| **技术要点** | 混合检索确保准确性和全面性 |
### GKPT-AI-011: 多轮智能对话 [高优先级]
| 属性 | 内容 |
|-----|------|
| **功能描述** | 支持与用户进行多轮对话,理解上下文,处理复杂问题,避免"幻觉"回答 |
| **使用频率** | 高 |
| **限制条件** | 上下文长度依据大模型限制最近10轮复杂问题拆解依赖模型能力 |
| **输入** | 用户连续提问 |
| **输出** | 基于上下文的回答 |
| **处理流程** | 用户提问 → 系统获取当前会话历史 → 结合上下文检索 → 生成答案 → 保存会话记录 |
### GKPT-AI-012: 答案溯源 [中优先级]
| 属性 | 内容 |
|-----|------|
| **功能描述** | 每个回答标注引用来源,并提供置信度评分,确保答案的可信度和可核实性 |
| **限制条件** | 跳转原文需阅读器支持锚点定位;置信度评分基于检索相似度与模型置信度综合 |
| **输出** | 带来源标注的答案、置信度、跳转链接 |
| **处理流程** | 生成答案时 → 记录检索到的文本块及其元数据 → 构建来源列表 → 计算置信度 → 返回给前端展示 |
| **备注** | 低置信度答案≤0.6)需人工复核 |
### GKPT-AI-013: 问答质量闭环 [低优先级]
| 属性 | 内容 |
|-----|------|
| **功能描述** | 通过用户反馈和定期分析持续优化问答质量沉淀FAQ |
| **输入** | 用户点赞/踩反馈、问答记录 |
| **输出** | 质量分析报告、FAQ列表 |
| **处理流程** | 用户反馈 → 记录反馈 → 定期统计 → 生成报告 → 管理员优化检索/提示词/知识库 → 沉淀FAQ |
| **备注** | 报告周期可配置(周/月) |
---
## 知识库相关(部分负责)
### GKPT-KB-008: 知识库自动同步 [高优先级]
| 属性 | 内容 |
|-----|------|
| **功能描述** | 制度文件变更后,自动触发知识库(向量库)更新,并向相关用户推送更新提醒 |
| **限制条件** | 需要维护文件哈希或版本号以识别变更;对于大文件,增量更新依赖文本差异算法 |
| **输入** | 制度变更内容(新增/修改/废止) |
| **输出** | 向量库更新状态、更新提醒通知 |
| **处理流程** | 制度变更 → 系统检测变更 → 执行增量向量化 → 替换旧向量 → 记录日志 → 推送提醒 |
| **性能要求** | 增量更新耗时≤10分钟 |
### GKPT-EXAM-009: 题库智能维护 [高优先级]
| 属性 | 内容 |
|-----|------|
| **功能描述** | 监控制度变更,自动识别受影响题目,并辅助生成新题,确保考试内容时效性 |
| **限制条件** | 题目与制度关联需通过标签或版本号建立AI生成题目需人工审核 |
| **输入** | 制度变更内容、旧题目库 |
| **输出** | 受影响题目列表、AI新题建议、试卷模板更新 |
| **处理流程** | 制度变更 → 扫描关联题目 → 标记受影响题目 → AI生成新题目 → 管理员审核 → 更新试卷模板 |
| **性能要求** | AI生成题目≤30秒/题 |
---
## 阅读辅助功能(可能涉及)
### GKPT-READ-001: 智能PDF阅读器 [高优先级]
| RAG相关 | 全文检索可能依赖RAG索引 |
|---------|------------------------|
| 需确认 | 是否需要RAG系统提供全文检索接口 |
### GKPT-READ-005: 关联推荐 [中优先级]
| 属性 | 内容 |
|-----|------|
| **功能描述** | 基于当前阅读的制度内容,智能推荐相关的其他制度、知识库文章 |
| **限制条件** | 推荐仅基于已有标签和全文检索,不涉及复杂用户行为分析 |
| **输入** | 当前制度文件ID、用户阅读行为 |
| **输出** | 推荐制度列表(标题、摘要、相关性标签) |
| **处理流程** | 用户打开制度 → 系统提取制度关键词/标签 → 检索知识库相似文件 → 返回推荐列表 |
| **RAG相关** | 可能用到向量相似度检索 |
---
## 生成类功能(可能涉及)
### GKPT-EXAM-015: AI智能出题 [高优先级]
| 属性 | 内容 |
|-----|------|
| **功能描述** | 利用AI从制度文本中自动提取关键信息生成多种题型的题目 |
| **输入** | 制度文本、题型、数量、难度 |
| **输出** | 题目列表(含题干、选项、答案、解析) |
| **RAG相关** | 需要从制度文本检索关键信息可能需要RAG支持 |
| **性能要求** | 支持批量生成一次最多10题 |
### GKPT-EXAM-018: AI自动阅卷 [中优先级]
| 属性 | 内容 |
|-----|------|
| **功能描述** | 客观题自动判分,主观题基于语义相似度智能评分,并提供评语 |
| **输入** | 考生答卷、标准答案 |
| **输出** | 成绩、各题得分、评语 |
| **RAG相关** | 主观题语义评分可能用到向量相似度 |
| **备注** | 填空支持同义词匹配(如"三日"="3天" |
### GKPT-MIND-020: 自动化纲要生成 [高优先级]
| 属性 | 内容 |
|-----|------|
| **功能描述** | AI自动提取制度文件的章节结构、核心要点生成可交互的思维导图 |
| **限制条件** | 依赖制度文件有明确的结构化标题 |
| **输入** | 制度文件内容 |
| **输出** | 思维导图结构化数据(节点树) |
| **RAG相关** | AI解析制度文件结构可能需要RAG辅助 |
| **性能要求** | 生成时间≤10秒10页以内 |
---
## 核心交付物总结
### 1. 向量数据库建设
- [ ] 支持**十万级向量**存储
- [ ] 混合检索能力:关键词 + 语义 + 结构化
- [ ] 向量库选型ChromaDB / Milvus / Pinecone
### 2. 知识库同步机制
- [ ] 制度变更检测
- [ ] 增量向量化≤10分钟完成
- [ ] 文本差异算法处理大文件
### 3. 问答系统
- [ ] RAG检索增强生成
- [ ] 多轮对话上下文管理
- [ ] 答案溯源与置信度评分
### 4. 对外接口(供前端/后端调用)
- [ ] 问答接口(输入问题 → 返回答案+来源)
- [ ] 向量同步接口(制度变更时触发)
- [ ] 推荐接口(相似制度检索)
---
## 功能优先级排序
| 优先级 | 功能编号 | 功能名称 | 状态 | 已实现内容 |
|--------|---------|---------|------|-----------|
| 🔴 高 | GKPT-AI-010 | RAG向量数据库 | ✅ 已实现 | ChromaDB + BM25 + Rerank混合检索 |
| 🔴 高 | GKPT-AI-011 | 多轮智能对话 | ✅ 已实现 | SQLite会话管理最近10轮上下文 |
| 🔴 高 | GKPT-KB-008 | 知识库自动同步 | ⚠️ 部分实现 | 有sync_documents()增量更新,缺自动触发和推送 |
| 🔴 高 | GKPT-EXAM-009 | 题库智能维护 | ⚠️ 部分实现 | 有出题系统,缺制度变更检测和关联题目识别 |
| 🔴 高 | GKPT-EXAM-015 | AI智能出题 | ✅ 已实现 | Dify工作流出题支持选择题/填空题/简答题 |
| 🔴 高 | GKPT-MIND-020 | 自动化纲要生成 | ❌ 未实现 | - |
| 🟡 中 | GKPT-AI-012 | 答案溯源 | ✅ 已实现 | 返回来源文件、页码,置信度评分 |
| 🟡 中 | GKPT-READ-005 | 关联推荐 | ❌ 未实现 | - |
| 🟡 中 | GKPT-EXAM-018 | AI自动阅卷 | ⚠️ 部分实现 | 有批阅报告,缺主观题语义评分 |
| 🟢 低 | GKPT-AI-013 | 问答质量闭环 | ❌ 未实现 | - |
---
## 已实现功能详细分析
### ✅ GKPT-AI-010: RAG向量数据库已实现
**已实现内容:**
- ChromaDB向量数据库存储
- BGE-base-zh-v1.5本地向量模型
- BM25关键词检索
- RRF融合算法向量+BM25
- BGE-reranker-base重排序
- 支持10万级向量
- 权限过滤security_level
**代码位置:** `rag_demo.py`
- `search_knowledge()`: 混合检索主函数
- `reciprocal_rank_fusion()`: RRF融合
- `rerank_results()`: 重排序
### ✅ GKPT-AI-011: 多轮智能对话(已实现)
**已实现内容:**
- SQLite会话存储
- 上下文历史管理最近10轮
- Agentic RAG自动上下文传递
- 会话列表、历史查询、删除会话
**代码位置:** `session_manager.py`, `agentic_rag.py`
- `SessionManager`: 会话管理器
- `AgenticRAG.process()`: 多轮对话处理
### ✅ GKPT-AI-012: 答案溯源(已实现)
**已实现内容:**
- 返回来源文件名和页码
- 置信度评估(高/中/低)
- 来源去重和合并显示
**代码位置:** `rag_demo.py`, `agentic_rag.py`
- `generate_answer()`: 包含置信度评估
- `_extract_sources()`: 来源提取
### ⚠️ GKPT-KB-008: 知识库自动同步(部分实现)
**已实现内容:**
- `sync_documents()`: 增量更新文档
- 文件哈希/版本号检测(待完善)
- BM25索引重建
**缺少内容:**
- 自动触发机制(需要文件监控)
- 向量增量更新(目前是重建)
- 用户订阅和推送通知
- 变更日志记录
### ✅ GKPT-EXAM-015: AI智能出题已实现
**已实现内容:**
- Dify工作流集成
- 选择题、填空题、简答题生成
- 试卷管理(草稿/审核/通过状态)
- 批阅报告生成
**代码位置:** `exam_manager.py`, `exam_api.py`
### ⚠️ GKPT-EXAM-018: AI自动阅卷部分实现
**已实现内容:**
- 客观题自动判分
- 批阅报告生成
- 批阅记录存储
**缺少内容:**
- 主观题语义相似度评分
- 同义词匹配(如"三日"="3天"
- AI评语生成
---
## 待开发功能详细分析
### 🔴 GKPT-MIND-020: 自动化纲要生成(未实现)
**需求回顾:**
- AI自动提取制度文件的章节结构、核心要点
- 生成可交互的思维导图
- 支持导出图片/PDF
**开发建议:**
1. 使用LLM提取文档结构
2. 生成JSON格式节点树
3. 前端使用思维导图库渲染如D3.js/ECharts
### 🔴 GKPT-KB-008完善: 知识库自动同步
**缺少内容:**
1. 文件监控watchdog库
2. 增量向量化(检测变更部分)
3. 用户订阅机制
4. 推送通知WebSocket/邮件)
### 🔴 GKPT-EXAM-009: 题库智能维护
**需要开发:**
1. 制度变更检测(版本号/哈希比对)
2. 题目与制度关联标签
3. 受影响题目自动标记
4. AI生成新题目建议
### 🟡 GKPT-READ-005: 关联推荐
**需要开发:**
1. 基于标签的相似度计算
2. 基于向量相似度推荐
3. 推荐侧边栏组件
### 🟢 GKPT-AI-013: 问答质量闭环
**需要开发:**
1. 用户反馈接口(点赞/点踩)
2. 反馈数据存储
3. 质量分析报告生成
4. FAQ自动沉淀
---
## 架构建议
### 对外接口设计
```python
# RAG核心接口已实现
POST /rag # 知识库问答
POST /search # 混合检索
# 需要新增的接口
POST /sync # 触发知识库同步
GET /sync/status # 同步状态
POST /feedback # 用户反馈
GET /recommend # 关联推荐
POST /outline # 生成纲要
```
### 数据库扩展
```sql
-- 用户订阅表(需新增)
CREATE TABLE subscriptions (
id INTEGER PRIMARY KEY,
user_id TEXT,
document_id TEXT,
created_at TIMESTAMP
);
-- 反馈记录表(需新增)
CREATE TABLE feedbacks (
id INTEGER PRIMARY KEY,
session_id TEXT,
query TEXT,
answer TEXT,
rating INTEGER, -- 1=赞, -1=踩
reason TEXT,
created_at TIMESTAMP
);
-- 制度版本表(需新增)
CREATE TABLE document_versions (
id INTEGER PRIMARY KEY,
document_id TEXT,
version TEXT,
content_hash TEXT,
updated_at TIMESTAMP
);
```
---
*文档更新时间: 2026-04-06*
*项目版本: v4.2.0*