# 课程知识图谱与个性化伴学Agent **Repository Path**: software_project_training/CurriculumAccompanying ## Basic Information - **Project Name**: 课程知识图谱与个性化伴学Agent - **Description**: 选题内容:针对特定专业课程,构建基于RAG的智能伴学系统,提供精准的课程答疑与复习规划 知识库构建:自动解析课程PPT、PDF讲义,进行分块与向量化存储 精准问答:采用混合检索,结合大模型生成带原文引用的回答,杜绝幻觉 错题分析:学生上传错题照片,Agent自动提取知识点,推送相关复习资料 特色功能:支持“苏格拉底式”引导提问,不直接给答案,而是通过反问引导学生思考;自动生成期末复习思维导图 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-12 - **Last Updated**: 2026-10-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 课程知识图谱与个性化伴学 Agent > Curriculum Accompanying Agent —— 基于 RAG 的智能课程答疑与复习规划系统 针对特定专业课程构建的智能伴学系统:自动解析课程 PPT / PDF 讲义,构建向量知识库, 提供**带原文引用的精准问答**、**错题分析与复习推送**、**苏格拉底式引导提问**、 **期末复习思维导图**等能力,并配套**教师后台管理**,形成完整的客户端-服务端业务系统。 --- ## 一、技术栈 | 层次 | 技术选型 | | --- | --- | | 前端 | Vue 3 + Vite 5 + Element Plus + Vue Router 4 + Pinia + Axios + ECharts | | 后端 | Java 21 + Spring Boot 3.2 + MyBatis-Plus + Sa-Token + Knife4j | | 数据库 | MySQL 8.x(业务数据)+ Redis(可选,会话/缓存) | | 向量库 | Milvus(语义向量检索) | | 全文检索 | Elasticsearch 8(关键词检索) | | 大模型 | LangChain4j + Ollama(本地)/ 云端 API(可切换) | | 文档解析 | PDFBox(PDF)+ Apache POI(PPT/PPTX) | | OCR | Tess4J(错题图片识别) | | 文件存储 | MinIO(可选,也可本地存储) | --- ## 二、目录结构 ``` CurriculumAccompanying/ ├── backend/ # Spring Boot 后端 │ ├── pom.xml │ └── src/main/ │ ├── java/com/coursecomp/ │ │ ├── CurriculumAccompanyApplication.java │ │ ├── common/ # 通用:统一响应/异常/常量/工具/基础实体 │ │ ├── config/ # 配置:MyBatis-Plus / Sa-Token / OpenAPI / CORS │ │ └── modules/ # 业务模块(按领域分包) │ │ ├── auth/ # 认证(登录/登出/改密) │ │ ├── user/ # 用户、班级 │ │ └── course/ # 课程、章节、选课 │ └── resources/ │ ├── application.yml │ ├── application-dev.yml │ └── mapper/ # MyBatis XML(多表联查 SQL) ├── frontend/ # Vue 3 前端 │ ├── package.json │ ├── vite.config.js │ └── src/ │ ├── api/ # 接口封装 │ ├── router/ # 路由 + 权限守卫 │ ├── stores/ # Pinia 状态 │ ├── layout/ # 主布局(侧边栏/顶栏) │ ├── views/ # 页面 │ └── styles/ # 全局样式 └── docs/ ├── sql/ │ ├── 01_schema.sql # 建库建表(31 张表) │ └── 02_demo_data.sql # 演示数据 ├── 数据库设计.md └── 接口文档.md ``` --- ## 三、快速开始 ### 1. 环境准备 - JDK 21、Maven 3.9+ - Node.js 18+、npm 9+ - MySQL 8.x - Redis(可选) - Ollama(AI 功能阶段需要) ### 2. 初始化数据库 ```bash mysql -uroot -p < docs/sql/01_schema.sql mysql -uroot -p < docs/sql/02_demo_data.sql ``` 按需修改 `backend/src/main/resources/application-dev.yml` 中的数据库账号密码。 ### 3. 启动后端 ```bash cd backend mvn spring-boot:run ``` - 服务地址:http://localhost:8080/api - 接口文档(Knife4j):http://localhost:8080/api/doc.html ### 4. 启动前端 ```bash cd frontend npm install npm run dev ``` - 访问地址:http://localhost:5173 ### 4.5 AI 环境准备 ```bash # 安装本地大模型(对话 + 向量) ollama pull deepseek-r1:1.5b ollama pull nomic-embed-text # 可选:错题图片视觉 OCR 模型(不装则错题本仅支持手动录入) ollama pull minicpm-v ``` 默认配置(`application.yml` → `agent.rag`): - 对话模型:`deepseek-r1:1.5b`(本地 Ollama,回答会拆分展示思考过程) - 向量模型:`nomic-embed-text`(768 维) - 向量存储:`memory`(向量持久化到 MySQL,开箱即用);切换 `milvus` 需本地启动 Milvus - Elasticsearch:未启动时关键词检索自动降级为 MySQL LIKE ### 5. 演示账号(密码统一 `123456`) | 角色 | 账号 | 说明 | | --- | --- | --- | | 管理员 | `admin` | 全部权限,用户/班级/课程管理 | | 教师 | `teacher_zhang` | 课程、章节、学生管理 | | 教师 | `teacher_li` | 课程、章节、学生管理 | | 学生 | `student_wang` | 我的课程、学习功能 | --- ## 四、功能清单与开发进度 ### 阶段一(已完成):基础框架 + 基础 CRUD - [x] 数据库 ER 设计 + 31 张表建表脚本 - [x] 后端 Spring Boot 骨架(统一响应/异常、MyBatis-Plus、Sa-Token 鉴权、Knife4j 文档) - [x] 前端 Vue 3 骨架(路由权限守卫、Pinia、Axios 拦截器、主布局) - [x] 登录 / 登出 / 当前用户 / 修改密码 - [x] 用户管理:分页(多表联查班级)、增删改查、**批量删除 / 批量启用禁用 / 批量重置密码 / 批量导入学生(Excel)** - [x] 班级管理:分页、增删改查、批量删除 - [x] 课程管理:分页(**多表联查教师 + 选课人数统计**)、增删改查、批量删除 - [x] 章节管理:树形结构、增删改查 - [x] 选课管理:课程学生分页(多表联查)、批量选课、批量移除 ### 阶段二(已完成):RAG & Agent 核心 - [x] 知识库文档上传(PDF/PPT/DOC/DOCX/XLSX/TXT/MD 批量上传)、异步解析、自适应分块、向量化入库 - [x] 混合检索:Elasticsearch 关键词(不可用时自动降级 MySQL LIKE)+ 语义向量(Milvus / 内存向量库双实现)+ RRF 融合重排 - [x] 精准问答:多轮上下文记忆、带原文引用 `[n]`、引用详情弹窗(文档标题 + 页码 + 原文) - [x] 问答模式切换:苏格拉底引导 / 直接解答 - [x] deepseek-r1 思考链(``)拆分展示 - [x] 会话管理:新建 / 重命名 / 归档 / 删除 / 模式切换 - [x] AI 回答反馈(有帮助 / 回答有误) - [x] 知识库教师端:分块预览 / 编辑 / 启停、文档批量删除、重新解析 - [x] 知识冲突检测(阶段三,问答集成) ### 阶段三(已完成):学生端学习功能 - [x] 知识点管理:CRUD、批量删除(联动清理关系)、关系环路检测、课程知识图谱(章节分组 + 关系边)、前端图谱可视化(ECharts 力导向图) - [x] 个人错题本:**Ollama 视觉模型 OCR**(异步识别)、**向量相似度知识点自动标注**(不可用时关键词降级)、批量标记掌握状态、批量删除、按知识点/掌握状态/收藏筛选、重新 OCR、错题知识点弱项统计 - [x] 个人笔记:关联知识点 / 讲义片段 / 问答记录、Markdown 编辑、单篇与全部笔记 Markdown 导出 - [x] 习题库 + 专项练习:教师录题(含知识点关联)、智能组卷(错题驱动 / 弱项知识点 / 混合 / 按章节)、客观题**归一化自动判分**(多选乱序兼容)、答题记录持久化、逐题结果与解析回显 - [x] 个性化复习计划:AI 生成(基于错题弱项 + 知识图谱画像,含遗忘曲线约束提示)、LLM 不可用时按遗忘曲线规则兜底、时间线展示 / 启停 / 删除 - [x] 思维导图:AI 生成(基于知识图谱)、图谱结构兜底、在线树形编辑保存、**Markdown / OPML 导出** - [x] 知识冲突检测:独立检测(我的表述 vs 课程讲义)+ **问答集成**(提交问题时勾选,自动比对我的笔记/错题与 AI 回答并提示矛盾点与修改建议) ### 阶段四(待开发):教师后台与运维 - [ ] 知识库管理:文档批量上传删除、分块预览编辑、版本切换 - [ ] 知识点与知识图谱可视化维护 - [ ] 学生学习数据统计看板(多表联查 + Excel 导出) - [ ] 答疑记录审核与 AI 回答质量标记 - [ ] 习题库管理(批量导入) - [ ] RAG 检索调试面板 - [ ] 系统日志模块 --- ## 五、适配实训评分说明 > 第三阶段评分项**复杂度(5 分)**要求:单表增删改查、批量增删改查、多表联合查询。 本项目已通过以下设计覆盖该评分点: 1. **单表增删改查**:用户 / 班级 / 课程 / 章节等模块完整的 CRUD 接口与前端页面。 2. **批量增删改查**:批量删除用户、批量启用禁用、批量重置密码、批量导入学生账号、 批量删除课程、批量选课 / 批量移除选课。 3. **多表联合查询**: - 用户分页联查班级(`users LEFT JOIN classes`); - 课程分页联查教师表 + 选课人数子查询统计(`courses JOIN users JOIN 聚合子查询`); - 课程学生分页联查用户表与班级表。 4. 教师后台形成了完整的管理闭环,项目不再是单纯的 AI Demo,而是完整的业务系统。 --- ## 六、后续规划 结合学生答题记录构建**知识掌握度模型**,动态调整学习路径推荐; 引入重排模型(Rerank)提升检索精度;支持更多本地/云端大模型切换。