个性化学习风格RAG辅导系统

基于Felder-Silverman学习风格模型(FSLSM)的个性化RAG辅导系统,通过虚拟学生代理和MCP工具选择运行时实现个性化辅导响应。

  • by Nyeinchanaung
  • Jupyter Notebook
  • 本地部署
  • 更新于
在 GitHub 查看 Nyeinchanaung/fslsm-mcp-rag

使用说明

FSLSM-RAG-MCP

基于《动手学深度学习》(D2L)语料库的FSLSM个性化辅导系统的论文实现。

该项目研究了Felder-Silveman学习风格模型(FSLSM)配置文件是否可以编码到合成的学生代理中,用于个性化RAG导师的反应,并通过MCP工具选择运行时进行操作。

项目

本论文由三个相互关联的实验组成:

实验 目的 主要结果
Exp1 验证FSLSM条件下的虚拟学生代理 强模型可靠地恢复分配的配置文件;最高PRA=1.000
Exp2 比较通用RAG(R0)与FSLSM个性化RAG相比(R1) R1在保持相关性的同时提高了风格的一致性和参与度
Exp3 通过真正的MCP工具层运行FSLSM感知辅导 MCP运行时成功执行,并节省了大量提示令牌

总体而言,论文的主张并不是说学习风格是经过证明的人类特征。主张范围更窄:FSLSM可以用作合成代理、导师反应风格适应和工具选择/运行时分析的可控个性化信号。

实验1:虚拟学生代理保真度

Exp1测试基于LLM的虚拟学生代理在回答44项ILS问卷时是否能够一致地表达分配的FSLSM配置文件。

设置:

  • 在四个二进制维度上有16个FSLSM轮廓: act_ref, sen_int, vis_ver, seq_glo
  • 每个配置文件有5个代理实例,每个模型有80个FSLSM代理
  • 每个代理进行3次ILS试验,每个模型提供240条FSLSM记录
  • 每个模型5个无配置文件基线代理
  • 15 API/通过LiteLLM/Ollama评估的本地模型

韵律学:

  • PRA:轮廓恢复精度;领带算作不匹配
  • DAS:尺寸对齐得分;连续对齐强度

总体结果:

  • 评估了15个模型
  • 8/15款车型通过PRA>=0.82目标
  • 6/15个型号通过了DAS>=0.75的目标
  • 6/15型号通过PRA>=0.82和DAS>=0.75
  • 所有模型的平均PRA:0.773
  • 所有型号的平均DAS:0.717
  • 最佳型号: claude-sonnet-4-20250514 PRA 1.000/DAS 0.927, gemma3:12b PRA 1.000/DAS 0.882, gpt-4.1-mini PRA 0.996/DAS 0.924
  • 1-2B参数附近的较小模型大多会崩溃到概率水平PRA约0.50

DAS的最佳结果:

模型 PRA DAS
claude-sonnet-4-20250514 1.000 0.927
gpt-4.1-mini 0.996 0.924
gemma3:12b 1.000 0.882
gemma2:9b 0.948 0.837
qwen2.5:7b 0.956 0.785
qwen2.5:3b 0.890 0.752

运行:

python experiments/exp1_agent_fidelity/run.py
python experiments/exp1_agent_fidelity/run_baseline.py
python experiments/exp1_agent_fidelity/analyze.py
python experiments/exp1_agent_fidelity/visualize.py

主要文物:

  • results/exp1/metrics/
  • results/exp1/raw_responses/
  • experiments/exp1_agent_fidelity/report.ipynb
  • experiments/exp1_agent_fidelity/final_defense_report.ipynb

实验2:FSLSM导师个性化

实验2测试了与通用RAG基线相比,FSLSM条件性RAG是否改善了导师的反应。

设置:

  • R0:通用D2L接地RAG
  • R1:FSLSM使用ProfileAgent指令进行检索和生成的个性化RAG
  • 80种合成学生制剂
  • 72个D2L问题
  • 总共11520个会话,5760个匹配的R0/R1对
  • 导师模式: gpt-4.1-mini

管道:

  1. ProfileAgent:将FSLSM向量转换为检索和生成指令
  2. RetrievalAgent:使用RRF和多查询分解的混合BM25+FAISS检索
  3. TutorAgent:生成基于D2L的导师反应和参与度评分

总体结果:

度量 R0均值 R1均值 结果
SCS 0.261 0.469 R1+79.6%,影响大
参与度 3.247 3.890 R1+19.8%,影响大
RR 3.788 3.785 无显著差异
CR@5 0.159 0.155 小负数
CR@10 0.269 0.254 小负数
ER 0.340 0.333 小负值

轨道B成对评估:

  • 5760个有效的成对比较
  • R1获胜:5419
  • R0获胜:341
  • R1胜率:0.9408
  • 95%置信区间:0.9344-0.9466

释义:

  • 个性化主要改善了反应风格和感知参与度。
  • 响应相关性得以保留。
  • 检索召回率没有提高;FSLSM查询增强略微将检索从事实金块转移开。

运行:

python experiments/exp2_tutor_personalization/run_exp2.py --mode both
python experiments/exp2_tutor_personalization/evaluate_exp2.py
python experiments/exp2_tutor_personalization/pairwise_eval.py --full

主要文物:

  • experiments/exp2_tutor_personalization/results/exp2_results_summary.json
  • experiments/exp2_tutor_personalization/results/exp2_session_metrics.csv
  • experiments/exp2_tutor_personalization/results/pairwise/
  • experiments/exp2_tutor_personalization/report.ipynb

实验3:MCP运行时工具选择

Exp3测试辅导系统是否可以通过真正的MCP风格的工具运行时来操作。

设置:

  • 真正的FastMCP支持的工具层
  • 15个注册的MCP工具
  • Exp3-Core:60个问题工具平衡基准,15个工具x4个问题
  • 16个标准FSLSM配置文件
  • 三种运行条件:
    • S0:提示所有工具模式的膨胀基线
    • S1a:无条件RAG-MCP工具检索
    • S1b:FSLSM条件下的RAG-MCP工具检索

主要指标:

  • Task-TSA:所选工具与任务最佳工具匹配
  • Profile-TSA:所选工具与配置文件条件目标匹配
  • PTS:与S0相比,快速节省代币
  • 执行成功和延迟

Exp3核心总体结果:

条件 n 任务TSA PTS 执行成功 平均延迟
S0 960 0.783 0.0% 1.000 983毫秒
S1a 960 0.833 93.5% 1.000 772毫秒
S1b 960 0.820 93.5% 1.000 802毫秒

释义:

  • Exp3最有力的声明是运行时的有效性和效率。
  • S1a 在TSA主要任务上最强。
  • S1b 并不能普遍改善任务工具的选择,但支持有限的配置文件条件分析,同时保持高提示令牌节省。

运行:

./venv/bin/python experiments/exp3_mcp_runtime/scripts/01_build_tool_index.py
./venv/bin/python experiments/exp3_mcp_runtime/scripts/02_verify_setup.py
./venv/bin/python experiments/exp3_mcp_runtime/scripts/11_full_run_core.py --run-id exp3_core_YYYYMMDD_HHMMSS --log-passive
./venv/bin/python experiments/exp3_mcp_runtime/scripts/07_compute_metrics.py --run-id exp3_core_YYYYMMDD_HHMMSS
./venv/bin/python experiments/exp3_mcp_runtime/scripts/08_generate_report.py --run-id exp3_core_YYYYMMDD_HHMMSS

主要文物:

  • experiments/exp3_mcp_runtime/data/
  • experiments/exp3_mcp_runtime/results/runs/
  • experiments/exp3_mcp_runtime/report.ipynb
  • experiments/exp3_mcp_runtime/final_defense_report.ipynb

演示Web应用程序

共享的Streamlit演示现在位于实验文件夹之外,因为它展示了所有三个实验。

运行:

./venv/bin/streamlit run demo/app.py

如果在repo venv之外使用纯Streamlit:

streamlit run demo/app.py

演示部分:

  • Overview:所有实验的论文故事
  • Exp1:汇总Exp1结果和数字
  • Exp1 Live:迷你/完整ILS实时检查和缓存工件浏览器
  • Exp2:聚合Exp2结果
  • Exp2 Live:实时R0/R1比较、配置文件计划、检索证据和成对判断
  • Exp3:聚合MCP运行时结果
  • Live Demo:实时Exp3 MCP工具选择会话
  • Replay Demo:重放存储的Exp3会话

环境注意事项:

  • API演示需要相关密钥,如 OPENAI_API_KEY.
  • Exp3网络搜索工具需要 TAVILY_API_KEY.
  • 本地模型演示要求Ollama和所选模型在本地可用。
  • gemma3:12b 在此Mac上的Exp1 Live中故意禁用,因为它可以挂起本地运行时。

存储库映射

demo/                                      Shared Streamlit dashboard
src/                                       Core tutor, agent, retrieval, and evaluation code
data/                                      Profiles, questions, processed chunks, Exp2 data
results/                                  Shared result artifacts
experiments/exp1_agent_fidelity/           Exp1 scripts, notebooks, reports
experiments/exp2_tutor_personalization/    Exp2 runner, evaluator, pairwise judge
experiments/exp3_mcp_runtime/              Exp3 MCP runtime, tools, server, scripts
tests/                                     Regression and runtime tests

测试

python -m py_compile demo/service.py demo/app.py tests/test_exp3_mcp_runtime.py
pytest tests/test_exp3_mcp_runtime.py -q