# 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*