Skip to content

Latest commit

 

History

History
17 lines (11 loc) · 2.83 KB

File metadata and controls

17 lines (11 loc) · 2.83 KB

SS1. 知识图谱对出题的帮助是什么?

知识图谱在本项目里并不是“只给题目按知识点大/小类打标签”,它参与了选题与排序,主要体现在三点:

  • 候选题获取不只靠标签过滤:系统会先从目标知识点小类节点(KP_Minor)出发,沿着题目到该小类的 tests 关系边,把直接关联的题目节点(Q)作为候选集合的一部分(题目 Q → 小类 KP_Minor)。相关实现见 rag_engine.py 与构图时添加的 tests 边 kg_builder.py
  • 候选题不足时会沿图扩展:当直接关联题目不够,系统会根据学生掌握度沿知识图谱关系边扩展到相关知识点再捞题——掌握度低优先找前置知识点(prerequisite),掌握度高优先找后续知识点(leads_to),中等则在同大类下选择其它小类。这依赖图里的“前置/后续/归属”等结构关系,不是纯标签能实现的,见 rag_engine.py
  • 题目打分用到了图结构:候选题会被打分排序,其中“知识点相关度”用图上的最短路径长度来估计题目与目标知识点的贴合度(路径越短越相关),见 rag_engine.py

2. 出题时,是否会根据难度自动调整题目?比如高难度的答错了之后,会自动调整为出低难度的题目。

会的,但实现方式不是“直接看上一题难度对/错就强行降级”,而是通过 BKT 掌握度更新后,下一题按掌握度去匹配目标难度,从而实现自适应。

  • 掌握度会随对错更新:每次提交答案后,系统会调用 BKT 记录答题并更新该知识点小类的 mastery_prob(答错通常会拉低掌握度),见 system_core.pybkt_algorithm.py
  • 选题会按掌握度匹配难度:知识图谱RAG在给候选题打分时,会把掌握度映射成目标难度(mastery<0.3→简单 0.25;0.3~0.7→中等 0.50;>0.7→困难 0.75),并用“题目难度与目标难度的差距”作为重要评分项,见 rag_engine.py
  • 如果RAG降级到SQL筛题,同样会按掌握度设定难度范围(简单/中等/困难区间)再抽题,见 question_generator.py

因此,当你做了一道偏难的题并答错后,掌握度会下降,下一题更倾向于匹配“更简单/更中等”的目标难度;但是否立刻体现在“同一知识点”上,还取决于下一题选择的是不是同一个知识点小类(系统会在薄弱点间轮换挑选目标知识点)。