高中有多少本教材

2026-03-04: 知识图谱全面重建 + D3.js 交互式可视化

概念提取重建

  • :white_check_mark: 概念字典从 ~300 扩展至 996 个精心策划的学术术语(过滤后 875 个)
  • :white_check_mark: 有效概念 641→784,精选术语 311→720,概念映射条目 →1,714
  • :white_check_mark: 语文学科概念从 62 扩展至 180(意象/意境/鲁迅/杜甫/李白/陶渊明/比兴 等)
  • :white_check_mark: 生物学 141→246(孟德尔/达尔文/培养基 等)、历史 119→237(汉武帝/拿破仑 等)
  • :white_check_mark: 物理 130→222(牛顿/爱因斯坦 等)、化学 124→217(阿伏加德罗/摩尔 等)
  • :white_check_mark: 100% 清除垃圾概念(“是不是”/“老师”/“com”/“想一想” 等均已移除)
  • :white_check_mark: 新增 60+ 通用词过滤规则,防止"词/曲/平面/速度"等非学术术语泄漏
  • :white_check_mark: Unicode NFKC 规范化:正确捕获 σ键、α粒子、γ射线 等希腊字母术语

D3.js 交互式知识图谱

  • :white_check_mark: d3.forceSimulation() 力导向物理布局,节点自动排列
  • :white_check_mark: d3.zoom() 平滑缩放 & 平移(0.3× 至 5×)
  • :white_check_mark: d3.drag() 拖拽节点重排
  • :white_check_mark: 悬停高亮:非关联节点淡化 + 关联连线加粗 + 工具提示浮窗
  • :white_check_mark: 重置按钮:一键恢复视角并重启布局

数据洞察更新

  • :white_check_mark: 概念广度排名:古希腊(9科) → 现代化(8科) → 环境保护(8科)
  • :white_check_mark: 词频分析、学科关联热力图、考试覆盖分析 全部基于新数据
1 Like

2026-03-04: 技术栈全面升级

AI与检索

  • :white_check_mark: 向量模型:升级为强大的多语言模型 BAAI/bge-m3 (1024D 嵌入) 替换原有的 bge-small
  • :white_check_mark: 向量索引:使用新模型重新编码 15,652 条核心教学切片至 1024D FAISS IndexIDMap (61MB)
  • :white_check_mark: 智能分词:启动时自动提取 curated_keywords 中 720 个核心学术术语(如"共价键")装载进 Jieba 自定义词典,避免错误切词

性能与架构

  • :white_check_mark: 接口缓存:引入 cachetools.TTLCachestatskeywords 等只读 API 提供 5 分钟短效缓存,重复请求耗时降至 <1ms
  • :white_check_mark: 高可用监控:新增 /api/health 探针接口,结合 Docker HEALTHCHECK 实现容器挂死自动重启
  • :white_check_mark: CI/CD:添加 GitHub Actions Workflow,实现代码 Push 主分支后自动触发 VPS 侧热更重启

這個差不多了⋯⋯

2 Likes

Gemini Batch API 五场景集成

使用 Gemini Batch API(50% 折扣)为跨学科知识平台批量生成 AI 内容,总成本约 $1.4。

Proposed Changes

基础设施

[NEW] [batch_generate.py](file:///home/suen/.openclaw/workspace/textbook_ai/scripts/batch_generate.py)

统一的 Batch 脚本,包含 5 个子命令。使用 google-genai Python SDK 的 client.batches.create() 提交 inline 请求(每个场景的请求量 < 20MB 限制),轮询状态直到完成,解析结果写入 SQLite。

核心流程:

  1. 从 SQLite 读取源数据(keywords / chunks / concepts)

  2. 构建 prompt 列表 → inline requests

  3. client.batches.create(model="gemini-2.0-flash", src=requests)

  4. 轮询 client.batches.get() 直到 JOB_STATE_SUCCEEDED

  5. 解析 inlined_responses → 写入 SQLite 新表


场景 1:跨学科解读预生成(720 条)

curated_keywords 取 720 个术语,对每个术语用 FTS 搜索获取多学科上下文,让 Gemini 生成跨学科解读。

DB 新表ai_explanations(term TEXT PRIMARY KEY, subjects TEXT, explanation TEXT, ts REAL)

Prompt 模板


你是资深跨学科教育专家。以下是高中教材中关于「{term}」的跨学科内容:

{context}

请用 200 字综合解释该概念如何在不同学科中体现,挖掘隐藏的跨学科联系。


场景 2:真题-教材关联分析(4,029 条)

chunks WHERE source='gaokao' 取真题,用 FTS 搜索匹配的教材段落,让 Gemini 生成结构化的考点-教材映射。

DB 新表ai_gaokao_links(chunk_id INTEGER PRIMARY KEY, subject TEXT, knowledge_points TEXT, textbook_refs TEXT, ts REAL)

Prompt 模板


你是高考命题分析专家。以下是一道高考题和相关教材内容:

【真题】{question}

【教材】{textbook_context}

请分析:1) 本题考查了哪些知识点 2) 对应教材哪些章节 3) 一句话总结考点与教材的关系。

输出 JSON: {"knowledge_points": [...], "textbook_refs": [...], "summary": "..."}


场景 3:同义词表生成(784 条)

concept_map 取去重的 784 个概念,让 Gemini 批量生成同义词/近义词。

DB 新表ai_synonyms(term TEXT PRIMARY KEY, synonyms TEXT, ts REAL)

Prompt 模板


为学术术语「{term}」列出所有同义词、近义词、英文对照和常见缩写,用 JSON 数组返回。

示例:["脱氧核糖核酸", "deoxyribonucleic acid", "双螺旋"]


场景 4:教材段落摘要(15,694 条)

因为 inline 请求有 20MB 限制,15,694 条需分 4 批提交(每批 ~4,000 条)。

chunks WHERE source='mineru' 取教材 chunk,让 Gemini 生成一句话摘要。

DB 新表ai_summaries(chunk_id INTEGER PRIMARY KEY, summary TEXT, ts REAL)

Prompt 模板


用一句话(不超过 30 字)概括以下高中教材段落的核心内容:

{text}


场景 5:图谱关系标注(~500 条)

cross_subject_map + 高频 concept_map 共现对提取概念对,让 Gemini 分析关系类型。

DB 新表ai_relations(concept_a TEXT, concept_b TEXT, relation_type TEXT, description TEXT, ts REAL)

Prompt 模板


以下两个高中学术概念之间存在关联:「{a}」和「{b}」

它们的关系类型是什么?从以下选项中选择并简述:因果、包含、对比、应用、互补、衍生

输出 JSON: {"type": "因果", "description": "...一句话说明..."}


后端集成

[MODIFY] [main.py](file:///home/suen/.openclaw/workspace/textbook_ai/platform/backend/main.py)

  • /api/search:当搜索词命中 ai_explanations 时,在结果中返回 ai_explanation 字段

  • /api/search:结果中每条 chunk 附带 ai_summary(来自 ai_summaries

  • /api/search:查询时先扩展同义词(从 ai_synonyms),多条件 OR 搜索

  • /api/gaokao:每道真题附带 ai_analysis(来自 ai_gaokao_links

  • /api/graph/overview:边数据包含 relation_typedescription

Verification Plan

Automated Tests

  • 检查每个 batch job 返回 JOB_STATE_SUCCEEDED

  • 验证各 SQLite 表行数与预期一致

  • curl 测试各 API 端点是否返回新字段

2 Likes

文科生神器 :face_savoring_food:

1 Like


这个关联知识图谱有点幽默了

3 Likes

先優化一小下,排隊等 Google 數據:)

1 Like

只有语文真题?

1 Like

對,因為我只整理過語文⋯⋯ 北京高考其他科目的20多年真題等我加完課本圖再看要不要找⋯⋯

課本的頁碼規則是純屎所以耗住時間了。

真題沒有官方資料,嗯,你要感謝教育考試院八輩祖宗⋯⋯

2 Likes

如果直接内容和图片页对应呢,是不是就不用管页码了
@TealParticle 是这么整的吗?

1 Like

這是一個相當複雜的問題,教材全部 pdf 都存在一個頁碼跳過數字的問題,有些頁面是單元說明,本該有頁碼但實際 pdf 內並未給頁碼,譬如語文選擇性必修上冊 pdf 內標註的 54 頁之後是第三單元說明,這一頁說明 pdf 內沒有給頁碼數字 55,但下一個第 8 課大衛科波菲爾德頁碼課本數字已經是 56。加上 pdf 自身每頁的頁碼和 pdf 內不一致,問題就更大了。不管頁碼確實可以直接對應,關鍵詞匹配就可以給圖,耗時是因為網站設計初心是把內容拿來給 AI 作協助理解,檢索關鍵詞先走文本再回 pdf 就不能不先處理頁碼對應規則⋯⋯ 真處理不好的話,就先匹配圖再附文。

2 Likes

1 Like

孙有没有其他科关系好的老师可以一起整理啊

3 Likes

多个人多份力嘛

3 Likes

孙不会没有关系好的老师吧,孩子真内向,都不爱和人说话,应该多说说话啊

7 Likes

老师别生气,伸手不打笑脸人嘛:joy:

2 Likes

何必如此针锋相对呢:crying_cat:

2 Likes

圖片上線,大多數可以,但還有不准⋯⋯

忍不了 Google Antigravity 了,遷移機器之後再更新⋯⋯

1 Like

已经可以想象王铮走后suen经历孤独变成阴暗b了(

3 Likes