ai-knowledge-graph
ai-knowledge-graph 是一个利用大语言模型(LLM)从非结构化文本中自动提取知识并生成可视化知识图谱的开源工具。它将输入文档拆分为合适大小的段落,通过 LLM 识别其中的实体及其关系,以“主语-谓语-宾语”三元组的形式组织信息,并最终生成可交互的 HTML 知识图谱页面。
该工具解决了从杂乱文本中高效梳理结构化知识的难题,特别适合需要快速理解复杂文档内容、发现隐藏关联的研究人员、数据分析师或开发者。无论是技术文档、历史资料还是行业报告,只需提供纯文本,即可获得直观的关系网络。
ai-knowledge-graph 支持任意兼容 OpenAI API 的模型服务(如 Ollama、LM Studio、Azure OpenAI、Anthropic 等),并具备智能分块、实体标准化和关系推理等能力——例如自动合并不同段落中指代同一概念的名称,或推断间接关联。用户可通过配置文件灵活调整处理参数,命令行操作简单,也支持模块化安装使用。整个流程兼顾准确性与易用性,让知识图谱构建不再依赖复杂的数据预处理。
使用场景
某高校历史系研究生正在撰写关于“第二次工业革命”的论文,需从一本200页的英文专著中梳理关键技术、人物与国家之间的复杂关联。
没有 ai-knowledge-graph 时
- 手动通读全文并摘录关键信息,耗时数周且容易遗漏隐含关系
- 不同章节对同一实体(如“Thomas Edison” vs “Edison”)命名不一致,导致后续整理混乱
- 难以直观发现跨章节的间接联系(例如某项技术如何通过多国合作演进)
- 最终只能用静态表格或手绘草图呈现关系,无法交互探索
使用 ai-knowledge-graph 后
- 将整本PDF转为纯文本后,仅用一条命令即可自动提取数千条结构化三元组(如“Nikola Tesla — 发明 — 交流电系统”)
- 内置实体标准化功能自动合并“Bell Telephone Company”和“贝尔电话公司”等变体,确保图谱一致性
- 启用关系推理后,系统自动补全了“德国化学工业 → 推动 → 美国染料制造”等原文未明说但逻辑成立的连接
- 生成的交互式HTML图谱支持缩放、搜索与点击展开详情,便于快速定位关键节点并导出子图用于论文插图
ai-knowledge-graph 将数周的手工知识整理压缩至几分钟,同时揭示出肉眼难以察觉的深层关联,极大提升人文研究中的信息洞察效率。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始

AI 驱动的知识图谱生成器
该系统接收一份非结构化文本文件,并使用你选择的 LLM(大语言模型,Large Language Model)从中提取以“主语-谓语-宾语”(Subject-Predicate-Object, SPO)三元组形式表示的知识,并将这些关系可视化为一个交互式知识图谱。
使用本项目生成的知识图谱示例可在此查看:工业革命知识图谱
功能特性
- 文本分块(Text Chunking):自动将大型文档拆分为便于处理的小块
- 知识抽取(Knowledge Extraction):利用 AI 识别实体及其相互关系
- 实体标准化(Entity Standardization):确保不同文本块中的实体命名一致
- 关系推理(Relationship Inference):发现图谱中不相连部分之间的额外关系
- 交互式可视化(Interactive Visualization):生成可交互的图谱可视化结果
- 兼容任意 OpenAI 兼容的 API 端点:支持 Ollama、LM Studio、OpenAI、vLLM、LiteLLM(后者可接入 AWS Bedrock、Azure OpenAI、Anthropic 等众多 LLM 服务)
依赖要求
- Python 3.11+
- 所需依赖包(可通过
pip install -r requirements.txt或uv sync安装)
快速开始
- 克隆本仓库
- 安装依赖:
pip install -r requirements.txt - 在
config.toml中配置你的设置 - 运行系统:
python generate-graph.py --input your_text_file.txt --output knowledge_graph.html
或使用 UV:
uv run generate-graph.py --input your_text_file.txt --output knowledge_graph.html
或安装为模块后使用:
pip install --upgrade -e .
generate-graph --input your_text_file.txt --output knowledge_graph.html
配置说明
系统可通过 config.toml 文件进行配置:
[llm]
model = "gemma3" # Google 开源权重模型
api_key = "sk-1234"
base_url = "http://localhost:11434/v1/chat/completions" # 本地运行的 Ollama 实例(也可替换为任意 OpenAI 兼容端点)
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 # 使用 LLM 进行关系推理
apply_transitive = true # 应用传递性推理规则
命令行选项
--input FILE:待处理的输入文本文件--output FILE:用于可视化的输出 HTML 文件(默认:knowledge_graph.html)--config FILE:配置文件路径(默认:config.toml)--debug:启用调试输出,显示原始 LLM 响应--no-standardize:禁用实体标准化--no-inference:禁用关系推理--test:使用测试数据生成示例可视化
使用帮助信息(--help)
generate-graph --help
usage: generate-graph [-h] [--test] [--config CONFIG] [--output OUTPUT] [--input INPUT] [--debug] [--no-standardize] [--no-inference]
Knowledge Graph Generator and Visualizer
options:
-h, --help show this help message and exit
--test Generate a test visualization with sample data
--config CONFIG Path to configuration file
--output OUTPUT Output HTML file path
--input INPUT Path to input text file (required unless --test is used)
--debug Enable debug output (raw LLM responses and extracted JSON)
--no-standardize Disable entity standardization
--no-inference Disable relationship inference
示例运行
命令:
generate-graph --input data/industrial-revolution.txt --output industrial-revolution-kg.html
控制台输出:
Using input text from file: data/industrial-revolution.txt
==================================================
阶段 1:初始三元组提取(Triple Extraction)
==================================================
正在将文本处理为 13 个块(每块大小:100 词,重叠:20 词)
正在处理块 1/13(100 词)
正在处理块 2/13(100 词)
正在处理块 3/13(100 词)
正在处理块 4/13(100 词)
正在处理块 5/13(100 词)
正在处理块 6/13(100 词)
正在处理块 7/13(100 词)
正在处理块 8/13(100 词)
正在处理块 9/13(100 词)
正在处理块 10/13(100 词)
正在处理块 11/13(100 词)
正在处理块 12/13(86 词)
正在处理块 13/13(20 词)
从所有块中共提取出 216 个三元组
==================================================
阶段 2:实体标准化(Entity Standardization)
==================================================
起始状态:216 个三元组,201 个唯一实体
正在对所有三元组中的实体名称进行标准化...
对 15 个实体组应用了基于大语言模型(LLM)的实体标准化
将 201 个实体标准化为 181 种标准形式
标准化后:216 个三元组,160 个唯一实体
==================================================
阶段 3:关系推理(Relationship Inference)
==================================================
起始状态:216 个三元组
推理前出现次数最多的 5 种关系类型:
- enables: 出现 20 次
- impacts: 出现 15 次
- enabled: 出现 12 次
- pioneered: 出现 10 次
- invented: 出现 9 次
正在推断实体之间的额外关系...
在图中识别出 9 个不连通的社区(communities)
推断出 3 个社区间的新关系
推断出 3 个社区间的新关系
推断出 3 个社区间的新关系
推断出 3 个社区间的新关系
推断出 3 个社区间的新关系
推断出 3 个社区间的新关系
推断出 3 个社区间的新关系
推断出 3 个社区间的新关系
推断出 3 个社区间的新关系
推断出 3 个社区间的新关系
推断出 9 个社区内的新关系
推断出 2 个社区内的新关系
基于词汇相似性推断出 88 个关系
新增了 -22 个推断关系
推理后出现次数最多的 5 种关系类型:
- related to: 出现 65 次
- advances via Artificial Intelligence: 出现 36 次
- pioneered via computing: 出现 26 次
- enables via computing: 出现 24 次
- enables: 出现 21 次
新增了 370 个推断关系
最终知识图谱:564 个三元组
原始知识图谱数据已保存至 /mnt/c/Users/rmcdermo/Documents/industrial-revolution-kg.json
正在处理 564 个三元组以生成可视化
发现 161 个唯一节点
发现 355 个推断关系
使用 Louvain 方法检测到 9 个社区
NetworkX 图中的节点数:161
NetworkX 图中的边数:537
知识图谱可视化已保存至 /mnt/c/Users/rmcdermo/Documents/industrial-revolution-kg.html
图统计信息:{
"nodes": 161,
"edges": 564,
"original_edges": 209,
"inferred_edges": 355,
"communities": 9
}
知识图谱统计信息:
节点数:161
边数:564
社区数:9
要查看可视化结果,请在浏览器中打开以下文件:
file:///mnt/c/Users/rmcdermo/Documents/industrial-revolution-kg.html
工作原理
- 分块(Chunking):将文档分割为有重叠的文本块,以适应大语言模型(LLM)的上下文窗口限制。
- 第一轮处理 - SPO 提取(Subject-Predicate-Object Extraction):
- 每个文本块由 LLM 处理,提取主语-谓语-宾语(SPO)三元组
- 在
process_with_llm函数中实现 - LLM 识别每个文本段中的实体及其关系
- 所有块的结果汇总形成初始知识图谱
- 第二轮处理 - 实体标准化(Entity Standardization):
- 通过文本规范化进行基础标准化
- 可选启用 LLM 辅助的实体对齐(由配置项
standardization.use_llm_for_entities控制) - 启用后,LLM 会审查图谱中所有唯一实体,并识别指向同一概念的实体组
- 解决同一实体在不同文本块中表述不一致的问题(例如:“AI”、“artificial intelligence”、“AI system”)
- 标准化有助于构建更连贯、更易浏览的知识图谱
- 第三轮处理 - 关系推理(Relationship Inference):
- 自动推断传递性关系
- 可选启用 LLM 辅助的不连通图组件间关系推理(由配置项
inference.use_llm_for_inference控制) - 启用后,LLM 会分析来自不连通社区的代表性实体,并推断合理的关系
- 通过添加文本中未明确说明的逻辑连接,减少图谱碎片化
- 基于规则和基于 LLM 的推理方法协同工作,构建更全面的图谱
- 可视化(Visualization):使用 PyVis 库生成交互式 HTML 可视化
第二轮和第三轮处理均为可选项,可在配置中禁用,以最小化 LLM 使用或手动控制这些流程。
可视化特性
- 社区颜色编码:节点颜色代表不同社区
- 节点大小:根据重要性(度中心性、介数中心性、特征向量中心性)调整节点大小
- 关系类型:原始关系以实线显示,推断关系以虚线显示
- 交互控件:支持缩放、平移、悬停查看详情、过滤及物理引擎控制
- 浅色(默认)和深色主题
项目结构
.
├── config.toml # 系统的主配置文件
├── generate-graph.py # 直接作为脚本运行时的入口点
├── pyproject.toml # Python 项目元数据和构建配置
├── requirements.txt # 供 'pip' 用户使用的 Python 依赖项
├── uv.lock # 供 'uv' 用户使用的 Python 依赖项
└── src/ # 源代码
├── generate_graph.py # 作为模块运行时的主入口脚本
└── knowledge_graph/ # 核心包
├── __init__.py # 包初始化文件
├── config.py # 配置加载与验证
├── entity_standardization.py # 实体标准化(Entity Standardization)算法
├── llm.py # LLM(大语言模型,Large Language Model)交互与响应处理
├── main.py # 主程序流程与协调逻辑
├── prompts.py # LLM 提示词(Prompts)的集中管理
├── text_utils.py # 文本处理与分块工具
├── visualization.py # 知识图谱可视化生成器
└── templates/ # 可视化用的 HTML 模板
└── graph_template.html # 交互式图谱的基础模板
程序流程
下图展示了程序的执行流程。
flowchart TD
%% Main entry points
A[main.py - Entry Point] --> B{Parse Arguments}
%% Test mode branch
B -->|--test flag| C[sample_data_visualization]
C --> D[visualize_knowledge_graph]
%% Normal processing branch
B -->|normal processing| E[load_config]
E --> F[process_text_in_chunks]
%% Text processing
F --> G[chunk_text]
G --> H[process_with_llm]
%% LLM processing
H --> I[call_llm]
I --> J[extract_json_from_text]
%% Entity standardization phase
F --> K{standardization enabled?}
K -->|yes| L[standardize_entities]
K -->|no| M{inference enabled?}
L --> M
%% Relationship inference phase
M -->|yes| N[infer_relationships]
M -->|no| O[visualize_knowledge_graph]
N --> O
%% Visualization components
O --> P[_calculate_centrality_metrics]
O --> Q[_detect_communities]
O --> R[_calculate_node_sizes]
O --> S[_add_nodes_and_edges_to_network]
O --> T[_get_visualization_options]
O --> U[_save_and_modify_html]
%% Subprocesses
L --> L1[_resolve_entities_with_llm]
N --> N1[_identify_communities]
N --> N2[_infer_relationships_with_llm]
N --> N3[_infer_within_community_relationships]
N --> N4[_apply_transitive_inference]
N --> N5[_infer_relationships_by_lexical_similarity]
N --> N6[_deduplicate_triples]
%% File outputs
U --> V[HTML Visualization]
F --> W[JSON Data Export]
%% Prompts usage
Y[prompts.py] --> H
Y --> L1
Y --> N2
Y --> N3
%% Module dependencies
subgraph Modules
main.py
config.py
text_utils.py
llm.py
entity_standardization.py
visualization.py
prompts.py
end
%% Phases
subgraph Phase 1: Triple Extraction
G
H
I
J
end
subgraph Phase 2: Entity Standardization
L
L1
end
subgraph Phase 3: Relationship Inference
N
N1
N2
N3
N4
N5
N6
end
subgraph Phase 4: Visualization
O
P
Q
R
S
T
U
end
程序流程说明
入口点:程序从
main.py开始,解析命令行参数。模式选择:
- 如果提供了
--test标志,则生成一个示例可视化结果 - 否则,处理输入的文本文件
- 如果提供了
配置加载:使用
config.py从config.toml中加载配置文本处理:
- 使用
text_utils.py将文本按重叠方式切分为多个块 - 对每个文本块调用 LLM 提取三元组(triples)
- 使用
prompts.py中的提示词引导 LLM 的提取过程
- 使用
实体标准化(可选):
- 对所有三元组中的实体名称进行标准化
- 在存在歧义的情况下,可能使用 LLM 进行实体消歧(entity resolution)
- 使用
prompts.py中专门用于实体消歧的提示词
关系推理(可选):
- 识别图谱中的社区(communities)
- 推理不同社区之间的潜在关系
- 应用传递性推理(transitive inference)和词汇相似性规则
- 使用
prompts.py中专门用于关系推理的提示词 - 对三元组进行去重
可视化:
- 计算中心性指标(centrality metrics)并检测社区结构
- 根据节点重要性确定其大小和颜色
- 使用 PyVis 生成交互式 HTML 可视化
- 利用模板自定义 HTML 内容
输出:
- 将知识图谱同时保存为 HTML 和 JSON 格式
- 显示关于节点、边和社区的统计信息
版本历史
0.6.32025/12/280.6.22025/12/280.6.12025/05/120.6.02025/03/300.5.72025/03/270.5.62025/03/250.5.52025/03/250.5.42025/03/250.5.32025/03/250.4.32025/03/240.4.12025/03/240.4.02025/03/240.3.32025/03/240.3.12025/03/230.2.02025/03/230.1.02025/03/23常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。