知识图谱构建系统

面向竞赛编程的知识图谱构建系统,使用LLM从文档中提取实体和关系,构建知识图谱并提供查询接口。

  • by MIC728
  • Python
  • 本地部署
  • 8 星标
  • 更新于
在 GitHub 查看 MIC728/CPGraph

使用说明

CPGraph

English | 中文

🌐 在线体验:cpgraph.top

面向竞赛编程(信息学奥赛)内容的知识图谱构建系统。使用 LLM 从文档中提取实体和关系,构建知识图谱,并通过 MCP 服务器提供查询接口。

⚠️ 注意:本项目仅开源源代码,不包含已构建的数据库。你需要自行准备文档数据并通过工作流构建知识图谱。

✨ 功能特性

  • LLM 驱动的实体提取 — 从文本/Markdown/HTML 文档中自动提取实体、关系和语义块
  • 智能实体合并 — 基于向量相似度 + LLM 判定合并重复实体,消除歧义
  • 双层存储架构 — Neo4j 图数据库 + SQLite/FAISS 本地高速存储
  • MCP 查询服务 — 提供 6 个标准 MCP 工具,支持向量搜索、图谱扩展、数据包过滤等

🚀 快速开始

环境要求

  • Python >= 3.12
  • uv(Python 包管理工具)
  • Neo4j(需要安装 APOC 和 GDS 插件)
  • LLM API 密钥(默认使用 DeepSeek)
  • Embedding API 密钥(默认使用 SiliconFlow)

安装

git clone https://github.com/MIC728/CPGraph.git
cd CPGraph
uv sync

# 激活虚拟环境
# Linux / macOS:
source .venv/bin/activate
# Windows (PowerShell):
# .venv\Scripts\Activate.ps1
# Windows (CMD):
# .venv\Scripts\activate.bat

配置

创建 .env 文件:

cp .env.example .env

编辑 .env,填入你的 API 密钥:

LLM_API_KEY=your_deepseek_api_key
EMBEDDING_API_KEY=your_siliconflow_api_key
NEO4J_PASSWORD=your_neo4j_password

其他配置项(模型、线程数、采样阈值等)在 config.toml 中调整。

工作流程

# 1. 从文档提取实体
python cli.py extract input.txt -o extracted_data

# 2. 修正实体类型
python cli.py reclassify extracted_data/ -o reclassified_data/

# 3. 合并重复实体(推荐分步执行)
python cli.py merge-identify reclassified_data/ -o merge_groups/
python cli.py merge-execute merge_groups/ -o merged_data/

# 4. 加载到 Neo4j + 本地存储
python cli.py load merged_data/

# 5. 启动 MCP 服务器
python cli.py mcp

🛠️ MCP 工具

启动 MCP 服务器后,AI 智能体可使用以下工具:

工具 说明
search_similar_entities 向量相似度搜索实体
expand_packet 图谱邻域扩展
filter_packet 按类型/文本过滤数据包
combine_packets 合并多个数据包
get_packet 获取数据包详情(自动采样)
get_chunks 获取文档内容