Files
rag/docs/RAG需求负责清单.md
lacerate551 cb75b9b274 fix(boundary): 修复多库边界问题、版本管理及删除清理
多库检索与存储修复:
- RRF 融合去重改用 (collection, chunk_id) 复合键,修复同名文件结果被吞
- DocStore 存储路径加 collection 前缀,修复跨库同名切片数据覆盖
- search_multiple 去重改用复合键
- chunk_id 解析改用 rsplit 兼容下划线文件名

上传与版本管理修复:
- 同名文件上传改为覆盖模式,自动清理旧切片
- 修复首次上传不创建版本记录
- 修复覆盖上传版本号回退到 v1
- sync ADDED 分支改用动态版本号生成
- _generate_version_id 改为基于全部版本递增
- 废止/恢复操作同步 SQLite 版本记录
- mark_document_as_superseded 改为仅更新 SQLite

删除清理修复:
- 删除文档时同步清理 SQLite 版本记录和变更日志
- 删除向量库时同步清理该库所有版本记录
- cleanup 改为清理 SQLite 记录而非 ChromaDB

测试:
- test_version_management.py: 27 条版本管理单元测试
- test_edge_cases.py: 28 条边界用例测试
- test_upload_dedup.py: 5 条上传去重测试
- e2e_risk_test.py: 27 条端到端风险测试

文档:
- 新增风险边界问题修复注意事项.md(面向后端的对接文档)
- 新增向量库边界风险分析.md
- 更新多篇现有文档
2026-06-04 23:58:44 +08:00

353 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
**代码位置:** `core/engine.py`
- `search_knowledge()`: 混合检索主函数
- `reciprocal_rank_fusion()`: RRF融合
- `rerank_results()`: 重排序
### ✅ GKPT-AI-011: 多轮智能对话(已实现)
**已实现内容:**
- SQLite会话存储
- 上下文历史管理最近10轮
- Agentic RAG自动上下文传递
- 会话列表、历史查询、删除会话
**代码位置:** `services/session.py`, `core/agentic.py`
- `SessionManager`: 会话管理器
- `AgenticRAG.process()`: 多轮对话处理
### ✅ GKPT-AI-012: 答案溯源(已实现)
**已实现内容:**
- 返回来源文件名和页码
- 置信度评估(高/中/低)
- 来源去重和合并显示
**代码位置:** `core/engine.py`, `core/agentic.py`
- `generate_answer()`: 包含置信度评估(`core/engine.py`
- `_extract_sources()`: 来源提取(`core/agentic_citation.py`
### ⚠️ GKPT-KB-008: 知识库自动同步(部分实现)
**已实现内容:**
- `sync_documents()`: 增量更新文档
- 文件哈希/版本号检测(待完善)
- BM25索引重建
**缺少内容:**
- 自动触发机制(需要文件监控)
- 向量增量更新(目前是重建)
- 用户订阅和推送通知
- 变更日志记录
### ✅ GKPT-EXAM-015: AI智能出题已实现
**已实现内容:**
- Dify工作流集成
- 选择题、填空题、简答题生成
- 试卷管理(草稿/审核/通过状态)
- 批阅报告生成
**代码位置:** `exam_pkg/manager.py`, `exam_pkg/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-06-04*
*项目版本: v7.0.0*