Skip to content

Mdz-Bigdata/GraphRAGAgent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GraphRAG Studio

基于知识图谱的检索增强生成(GraphRAG)智能问答系统,融合 MinerU 文档精准解析、LangExtract 实体抽取与 Agentic-RAG 问答,提供从文档上传到知识图谱构建再到智能问答的全链路能力。

系统架构

┌─────────────────────────────────────────────────────────┐
│                    Frontend (React + Vite)                │
│  Dashboard │ Documents │ KG Explorer │ QA Chat │ Search  │
└──────────────────────────┬──────────────────────────────┘
                           │ HTTP API
┌──────────────────────────▼──────────────────────────────┐
│                  Backend (FastAPI)                        │
│  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐  │
│  │Documents │ │ Indexing │ │    KG    │ │   Query   │  │
│  │  Router  │ │  Router  │ │  Router  │ │  Router   │  │
│  └────┬─────┘ └────┬─────┘ └────┬─────┘ └─────┬─────┘  │
│       │            │            │              │         │
│  ┌────▼────────────▼────────────▼──────────────▼─────┐  │
│  │              Service Layer                         │  │
│  │  document_service │ indexing_service │ kg_service  │  │
│  │  qa_service │ search_service                       │  │
│  └────┬──────────────┬──────────────────┬────────────┘  │
│       │              │                  │                │
│  ┌────▼────┐   ┌─────▼──────┐   ┌──────▼──────┐        │
│  │FileStore│   │  Pipeline   │   │  NetworkX   │        │
│  │ (JSON)  │   │ MinerU+LxE  │   │   Graph     │        │
│  └─────────┘   └────────────┘   └─────────────┘        │
└─────────────────────────────────────────────────────────┘
         │                │                │
    ┌────▼────┐    ┌──────▼──────┐  ┌──────▼──────┐
    │  JSON   │    │   MinerU    │  │  DeepSeek   │
    │ Storage │    │  API (PDF)  │  │  API (LLM)  │
    └─────────┘    └─────────────┘  └─────────────┘

核心特性

  • 文档精准解析 — 集成 MinerU API,支持 PDF/Word/PPT/图片等多格式文档的高精度解析,保留页面结构与图文布局
  • 实体智能抽取 — 基于 LangExtract + DeepSeek LLM,自动识别 TECHNOLOGY / CONCEPT / PERSON / ORGANIZATION / LOCATION 五类实体
  • 知识图谱构建 — 自动去重、CO_OCCURS 关系生成、NetworkX 图计算(度中心性、最短路径等)
  • Agentic-RAG 问答 — LangGraph ReAct Agent 驱动,支持图谱检索、实体搜索、路径查询等多工具协同推理
  • 交互式图谱探索 — D3.js 力导向图可视化,支持实体类型/置信度/来源文档多维过滤、节点邻居展开、路径搜索
  • 一键启动 — 单脚本自动配置虚拟环境、安装依赖、启动前后端服务

技术栈

层级 技术
前端 React 19 + Vite 6 + Tailwind CSS 4 + D3.js 7 + React Router 7 + Radix UI + Recharts
后端 FastAPI + Uvicorn + Python 3.12+
文档解析 MinerU API(精准解析 PDF/图片等)
实体抽取 LangExtract + DeepSeek Chat
知识图谱 NetworkX(图计算 + 中心性分析)
问答引擎 LangChain + LangGraph ReAct Agent + DeepSeek Chat
数据存储 JSON 文件存储(零数据库依赖)

项目结构

GraphRAGAgent/
├── start.sh                    # 一键启动脚本
├── backend/
│   ├── main.py                 # FastAPI 入口
│   ├── pyproject.toml          # Python 依赖配置
│   ├── .env.example            # 环境变量模板
│   ├── routers/                # API 路由层
│   │   ├── documents.py        #   文档管理 (CRUD + 上传)
│   │   ├── indexing.py         #   索引任务 (启动/状态/取消)
│   │   ├── kg.py               #   知识图谱 (节点/边/统计)
│   │   ├── query.py            #   智能问答 (Agentic-RAG)
│   │   ├── search.py           #   搜索 (实体/路径/子图)
│   │   └── system.py           #   系统 (健康检查/统计)
│   ├── services/               # 业务逻辑层
│   │   ├── document_service.py #   文档管理服务
│   │   ├── indexing_service.py #   索引管线服务 (MinerU → LangExtract → KG)
│   │   ├── kg_service.py       #   知识图谱服务 (NetworkX 图操作)
│   │   ├── qa_service.py       #   问答服务 (LangGraph Agent)
│   │   └── search_service.py   #   搜索服务
│   ├── pipeline/               # 核心管线
│   │   ├── entity_extractor.py #   LangExtract 实体抽取
│   │   ├── kg_builder.py       #   知识图谱构建 (去重 + 边生成)
│   │   ├── qa_agent.py         #   LangGraph ReAct QA Agent
│   │   └── text_assembler.py   #   文本组装
│   ├── models/
│   │   └── schemas.py          # Pydantic 数据模型
│   ├── storage/
│   │   └── file_store.py       # JSON 文件存储层
│   └── data/                   # 运行时数据 (gitignore)
│       ├── docs_index.json     #   文档索引
│       ├── kg/                 #   知识图谱数据
│       └── uploads/            #   上传文件
├── frontend/
│   ├── package.json            # Node.js 依赖配置
│   ├── vite.config.ts          # Vite 构建配置
│   ├── src/
│   │   ├── main.tsx            # 应用入口
│   │   ├── App.tsx             # 根组件
│   │   ├── api.ts              # API 客户端
│   │   ├── store.tsx           # 全局状态 (React Context)
│   │   ├── routes.tsx          # 路由配置
│   │   ├── components/
│   │   │   ├── layout/         #   布局组件
│   │   │   ├── pages/          #   页面组件
│   │   │   │   ├── Dashboard.tsx       # 仪表盘
│   │   │   │   ├── Documents.tsx       # 文档管理
│   │   │   │   ├── KGExplorer.tsx      # 知识图谱探索
│   │   │   │   ├── QAChat.tsx          # 智能问答
│   │   │   │   ├── SearchPage.tsx      # 搜索页面
│   │   │   │   └── Settings.tsx        # 系统设置
│   │   │   └── ui/             #   Radix UI 基础组件
│   │   └── styles/             #   样式文件
│   └── index.html              # HTML 模板
└── docs/                       # 设计文档
    ├── product_requirements_document-v1.0.md
    ├── backend_service_specification-v1.0.md
    ├── frontend_design_specification-v1.0.md
    ├── agentic_rag_specification-v1.0.md
    ├── bridge_pipeline_specification-v1.0.md
    ├── langextract_specification-v1.0.md
    └── mineru_specification-v1.0.md

快速开始

前置要求

  • Python >= 3.12
  • Node.js >= 18
  • pnpm (前端包管理器)
  • uv (Python 包管理器,pip install uv)
  • DeepSeek API Key获取地址
  • MinerU API Token获取地址

1. 克隆项目

git clone https://github.com/Mdz-Bigdata/GraphRAGAgent.git
cd GraphRAGAgent

2. 配置环境变量

cp backend/.env.example backend/.env

编辑 backend/.env,填入真实 API Key:

# DeepSeek API (实体抽取 + 智能问答)
DEEPSEEK_API_KEY=sk-your-actual-deepseek-key
DEEPSEEK_BASE_URL=https://api.deepseek.com

# MinerU API (文档精准解析)
MINERU_API_TOKEN=your-actual-mineru-token

3. 一键启动

chmod +x start.sh
./start.sh

启动脚本会自动完成:

  1. 检查 .env 配置
  2. 创建 Python 虚拟环境并安装后端依赖
  3. 安装前端依赖
  4. 检查并释放端口占用
  5. 启动后端 FastAPI 服务 (端口 8000)
  6. 启动前端 Vite 开发服务器 (端口 5173)

4. 访问应用

入口 地址
前端界面 http://localhost:5173
后端 API http://localhost:8000
API 文档 (Swagger) http://localhost:8000/docs
API 文档 (ReDoc) http://localhost:8000/redoc
健康检查 http://localhost:8000/api/v1/health

手动启动(开发模式)

# 后端
cd backend
uv venv && source .venv/bin/activate
uv pip install -e "."
uvicorn main:app --host 0.0.0.0 --port 8000 --reload

# 前端(新终端)
cd frontend
pnpm install
pnpm dev

使用流程

1. 上传文档

进入「文档管理」页面,上传 PDF / Word / PPT / 图片等文件。系统支持批量上传。

2. 索引文档

点击文档右侧的「开始索引」按钮,系统将自动执行三步管线:

MinerU 精准解析 → LangExtract 实体抽取 → 知识图谱构建

索引过程中可实时查看进度和当前阶段。

3. 探索知识图谱

进入「知识图谱」页面,可:

  • 浏览完整的知识图谱力导向图
  • 按实体类型(TECHNOLOGY / CONCEPT / PERSON / ORGANIZATION / LOCATION)过滤
  • 按置信度等级过滤
  • 按来源文档过滤
  • 搜索特定实体
  • 点击节点查看详情和邻居关系
  • 查询两个实体之间的路径

4. 智能问答

进入「智能问答」页面,直接用自然语言提问。系统会:

  1. 理解问题意图
  2. 调用知识图谱检索工具
  3. 搜索相关实体和关系
  4. 综合推理生成答案
  5. 标注引用的知识图谱节点

API 概览

所有接口统一返回 APIResponse 信封格式:

{
  "code": 0,
  "msg": "success",
  "request_id": "uuid",
  "data": { ... }
}
分组 端点 说明
文档管理 GET /api/v1/documents 文档列表
POST /api/v1/documents/upload 上传文档
DELETE /api/v1/documents/{doc_id} 删除文档
索引 POST /api/v1/index/start 启动索引
GET /api/v1/index/status/{job_id} 查询索引状态
GET /api/v1/index/result/{job_id} 获取索引结果
知识图谱 GET /api/v1/kg/nodes 节点列表(分页)
GET /api/v1/kg/edges 边列表(分页)
GET /api/v1/kg/nodes/{id}/neighbors 节点邻居
GET /api/v1/kg/stats 图谱统计
GET /api/v1/kg/export 导出全图
问答 POST /api/v1/query 智能问答
GET /api/v1/query/history 问答历史
搜索 GET /api/v1/search/entities 实体搜索
GET /api/v1/search/path 路径搜索
GET /api/v1/search/graph 子图搜索
系统 GET /api/v1/health 健康检查
GET /api/v1/system/stats 系统统计

索引管线详解

┌──────────────┐    ┌──────────────────┐    ┌──────────────────┐
│   MinerU     │    │  LangExtract +   │    │   KG Builder     │
│  文档解析    │───▶│  DeepSeek LLM    │───▶│  节点去重 +       │
│  (PDF→MD)   │    │  实体抽取         │    │  CO_OCCURS 边生成 │
└──────────────┘    └──────────────────┘    └──────────────────┘
     阶段 1               阶段 2                   阶段 3
  1. MinerU 精准解析:调用 MinerU API 将 PDF/图片等文档解析为结构化 Markdown,保留页面布局和图文位置
  2. LangExtract 实体抽取:逐页文本送入 LangExtract + DeepSeek,识别命名实体并标注置信度(match_exact / match_greater / match_lesser / match_fuzzy)
  3. KG Builder 图谱构建:对实体进行 (name, type) 去重,生成 CO_OCCURS_IN 同现关系边,合并到全局知识图谱

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors