PersonalExam
🧠 AI-powered Personalized Exam System: Integrating OpenPangu LLM, Knowledge Graph RAG, and BKT algorithm for adaptive question generation and recommendation. 基于LLM与知识图谱的智能个性化出题系统。
Install / Use
/learn @sribdcn/PersonalExamREADME
🧠 基于LLM和知识图谱协同的个性化出题系统


Personalized Question Generation System Based on LLM and Knowledge Graph Collaboration
一个基于LLM和知识图谱协同的个性化出题系统,使用BKT算法、RAG引擎和OpenPangu模型,实现个性化的智能题目生成和推荐。
开发单位: 深圳市大数据研究院 (SRIBD) | 课题组: AI系统与应用课题组
Powered by OpenPangu. OpenPangu is a trademark of Huawei Technologies Co., Ltd.
许可证:
- 项目代码: 本项目代码采用 BSL 1.1 (Business Source License 1.1) 许可证,允许非商业使用,商业使用需要授权。
- OpenPangu模型: 本项目使用的OpenPangu模型采用 OPENPANGU MODEL LICENSE AGREEMENT VERSION 1.0 许可证,需遵守该许可协议的所有条款。
📄 论文
- Beyond Static Question Banks: Dynamic Knowledge Expansion via LLM-Automated Graph Construction and Adaptive Generation https://doi.org/10.48550/arXiv.2602.00020
📋 目录
✨ 功能特性
🎯 智能测评
- 自适应题目推荐: 基于BKT算法和知识图谱RAG引擎,根据学生掌握度智能推荐题目
- 细粒度知识点追踪: 支持知识点大类和小类两级追踪,实时更新掌握度
- AI答案评估: 使用盘古7B模型进行智能答案评估,提供详细反馈
📊 学习分析
- 学生画像生成: 自动生成个性化学习画像,识别薄弱知识点
- 可视化报告: 生成包含雷达图、掌握度图表等可视化分析报告
- 历史记录查询: 支持按知识点、时间范围查询答题历史
🕸️ 知识图谱
- 自动构建与更新: 使用盘古7B模型自动构建知识图谱,智能检测题库变化并更新
- 交互式可视化: 支持2D/3D可视化,多种布局算法,交互式探索
- 知识图谱RAG: 基于知识图谱的检索增强,实现精准题目推荐
👥 用户管理
- 角色权限: 支持学生和教师两种角色,权限分离
- 用户注册登录: 安全的用户认证系统,支持默认测试账号
⚙️ 系统管理
- 题库管理: UI界面添加题目,支持JSON批量导入
- 学生管理: 教师可查看学生学习数据和答题情况
- 系统监控: 实时监控系统状态和统计信息
🏗️ 技术架构
核心技术栈
系统架构图
%%{init: {'theme':'base', 'themeVariables': {'primaryBackgroundColor':'#ffffff', 'primaryTextColor':'#000000', 'primaryBorderColor':'#333333', 'lineColor':'#333333', 'edgeLabelBackground':'#ffffff', 'secondaryColor':'#f0f0f0', 'tertiaryColor':'#ffffff', 'mainBkgColor':'#ffffff', 'secondBkgColor':'#f5f5f5', 'tertiaryBkgColor':'#ffffff', 'background':'#ffffff', 'primaryColor':'#ffffff'}}}%%
graph TB
subgraph 前端层["前端层"]
GradioUI["Gradio Web UI<br/>enhanced_main_ui.py<br/>交互式Web界面"]
Login["登录注册系统<br/>用户认证与权限管理"]
end
subgraph 应用层["应用层"]
SystemCore["System Core<br/>system_core_db.py<br/>系统核心协调器"]
BKT["BKT算法适配器<br/>bkt_database_adapter.py<br/>贝叶斯知识追踪"]
RAG["RAG引擎<br/>rag_engine.py<br/>基于知识图谱的检索"]
KG["知识图谱构建器<br/>kg_builder.py<br/>实体关系提取与图谱构建"]
Selector["题目选择器<br/>question_generator.py<br/>智能推荐+题目互选"]
Evaluator["评估器<br/>evaluator.py<br/>答案评判+学习分析+报告生成"]
Visualizer["可视化器<br/>kg_visualizer.py<br/>radar_chart.py<br/>知识图谱+雷达图可视化"]
end
subgraph AI模型层["AI模型层"]
Pangu["OpenPangu 7B<br/>llm_models.py<br/>• 实体关系提取<br/>• 题目互选<br/>• 答案评判<br/>• 分析总结"]
BGE["BGE-small-zh-v1.5<br/>embedding_model.py<br/>文本向量化"]
end
subgraph 数据层["数据层"]
DB[("SQLite数据库<br/>database.py<br/>• 用户表<br/>• 题目表<br/>• 答题记录表<br/>• 学生状态表")]
Cache[("知识图谱缓存<br/>knowledge_graph.pkl<br/>实体关系图")]
Hash[("知识图谱哈希<br/>kg_hash.txt<br/>检测题库更新")]
VectorIndex[("向量索引<br/>内存存储<br/>题目向量检索")]
end
subgraph 硬件层["硬件层"]
NPU["昇腾910B2 NPU<br/>AI模型加速"]
end
%% 前端到核心
GradioUI --> Login
Login --> SystemCore
%% 系统核心初始化各组件
SystemCore --> BKT
SystemCore --> RAG
SystemCore --> KG
SystemCore --> Selector
SystemCore --> Evaluator
SystemCore --> Visualizer
%% 数据存储关系
BKT --> DB
SystemCore --> DB
KG --> Cache
KG --> Hash
RAG --> VectorIndex
%% RAG引擎相关连接
RAG --> DB
RAG --> BGE
RAG --> Pangu
RAG --> Cache
BGE --> VectorIndex
%% 知识图谱构建器相关连接
KG --> DB
KG --> Pangu
KG --> Cache
%% 题目选择器相关连接
Selector --> RAG
Selector --> BKT
Selector --> Pangu
Selector --> DB
%% 评估器相关连接
Evaluator --> Pangu
Evaluator --> BKT
Evaluator --> DB
%% 可视化器相关连接
Visualizer --> Cache
Visualizer --> DB
%% 硬件加速
Pangu --> NPU
BGE --> NPU
style GradioUI fill:#E3F2FD
style Login fill:#C8E6C9
style SystemCore fill:#F3E5F5
style Pangu fill:#FFF3E0
style BGE fill:#FFF3E0
style NPU fill:#E0E0E0
style RAG fill:#E1BEE7
style Selector fill:#E1BEE7
style Evaluator fill:#E1BEE7
style Visualizer fill:#E1BEE7
style BKT fill:#C8E6C9
style KG fill:#BBDEFB
style DB fill:#FFE0B2
style Cache fill:#FFE0B2
style Hash fill:#FFE0B2
style VectorIndex fill:#FFE0B2
主要技术栈
%%{init: {'theme':'base', 'themeVariables': {'primaryBackgroundColor':'#ffffff', 'primaryTextColor':'#000000', 'primaryBorderColor':'#333333', 'lineColor':'#333333', 'edgeLabelBackground':'#ffffff', 'secondaryColor':'#f0f0f0', 'tertiaryColor':'#ffffff', 'mainBkgColor':'#ffffff', 'secondBkgColor':'#f5f5f5', 'tertiaryBkgColor':'#ffffff', 'background':'#ffffff', 'primaryColor':'#ffffff'}}}%%
graph LR
subgraph 前端技术["前端技术"]
Gradio["Gradio 5.49.1<br/>Apache 2.0"]
end
subgraph 深度学习框架["深度学习框架"]
PyTorch["PyTorch<br/>BSD 3-Clause"]
TorchNPU["torch-npu<br/>Apache 2.0"]
end
subgraph 模型库["模型库"]
Transformers["Transformers 4.53.2<br/>Apache 2.0"]
Accelerate["Accelerate 1.10.1<br/>Apache 2.0"]
SentenceTransformers["sentence-transformers 5.1.1<br/>Apache 2.0"]
end
subgraph 数据处理["数据处理"]
NumPy["NumPy 1.26.4<br/>BSD 3-Clause"]
Pandas["Pandas 1.5.3<br/>BSD 3-Clause"]
SciPy["SciPy 1.15.3<br/>BSD 3-Clause"]
end
subgraph 图论可视化["图论与可视化"]
NetworkX["NetworkX 3.5<br/>BSD 3-Clause"]
Plotly["Plotly 6.4.0<br/>MIT"]
Matplotlib["Matplotlib 3.10.6<br/>Matplotlib License"]
end
subgraph 数据库["数据库"]
SQLite["SQLite<br/>Public Domain"]
end
subgraph AI模型["AI模型"]
OpenPangu["OpenPangu 7B<br/>OpenPangu License v1.0"]
BGE["BGE-small-zh-v1.5<br/>Apache 2.0"]
end
subgraph 硬件加速["硬件加速"]
NPU["昇腾910B2 NPU"]
end
Gradio --> PyTorch
Gradio --> Transformers
PyTorch --> TorchNPU
TorchNPU --> NPU
Transformers --> OpenPangu
Transformers --> Accelerate
Accelerate --> NPU
SentenceTransformers --> BGE
SentenceTransformers --> Transformers
OpenPangu --> NPU
BGE --> NPU
NumPy --> PyTorch
Pandas --> NumPy
SciPy --> NumPy
NetworkX --> NumPy
Plotly --> NumPy
Matplotlib --> NumPy
SQLite --> Gradio
style Gradio fill:#BBDEFB
style PyTorch fill:#C8E6C9
style Transformers fill:#FFF9C4
style Accelerate fill:#FFF9C4
style SentenceTransformers fill:#FFF9C4
style OpenPangu fill:#FFE0B2
style BGE fill:#FFE0B2
style NPU fill:#E0E0E0
style SQLite fill:#C8E6C9
style NetworkX fill:#E1BEE7
style Plotly fill:#E1BEE7
style Matplotlib fill:#E1BEE7
核心算法流程
%%{init: {'theme':'base', 'themeVariables': {'primaryBackgroundColor':'#ffffff', 'primaryTextColor':'#000000', 'primaryBorderColor':'#333333', 'lineColor':'#333333', 'edgeLabelBackground':'#ffffff', 'secondaryColor':'#f0f0f0', 'tertiaryColor':'#ffffff', 'mainBkgColor':'#ffffff', 'secondBkgColor':'#f5f5f5', 'tertiaryBkgColor':'#ffffff', 'background':'#ffffff', 'primaryColor':'#ffffff'}}}%%
flowchart TD
Start([用户登录系统]) --> Auth{身份验证}
Auth -->|学生| StudentFlow[学生流程]
Auth -->|教师| TeacherFlow[教师流程]
StudentFlow --> StartAssess[开始智能测评]
StartAssess --> GenProfile[【BKT算法】<br/>生成学生画像]
GenProfile --> SelectKP{选择目标知识点}
SelectKP -->|70%概率| WeakKP[优先选择薄弱知识点]
SelectKP -->|30%概率| RandomKP[随机选择知识点]
WeakKP --> GetMastery[【BKT算法】<br/>获取学生掌握度]
RandomKP --> GetMastery
GetMastery --> QuestionSelect[【题目选择器】<br/>智能选择题目]
QuestionSelect --> RAGStrategy{知识图谱RAG检索}
RAGStrategy -->|成功| RAGSelected[返回RAG推荐题目]
RAGStrategy -->|失败| Fallback[多级SQL备用方案<br/>1.精确匹配 2.大类+难度<br/>3.大类匹配 4.任意题目]
RAGSelected --> CreateSession[创建测评会话]
Fallback --> CreateSession
CreateSession --> DisplayQ[显示题目]
DisplayQ --> Answer[学生答题]
Answer --> SubmitAnswer[提交答案]
SubmitAnswer --> AnswerJudge[【盘古7B模型】<br/>智能答案评估<br/>支持答案缓存优化]
AnswerJudge --> BKTUpdate[【BKT算法】<br/>更新学生掌握度]
BKTUpdate --> SaveDB[【SQLite数据库】<br/>保存答题记录]
SaveDB --> CheckMore{还有题目?}
CheckMore -->|是| PreSelectNext[预选下一题<br/>选择知识点+选择题目]
CheckMore -->|否| GenerateReport[【盘古7B模型】<br/>生成学习分析报告]
PreSelectNext --> NextQuestion[加载下一题]
NextQuestion --> DisplayQ
GenerateReport --> ShowReport[显示学习报告<br/>包含掌握度、薄弱点、<br/>进步趋势等]
ShowReport --> End([结束])
TeacherFlow --> Manage[【教师管理功能】<br/>题库管理、学生管理、<br/>系统监控、知识图谱管理]
style Start fill:#E8F5E9
style Auth fill:#FFF3E0
style StudentFlow fill:#E3F2FD
style TeacherFlow fill:#F3E5F5
style GenProfile fill:#E3F2FD
style SelectKP fill:#FFF3E0
style WeakKP fill:#FFE0B2
style GetMastery fill:#E3F2FD
style QuestionSelect fill:#E1BEE7
style RAGStrategy fill:#F3E5F5
style RAGSelected fill:#C8E6C9
style Fallback fill:#FFF9C4
style AnswerJudge fill:#FFE0B2
style BKTUpdate fill:#E3F2FD
style SaveDB fill:#C8E6C9
style GenerateReport fill:#FFE0B2
style ShowReport fill:#C8E6C9
style End fill:#FFCDD2
style Manage fill:#E1BEE7
💻 系统要求
硬件要求
环境配置(参考)
- CPU: Kunpeng-920处理器
- 存储: 196GB总容量(建议至少100GB可用空间用于模型文件和Docker镜像)
- NPU: 昇腾910B2 NPU
软件要求
- 操作系统: Linux (推荐 Ubuntu 22.04.5 LTS,容器内使用 Ubuntu 22.04.5 LTS)
- Python: 3.11.12 (容器内版本)
- Docker: 18.09.0+ (宿主机版本,推荐使用Docker容器化部署)
