AI 知识图谱生成器详解:从非结构化文本到可视化图谱
你有一堆文档(论文、报告、笔记、文章),想快速搞清其中的"谁和谁有关系、什么导致了什么、谁属于哪一类"——手动阅读提炼太慢,交给 LLM 又只给你一段总结文字。Robert McDermott 开源的 ai-knowledge-graph 恰好解决这个痛点:它用 LLM 从非结构化文本中自动提取"主-谓-宾"三元组(SPO triplets),然后渲染成一个交互式知识图谱——节点是实体,连线是关系,一目了然。2.5k+ Star,Apache 2.0 许可,支持任意 OpenAI 兼容 API(Ollama / LM Studio / vLLM / LiteLLM / OpenAI 官方)。本文讲清它是什么、怎么工作、怎么上手。
GitHub 仓库:robert-mcdermott/ai-knowledge-graph(2.5k Star);在线 Demo:工业革命知识图谱;原理博客:From Unstructured Text to Interactive Knowledge Graphs。
1、它是什么
ai-knowledge-graph 是一个 Python 工具,核心能力是:给一段非结构化文本(txt 文件),用 LLM 自动提取实体和关系,生成一个交互式 HTML 知识图谱。你不需要手工标注、不需要写 SPARQL 查询、不需要装 Neo4j——给它一个文本文件,它吐出一个可拖拽可缩放的网页图谱。
// 核心定位
输入:一段非结构化文本(论文/报告/笔记/文章)
处理:LLM 提取 "主语-谓语-宾语"(SPO)三元组
输出:交互式 HTML 知识图谱(节点=实体,连线=关系)
// 基本面
// 作者:Robert McDermott
// 语言:Python 3.11+
// 星标:2,551 Star
// 许可:Apache 2.0
// 依赖:NetworkX(图谱)+ PyVis(可视化)+ LLM(提取)
// 创建:2025-03,最后更新:2025-122、工作原理:四阶段流水线
这个工具的处理流程非常清晰,分四个阶段,把一段原始文本变成一张结构化图谱:
// 阶段一:文本切块(Chunking)
// 把长文档切成小块(默认每块 200 词,重叠 20 词)
// → 因为 LLM 上下文有限,小块处理更精确
// → 重叠确保跨块的实体不丢失
// 阶段二:三元组提取(Triple Extraction)
// 对每块调用 LLM,让它提取 SPO 三元组
// → "瓦特 -> 发明了 -> 蒸汽机"
// → "蒸汽机 -> 推动了 -> 工业革命"
// → "工业革命 -> 发生在 -> 18 世纪"
// → LLM 负责理解语义,输出结构化的 (主语, 谓语, 宾语)
// 阶段三:实体标准化(Entity Standardization)
// 跨块合并同一个实体的不同叫法
// → "詹姆斯瓦特" = "瓦特" = "James Watt" → 统一为一个节点
// → 可选:用 LLM 做实体消歧(判断两个名字是否指同一实体)
// 阶段四:关系推理(Relationship Inference)
// 发现已提取实体之间的额外关系
// → 如果 A 发明了 B、B 推动了 C
// → 推理出 A -> 间接影响了 -> C(传递性推理)
// → 可选:用 LLM 做更复杂的关系发现
// 最终输出:NetworkX 图谱 → PyVis 可视化 → 交互式 HTML这四步的设计思路很好:切块解决"LLM 上下文不够"、提取解决"从文字到结构"、标准化解决"同一个实体不同名字"、推理解决"挖掘隐含关系"。每一步都可配置(开关 + 参数),按需取舍。
3、核心特性
// 六大核心特性
自动文本切块
大文档自动拆分为可处理的块,带重叠窗口,不丢上下文
LLM 知识提取
用 AI 识别实体和关系,输出 SPO 三元组
→ 比正则/规则提取强大得多(LLM 理解语义)
实体标准化
确保跨块的实体命名一致
→ "蒸汽机"和"蒸汽发动机"合并为一个节点
→ 可选 LLM 辅助消歧
关系推理
发现已提取实体之间的额外关系
→ 传递性推理 + LLM 推理(可选)
→ 让图谱更"丰满",不只是字面提取
交互式可视化
PyVis 渲染的 HTML 图谱:可拖拽节点、可缩放、可点击查看
→ 输出一个 HTML 文件,用浏览器打开就能看
兼容任意 OpenAI 兼容 API
Ollama(本地开源模型)/ LM Studio / vLLM / LiteLLM / OpenAI 官方
→ 不绑定某一个 LLM,本地/云端均可4、安装与使用
// 方式一:pip 安装
git clone https://github.com/robert-mcdermott/ai-knowledge-graph.git
cd ai-knowledge-graph
pip install -r requirements.txt // 或 uv sync
// 方式二:作为模块安装
pip install --upgrade -e .
// 配置:编辑 config.toml
[llm]
model = "gemma3" // 用什么模型
api_key = "sk-1234"
base_url = "http://localhost:11434/v1/chat/completions" // 本地 Ollama
max_tokens = 8192
temperature = 0.2
[chunking]
chunk_size = 200 // 每块词数
overlap = 20 // 重叠词数
[standardization]
enabled = true // 开启实体标准化
use_llm_for_entities = true // 用 LLM 辅助消歧
[inference]
enabled = true // 开启关系推理
use_llm_for_inference = true
apply_transitive = true // 传递性推理
// 运行:一行命令生成图谱
python generate-graph.py --input your_text.txt --output graph.html
// 或
generate-graph --input your_text.txt --output graph.html
// 输出:一个 graph.html 文件,浏览器打开即可交互5、LLM 兼容性:本地优先,不绑供应商
// 支持的 LLM 后端(只要是 OpenAI 兼容 API 就行)
Ollama(推荐本地用)
model = "gemma3" / "llama3" / "qwen2.5"
base_url = "http://localhost:11434/v1/chat/completions"
→ 完全本地运行,数据不出域,免费
LM Studio
base_url = "http://localhost:1234/v1/chat/completions"
→ 图形化的本地模型管理,选模型一键切
vLLM(高吞吐推理)
base_url = "http://your-server:8000/v1/chat/completions"
→ 大规模部署场景
LiteLLM(多供应商代理)
→ 一层代理接所有云模型(AWS Bedrock / Azure / Anthropic)
→ base_url 指向 LiteLLM 即可
OpenAI 官方
base_url = "https://api.openai.com/v1/chat/completions"
model = "gpt-5"
→ 最强但最贵,数据出域- 推荐:敏感文档用 Ollama 本地跑(gemma3 / qwen2.5 免费且私有);追求质量用 GPT-5 / Claude
6、应用场景
// 适合用 ai-knowledge-graph 的场景
学术研究
输入:一篇论文 / 一组文献
→ 自动提取"方法-数据集-结论-引用关系"的知识图谱
→ 快速看清论文的核心脉络和实体关系
企业知识管理
输入:公司文档 / 技术规范 / 产品手册
→ 自动构建"产品-模块-依赖-团队"关系网
→ 新人入职看图谱比读文档快 10 倍
情报分析
输入:新闻报道 / 研报 / 行业资讯
→ 提取"公司-事件-人物-时间-因果"关系
→ 一张图看清行业格局
学习笔记
输入:课程笔记 / 教材章节
→ 把知识点连成图谱,发现知识间的联系
→ 类似 Obsidian Graph View,但是自动生成
法律 / 医疗
输入:法规条文 / 病历摘要
→ 提取"条款-适用-判决"或"症状-诊断-用药"关系
→ 注意:LLM 提取的准确性需人工审核7、与 GraphRAG / 传统知识图谱对比
方案 原理 交互方式 复杂度
---------------------------------------------------------------------------
ai-knowledge-graph LLM 提取 SPO 三元组 交互式 HTML 低(一行命令)
GraphRAG LLM 提取+社区检测+检索 RAG 查询 中高(需理解框架)
Neo4j 手工建图 人工定义 schema+录入 Cypher 查询 高(需图数据库)
Obsidian 双链 人工 [[]] 链接 Graph View 低但需手动链ai-knowledge-graph 的定位是"最轻量的自动化知识图谱"——不需要学 GraphRAG 的社区检测理论、不需要装 Neo4j 写 Cypher、不需要像 Obsidian 那样手动 [[ ]] 链接。给它一个文本文件,它吐出一个可视化图谱。牺牲了查询能力(不能像 Neo4j 那样做复杂图查询),换来了极致的易用性。如果你的需求只是"看一眼这堆文本里的关系长什么样",它是最快的选择。
8、局限性与注意事项
- 提取质量依赖 LLM:弱模型(小参数)可能漏实体/错关系,建议用 7B 以上模型
- 实体标准化不是完美的:LLM 可能误判两个不同实体为同一个
- 输出是静态 HTML:不能做动态查询(不像 Neo4j 可以 Cypher 查),只能浏览
- 大文档 token 消耗:每个块都调一次 LLM,1000 词文档约 10 次调用
- 不做事实校验:LLM 提取的关系不一定正确,关键关系需人工审核
- 中文支持:取决于所选 LLM 的中文能力,推荐 Qwen2.5 / DeepSeek
9、总结
ai-knowledge-graph 是一个用 LLM 从非结构化文本自动生成知识图谱的开源工具。核心流程是文本切块 → LLM 提取 SPO 三元组 → 实体标准化 → 关系推理 → 交互式 HTML 可视化。支持任意 OpenAI 兼容 API(Ollama 本地优先),一行命令生成图谱,2.5k Star,Apache 2.0 许可。
关键要点:
- 定位:从非结构化文本自动生成交互式知识图谱,一行命令搞定
- 四阶段流水线:切块 → LLM 提取三元组 → 实体标准化 → 关系推理
- 兼容:Ollama / LM Studio / vLLM / LiteLLM / OpenAI,本地优先不绑供应商
- 输出:PyVis 渲染的交互式 HTML,浏览器打开即可拖拽/缩放/点击
- 局限:静态图谱(不能查询)、提取质量依赖 LLM、大文档 token 消耗大
对于需要快速理解大量文档"关系脉络"的人而言——无论是研究者读论文、分析师看研报、还是产品经理梳理需求——这个工具都是"最高性价比的知识可视化方案"。不需要学图数据库、不需要懂 GraphRAG、不需要手动标注,给它一个 txt 文件,几分钟后你就能在一个交互式图谱里看到"谁和谁有关系、什么导致了什么"。这就是"LLM + 知识图谱"民主化的样子——把以前需要专家才能做的事,变成一行命令。
参考资料:
robert-mcdermott/ai-knowledge-graph(GitHub 仓库,2.5k Star)
实现原理:From Unstructured Text to Interactive Knowledge Graphs(Medium)