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 | 获取文档内容 |
