mindgraph
AI 自动从自然语言构建结构化知识图谱,支持语义去重与多跳推理
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AI 自动从自然语言构建结构化知识图谱,支持语义去重与多跳推理
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你对 AI 说一句「马斯克创办了 SpaceX 并投资了特斯拉」,系统立刻自动识别出其中的实体(埃隆·马斯克、SpaceX、特斯拉)、理解它们之间的关系(创始人、投资),并将这些信息以图谱形式存储起来,随时可查询、扩展。MindGraph 正是这样一个能够将自然语言转化为结构化知识图谱的 AI 原生应用。
MindGraph 由长期活跃于 AI 领域的创业者 Yohei Nakajima 开发,他在 2024 年 3 月开源了这个项目。Yohei 同时也是 agent-intelligence 领域的活跃研究者,MindGraph 可以看作是他探索「AI 如何更智能地组织信息」的实验性产物。项目定位为 API-First 的图数据库 + AI 集成平台,既可以作为独立知识管理系统使用,也可以嵌入到其他 CRM 或业务系统中。
一个典型的使用场景是:当用户在 CRM 系统中输入一段客户拜访记录(如「张总上周拜访了华为深圳总部,讨论了智慧城市合作」)时,MindGraph 会自动提取出张总、华为、智慧城市等实体,以及他们之间的关联关系,存入知识图谱。整个过程无需人工标注,完全由 GPT 模型驱动。

图1:项目作者 Yohei Nakajima
MindGraph 的技术架构分为三层:
第一层:Flask Web 框架
项目使用 Flask 作为底层框架,通过 Blueprint 模式组织路由。main.py 作为入口,在 0.0.0.0:81 端口启动服务。前端使用轻量级 HTML + JavaScript,通过 Cytoscape.js 实现图谱可视化。用户可以通过浏览器直接操作图谱、搜索节点、触发 AI 集成功能。
第二层:知识图谱存储层
项目内置了一个抽象的数据库集成层,通过 models.py 定义统一的接口(add_entity、get_entity、search_entities、add_relationship 等),支持多种数据库后端。app/integrations/database/ 中包含 CurrentDBIntegration,负责实际的持久化存储(目前是内存模式)。
schema.json 定义了 9 种实体类型(Person、Organization、Object、Concept、Event、Technology、Market、Product),每种类型都有自己独特的边(关系)类型定义。例如 Person 实体支持「Works for」(所属公司)、「Invented/Discovered」(发明创造)等关系,Organization 实体支持「Competes with」(竞争对手)等关系。这种强类型的 schema 设计使得知识图谱的语义表达更加精确。
第三层:Integration Manager 动态集成系统
这是 MindGraph 最具特色的设计。IntegrationManager 充当插件注册中心,app/integrations/ 目录下每个 .py 文件都是一个可插拔的集成模块。系统支持两种集成方式:
POST /trigger-integration/<name> 接口触发特定集成目前已激活的核心集成包括:
| 集成名称 | 功能 | 使用的 AI 模型 |
|---|---|---|
natural_input | 将自然语言文本转为知识图谱 | GPT-3.5-turbo |
natural_input_flexible | 更灵活的 NL→图谱转换 | GPT-3.5-turbo |
conditional_entity_addition | AI 判断是否添加重复实体 | GPT-4-turbo-preview |
conditional_relationship_addition | AI 判断是否添加重复关系 | GPT-4-turbo-preview |
add_multiple_conditional | 批量添加实体和关系(自动去重) | GPT-4 |
ai_search | 自然语言搜索图谱 | GPT-3.5-turbo |
url_input | 从网页 URL 提取实体信息 | BeautifulSoup4 |
latent_input | 扩展性知识注入(AI 联想补充) | GPT-3.5-turbo |
Conditional Addition 机制是整个系统的核心创新点。以 conditional_entity_addition 为例:当新实体被提交时,系统会先搜索现有图谱,判断是否存在相似实体(通过 GPT-4 判断语义相似性),如果存在则跳过添加,从而避免知识图谱中出现大量重复节点。这一机制解决了知识图谱系统中普遍存在的数据冗余问题。
Web UI 使用流程:
.env 文件,填入 OPENAI_API_KEYpoetry install 安装依赖poetry run python main.py 启动服务http://localhost:81,看到交互式图谱界面API 直接调用:对于开发者来说,API 模式更加灵活。可以通过 POST /trigger-integration/natural_input 传入自然语言文本,系统返回构建好的图谱节点和边数据。POST /trigger-integration/add_multiple_conditional 支持批量导入复杂的多实体关系数据。
亮点:
app/integrations/ 创建新文件,无需修改核心代码局限:
pyproject.toml 中列出了多个图数据库依赖(nebula3-python、falkordb、pytorch-forecasting),但这些依赖在代码中并没有被实际使用,说明项目处于 PoC(概念验证)阶段,作者可能在探索不同图数据库后端的集成方案。
在大语言模型应用的浪潮中,RAG(检索增强生成)是主流的信息注入方式。但 RAG 本质上是「检索 + 生成」的拼接,知识的表达是扁平的向量。MindGraph 代表了一种更结构化的方向——用知识图谱替代向量数据库作为知识存储层。
这种方案的潜在优势在于:
不过知识图谱也有自己的挑战:schema 设计需要领域知识、自然语言到结构化知识的转换准确性有待提升、图数据库的查询性能在超大规模数据下需要专门优化。MindGraph 作为开源 PoC 项目,为这一方向提供了有价值的参考实现。
# 克隆项目
git clone https://github.com/yoheinakajima/mindgraph.git
cd mindgraph
# 安装依赖
poetry install
# 配置环境变量
echo 'OPENAI_API_KEY=sk-your-key-here' > .env
# 启动服务
poetry run python main.py
# 服务运行在 http://0.0.0.0:81
硬件需求极低,一台普通开发机即可运行,无 GPU 依赖。