xinli/.kiro/specs/local-rag-knowledge-base/requirements.md

151 lines
9.0 KiB
Markdown
Raw Permalink Normal View History

# Requirements Document
## Introduction
本项目旨在为监狱心理评估系统集成本地RAG检索增强生成知识库使用Ollama本地大模型deepseek-r1:32b和向量嵌入模型nomic-embed-text提供专业的心理学分析服务。系统将通过ChromaDB向量数据库存储和检索心理学专业文献结合测评数据生成高质量的综合分析报告同时支持智能问答功能。所有数据处理均在本地完成确保数据安全和隐私保护。
## Glossary
- **RAG系统**: Retrieval-Augmented Generation检索增强生成系统通过检索相关知识来增强大模型的生成能力
- **AI服务**: 基于Python Flask构建的独立AI服务应用提供知识库管理、RAG检索和AI生成功能
- **Spring Boot系统**: 现有的监狱心理评估系统后端基于Java Spring Boot框架
- **ChromaDB**: 轻量级向量数据库,用于存储和检索文档向量
- **Ollama**: 本地大模型运行环境提供API接口
- **向量嵌入模型**: nomic-embed-text模型用于将文本转换为768维向量
- **生成模型**: deepseek-r1:32b模型用于生成分析报告和回答问题
- **知识库文档**: 上传到系统中的心理学专业文献PDF、Word、TXT等格式
- **文档分块**: 将长文档切分成较小的语义单元chunk便于向量化和检索
- **语义检索**: 基于向量相似度的检索方法,找到与查询最相关的文档片段
- **上下文窗口**: 传递给大模型的文本内容,包含检索到的知识和用户数据
- **提示词模板**: 预定义的文本模板,用于构建发送给大模型的提示词
- **测评数据**: 用户完成心理测评后产生的答题记录和评分结果
- **综合报告**: 基于多个测评结果和知识库生成的深度心理分析报告
- **相似度阈值**: 判断检索结果是否相关的最低相似度分数
## Requirements
### Requirement 1
**User Story:** 作为系统管理员,我想要上传心理学专业文献到知识库,以便系统能够基于权威知识进行分析
#### Acceptance Criteria
1. WHEN 管理员上传PDF文档 THEN AI服务 SHALL 解析文档内容并提取纯文本
2. WHEN 管理员上传Word文档 THEN AI服务 SHALL 解析文档内容并提取纯文本
3. WHEN 管理员上传TXT文档 THEN AI服务 SHALL 读取文档内容
4. WHEN 文档解析完成 THEN AI服务 SHALL 将文档按语义段落分块为500到1000字的片段
5. WHEN 文档分块完成 THEN AI服务 SHALL 使用nomic-embed-text模型生成每个分块的768维向量
6. WHEN 向量生成完成 THEN AI服务 SHALL 将向量和元数据存储到ChromaDB中
7. WHEN 文档上传失败 THEN AI服务 SHALL 返回明确的错误信息并保持系统状态不变
### Requirement 2
**User Story:** 作为系统管理员,我想要管理知识库中的文档,以便维护知识库的质量和时效性
#### Acceptance Criteria
1. WHEN 管理员请求文档列表 THEN AI服务 SHALL 返回所有已上传文档的基本信息(文件名、上传时间、分类、大小)
2. WHEN 管理员查看文档详情 THEN AI服务 SHALL 返回文档的完整元数据和分块统计信息
3. WHEN 管理员删除文档 THEN AI服务 SHALL 从ChromaDB中移除该文档的所有向量和元数据
4. WHEN 管理员按分类筛选文档 THEN AI服务 SHALL 返回指定分类下的所有文档
5. WHEN 管理员搜索文档 THEN AI服务 SHALL 支持按文件名模糊匹配返回结果
### Requirement 3
**User Story:** 作为心理咨询师,我想要系统基于知识库生成综合分析报告,以便提供更专业准确的心理评估
#### Acceptance Criteria
1. WHEN 用户请求生成综合报告 THEN AI服务 SHALL 使用nomic-embed-text模型将用户测评数据转换为查询向量
2. WHEN 查询向量生成完成 THEN AI服务 SHALL 从ChromaDB检索相似度最高的5个文档片段
3. WHEN 检索到的片段相似度低于0.7 THEN AI服务 SHALL 过滤掉该片段
4. WHEN 检索完成 THEN AI服务 SHALL 构建包含检索知识、测评数据和用户档案的上下文
5. WHEN 上下文构建完成 THEN AI服务 SHALL 使用deepseek-r1:32b模型生成综合分析报告
6. WHEN 报告生成完成 THEN AI服务 SHALL 返回报告内容和引用的知识来源
7. WHEN 报告生成失败 THEN AI服务 SHALL 返回错误信息并记录日志
### Requirement 4
**User Story:** 作为心理咨询师,我想要向系统提问专业问题并获得基于知识库的回答,以便快速获取专业知识支持
#### Acceptance Criteria
1. WHEN 用户提交问题 THEN AI服务 SHALL 使用nomic-embed-text模型将问题转换为查询向量
2. WHEN 查询向量生成完成 THEN AI服务 SHALL 从ChromaDB检索相似度最高的5个相关文档片段
3. WHEN 检索完成 THEN AI服务 SHALL 构建包含问题和检索知识的提示词
4. WHEN 提示词构建完成 THEN AI服务 SHALL 使用deepseek-r1:32b模型生成回答
5. WHEN 回答生成完成 THEN AI服务 SHALL 返回回答内容和引用的知识来源
6. WHEN 用户进行多轮对话 THEN AI服务 SHALL 保持对话上下文连贯性
### Requirement 5
**User Story:** 作为系统管理员我想要监控AI服务的运行状态以便及时发现和解决问题
#### Acceptance Criteria
1. WHEN 管理员请求系统状态 THEN AI服务 SHALL 返回Ollama连接状态、ChromaDB状态和可用模型列表
2. WHEN 管理员测试Ollama连接 THEN AI服务 SHALL 尝试调用Ollama API并返回连接结果
3. WHEN 管理员查看知识库统计 THEN AI服务 SHALL 返回文档总数、向量总数和存储空间使用情况
4. WHEN AI服务发生错误 THEN AI服务 SHALL 记录详细的错误日志包含时间戳和堆栈信息
### Requirement 6
**User Story:** 作为开发人员我想要Spring Boot系统能够调用AI服务以便在现有业务流程中集成RAG功能
#### Acceptance Criteria
1. WHEN Spring Boot系统调用AI服务生成报告接口 THEN Spring Boot系统 SHALL 通过HTTP POST请求发送测评数据和用户档案
2. WHEN AI服务返回报告 THEN Spring Boot系统 SHALL 解析响应并存储报告内容到MySQL数据库
3. WHEN AI服务调用超时 THEN Spring Boot系统 SHALL 在30秒后返回超时错误
4. WHEN AI服务返回错误 THEN Spring Boot系统 SHALL 记录错误日志并向用户显示友好提示
5. WHEN Spring Boot系统调用AI服务问答接口 THEN Spring Boot系统 SHALL 通过HTTP POST请求发送问题内容
### Requirement 7
**User Story:** 作为系统用户我想要在前端界面管理知识库和查看AI分析结果以便方便地使用RAG功能
#### Acceptance Criteria
1. WHEN 用户访问知识库管理页面 THEN 前端系统 SHALL 显示文档列表和上传按钮
2. WHEN 用户点击上传按钮 THEN 前端系统 SHALL 显示文件选择对话框支持PDF、Word和TXT格式
3. WHEN 用户选择文件并确认上传 THEN 前端系统 SHALL 显示上传进度并在完成后刷新文档列表
4. WHEN 用户查看综合报告 THEN 前端系统 SHALL 显示报告内容和引用的知识来源链接
5. WHEN 用户点击知识来源链接 THEN 前端系统 SHALL 显示原始文档片段的详细信息
6. WHEN 用户使用智能问答功能 THEN 前端系统 SHALL 提供对话界面支持多轮问答
### Requirement 8
**User Story:** 作为系统架构师我想要AI服务独立部署并通过API与Spring Boot系统通信以便保持系统的模块化和可维护性
#### Acceptance Criteria
1. WHEN AI服务启动 THEN AI服务 SHALL 在配置的端口上监听HTTP请求
2. WHEN AI服务接收到请求 THEN AI服务 SHALL 验证请求格式并返回标准JSON响应
3. WHEN Spring Boot系统修改 THEN AI服务 SHALL 继续正常运行不受影响
4. WHEN AI服务修改 THEN Spring Boot系统 SHALL 继续正常运行不受影响
5. WHEN AI服务重启 THEN ChromaDB数据 SHALL 保持完整不丢失
### Requirement 9
**User Story:** 作为数据安全负责人,我想要所有数据处理都在本地完成,以便符合监狱系统的安全要求
#### Acceptance Criteria
1. WHEN AI服务处理文档 THEN AI服务 SHALL 仅在本地服务器上进行处理不发送到外部网络
2. WHEN AI服务生成报告 THEN AI服务 SHALL 仅调用本地Ollama API不访问云端服务
3. WHEN AI服务存储向量 THEN AI服务 SHALL 将数据存储在本地ChromaDB目录中
4. WHEN 系统运行 THEN AI服务 SHALL 不依赖互联网连接即可正常工作
5. WHEN 用户上传文档 THEN AI服务 SHALL 将原始文件存储在本地指定目录中
### Requirement 10
**User Story:** 作为系统管理员,我想要能够重建知识库索引,以便在数据损坏或需要优化时恢复系统
#### Acceptance Criteria
1. WHEN 管理员触发重建索引 THEN AI服务 SHALL 清空现有ChromaDB数据
2. WHEN ChromaDB清空完成 THEN AI服务 SHALL 重新读取所有已上传文档
3. WHEN 文档读取完成 THEN AI服务 SHALL 重新执行分块、向量化和存储流程
4. WHEN 重建过程中 THEN AI服务 SHALL 返回重建进度百分比
5. WHEN 重建完成 THEN AI服务 SHALL 返回成功消息和新的统计信息