Skip to content

Repository files navigation

学科知识整合智能体

一套以 LLM + 知识图谱为核心的多教材整合系统:把多本教材压缩到原始内容 30% 以内的精华版本,并通过对话让教师持续优化整合方案。

功能一览

P0(已全部完成)

  • 多格式教材解析: PDF / Markdown / DOCX / TXT / Excel;PDF 流式逐页解析,可处理 400MB+ 教材
  • 单本知识图谱: 自动抽取知识点与四类关系(前置 / 包含 / 并列 / 应用)
  • 跨教材整合: 嵌入聚类 + LLM 判同 + 表述择优 + 低优先级剪枝;可调压缩比目标
  • 图谱可视化: D3 力导向,节点颜色区分教材,大小映射频次
  • RAG 精准问答: 章节切块 (600/100) + 向量 + BM25 (jieba 分词) 混合检索,回答附 [#编号] 引用
  • 多轮对话: 教师可质疑、调整决策,助手输出 actions 命令直接落库
  • 整合报告: Markdown 一键导出,含整合概览/决策摘要/重点案例/图谱统计/教学完整性
  • Web SPA: React + TypeScript + Vite + D3.js 三栏布局
  • 模型无关: Claude / OpenAI / DeepSeek / Mock 运行时切换;Mock 默认开启

P1(本期新增)

  • 图谱多视图切换: 力导向 / 树状 / 热力图,每种视图都可点击节点查看详情
  • 图谱搜索 + 筛选: 按节点名/别名搜索,按教材来源、关系类型、重要度多维筛选
  • 混合检索升级: jieba 分词 + top-N-per-channel union + min-max 加权融合(vs 单字 regex 提升 25% 关键词召回)
  • RAG Benchmark: 10 道医学问题自动评测,输出关键词命中率 / 引用准确率 / 响应时间
  • Token 用量统计: 全局调用追踪 + 按模块归因 (extract/integrate/rag/chat) + 饼图 + 时间线
  • Docker 一键部署: 单容器统一打包前后端,docker compose up 即用

目录结构

├── backend/        FastAPI + Python 服务端
├── frontend/       React + TypeScript + Vite 前端
├── data/           示例教材(数据结构与算法 5 本)
├── docs/           需求分析 / 系统设计 / 开发文档
├── docker-compose.yml
├── deploy.sh / deploy.ps1

快速启动

一键 Docker 启动(推荐)

单容器统一打包,前端 + 后端都在 :7860

cd frontend && npm install && npm run build && cd ..   # 先构建前端 dist
docker compose up --build -d                            # 启动

启动后访问 http://localhost:7860 — 完整 SPA + API + Gradio 状态面板都在这一个端口。

默认 Mock 模式,无需任何 API key。 想接真实模型,把 .env 填上 ANTHROPIC_API_KEY / OPENAI_API_KEY / DEEPSEEK_API_KEY 后重启 compose。

⚙️ 旧的双容器布局(backend:8000 + frontend:5173)仍在 backend/Dockerfile + frontend/Dockerfile,如需可切回旧 docker-compose.yml 版本。

本地开发模式

# 后端
cd backend
python -m venv .venv && source .venv/bin/activate     # Windows: .venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
uvicorn main:app --reload --port 8000

# 前端 (另开终端)
cd frontend
npm install
npm run dev

离线 ingest 大量 PDF(绕过浏览器上传超时)

# 把 PDF 放到 data/textbooks/,然后:
python backend/scripts/ingest_textbooks.py

逐本流式解析 + 建 RAG 索引,对 400MB+ 单本教材也是内存安全的。

运行 RAG Benchmark

python benchmark/run_benchmark.py                  # 默认混合检索
python benchmark/run_benchmark.py --no-bm25        # 消融:纯向量
# 输出 benchmark/results.md (markdown 报告) + results.json (原始数据)

演示流程

  1. 进入 http://localhost:5173
  2. 点击左侧「🧪 示例」一键导入 5 本算法教材(或自行拖拽上传)
  3. 对每本教材点击「🧠 提取」生成单本知识图谱(可视化即刻可见)
  4. 勾选 ≥ 2 本教材,在右侧调整压缩目标后点「🔗 跨教材整合」
  5. 切换到「🔍 问答」点「建立索引」,索引完成后基于教材原文提问,每个回答都会附带可展开的引用来源
  6. 切换到「💬 对话」与助手讨论,例如"为什么把最速下降法和梯度下降法合并?"
  7. 切换到「📝 报告」一键下载完整 Markdown

API 速览

路径 说明
POST /api/textbooks/upload 上传教材
POST /api/graphs/extract 提取单本图谱
POST /api/integration/run 跨教材整合
POST /api/chat/message 多轮对话
POST /api/rag/index 建立 / 重建 RAG 索引(不传 textbook_ids 则索引全部)
POST /api/rag/query 基于已索引教材的引用式问答
GET /api/rag/status RAG 索引覆盖与后端信息
DELETE /api/rag/index 清空 RAG 索引(可指定 textbook_id)
GET /api/reports/{id}/markdown 渲染整合报告
GET /api/stats/tokens Token 用量统计(按模块/provider/时间线)
DELETE /api/stats/tokens 清空 token 统计
GET/POST /api/config 切换 LLM 提供方

文档

License

MIT

About

Knowledge Integrator: P0 + P1 features (multi-view graph, hybrid search, RAG benchmark, token stats, docker)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages