微信扫码
添加专属顾问
我要投稿
AI知识图谱:让复杂信息一目了然,探索文本的全新交互方式! 核心内容: 1. 知识图谱的基本概念与工作原理 2. AI驱动工具的实际应用与优势 3. 五步工作流程实现文本到图谱的转换
想象一下这样的场景:你正被一份长达 50 页的关于气候变化的研究报告所淹没,试图理清其中错综复杂的联系。你的大脑感觉一团浆糊 🧠💥,你不断地划着重点,希望能让这些信息在脑海中留下印记。
是不是很熟悉?我深有同感!
正是在这种挣扎中,我偶然发现了一个彻底改变我学习方式的东西——由 AI 驱动的知识图谱。你可以把它看作信息版的 Instagram:既美观又直观,还充满探索的乐趣!📱✨
让我用最简单的方式来解释:
传统文本: "埃隆·马斯克在 2003 年创立了特斯拉。特斯拉制造电动车,而电动车能够减少污染。"
知识图谱: 一个由相互连接的‘节点’(点)组成的精美网络,其中:
你无需阅读大段文字,而是通过一张直观的地图即时看到各种关系!🗺️
我发现了一个超棒的免费工具,名为 AI-Knowledge-Graph,它能帮你搞定所有繁重的工作。这款工具的特别之处在于:
你可以把它想象成一条流水线:枯燥的文本进去,酷炫的可视化图谱出来:
"打破文本壁垒"
作用: 将大型文档分割成易于处理的小块。
原因: AI 模型无法一次性处理整本书(它们会“不堪重负”!)。
# 这段代码将你的文本分割成可管理的小块
from knowledge_graph.text_utils import chunk_text
# 工具会自动处理,但这是它的工作原理:
defchunk_text(text, chunk_size=200, overlap=20):
"""
将文本分割成重叠的块
Args:
text: 你的输入文本
chunk_size: 每块的最大词数 (默认: 200)
overlap: 块之间重叠的词数 (默认: 20)
Returns:
文本块列表
"""
words = text.split()
chunks = []
for i inrange(0, len(words), chunk_size - overlap):
chunk = ' '.join(words[i:i + chunk_size])
chunks.append(chunk)
if i + chunk_size >= len(words):
break
return chunks
# 示例用法:
text = "你的长文档文本在这里..."
chunks = chunk_text(text, chunk_size=200, overlap=20)
print(f"从你的文本中创建了 {len(chunks)} 个块!")
实际案例:
让 AI 像侦探般洞察
AI 会扫描每个文本块,寻找以下格式的事实:主体(Subject) → 谓语(Predicate) → 客体(Object)
# 这是工具提取知识的方式(简化版)
from knowledge_graph.llm import process_with_llm
defextract_triples_from_chunk(chunk_text):
"""
从文本块中提取 主体-谓语-客体 三元组
Args:
chunk_text: 要分析的文本小块
Returns:
包含 'subject', 'predicate', 'object' 的字典列表
"""
# 工具使用专门的提示词来引导 AI
prompt = f"""
以 JSON 三元组的形式从这段文本中提取事实关系:
[{"subject": "entity1", "predicate": "relationship", "object": "entity2"}]
规则:
- 使用具体实体(不要使用“他”、“她”、“它”等代词)
- 关系描述要简短(1-3 个词),并且不能使用代词!
- 只提取事实,不提取观点
文本:{chunk_text}
"""
# 调用 AI 模型(使用你配置的 LLM)
response = process_with_llm(prompt)
# 解析 JSON 响应
try:
triples = json.loads(response)
return triples
except:
return [] # 如果解析失败则返回空列表
# 提取示例:
input_text = "尼尔·阿姆斯特朗在 1969 年阿波罗 11 号任务期间登上了月球。"
# AI 提取以下三元组:
extracted_facts = [
{"subject": "尼尔·阿姆斯特朗", "predicate": "登上了", "object": "月球"},
{"subject": "尼尔·阿姆斯特朗", "predicate": "参与了", "object": "阿波罗 11 号"},
{"subject": "阿波罗 11 号", "predicate": "发生于", "object": "1969 年"}
]
print(f"从文本中提取了 {len(extracted_facts)} 个事实!")
确保大家使用统一的“名牌”
问题: AI 可能会将同一个人称为“埃隆·马斯克”、“马斯克”或“埃隆”。
解决方案: 智能化的名称统一。
# 这是工具标准化实体名称的方式
from knowledge_graph.entity_standardization import standardize_entities
defclean_entity_names(all_triples):
"""
标准化所有三元组中的实体名称
Args:
all_triples: 从所有块中提取的三元组列表
Returns:
实体名称已更新为标准化的三元组
"""
# 步骤 1:收集所有独特的实体
all_entities = set()
for triple in all_triples:
all_entities.add(triple['subject'].lower())
all_entities.add(triple['object'].lower())
# 步骤 2:使用 AI 对相似实体进行分组
entity_groups = {
"ai": "artificial intelligence",
"artificial intelligence": "artificial intelligence",
"nyc": "new york city",
"new york": "new york city",
"new york city": "new york city"
}
# 注意:实际应用中,这部分逻辑会更加复杂,通常会借助 LLM 或采用更高级的启发式方法来进行实体分组。
# 这里为了演示,我们假设有这样一个预定义的映射。
# 步骤 3:使用标准化名称更新所有三元组
for triple in all_triples:
if triple['subject'].lower() in entity_groups:
triple['subject'] = entity_groups[triple['subject'].lower()]
if triple['object'].lower() in entity_groups:
triple['object'] = entity_groups[triple['object'].lower()]
return all_triples
# 标准化前——一片混乱!
raw_entities = ["AI", "Artificial Intelligence", "artificial intelligence", "NYC", "New York City"]
# 标准化后——整洁明了!
standardized_mapping = {
"AI": "artificial intelligence",
"Artificial Intelligence": "artificial intelligence",
"artificial intelligence": "artificial intelligence",
"NYC": "new york city",
"New York City": "new york city"
}
print("实体已标准化!不再有重复项。")
AI 变身“读心者”
有时文本并没有明确说明某些联系,但我们可以通过逻辑推理将其发现:
文本所言:
AI 推理:
# 基于规则的推理示例
defsmart_inference(facts):
new_facts = []
for fact1 in facts:
for fact2 in facts:
# 如果 A 生产 B,且 B 减少 C,那么 A 有助于减少 C
if (fact1['object'] == fact2['subject'] and
fact1['predicate'] == "makes"and
fact2['predicate'] == "reduces"):
new_facts.append({
"subject": fact1['subject'],
"predicate": "helps reduce",
"object": fact2['object'],
"inferred": True# 标记为 AI 推测
})
return new_facts
"从枯燥数据到精美图谱"
最后一步是把这些事实变成一个可以点击和拖拽的知识网络!
# 第一步:下载工具
git clone https://github.com/robert-mcdermott/ai-knowledge-graph
cd ai-knowledge-graph
# 第二步:安装依赖(选择一种方法)
pip install -r requirements.txt
# 或者,如果你更倾向于使用 UV(一种现代化的 Python 包管理工具)
uv sync
# 第三步:设置本地 AI 模型(我推荐 Ollama + Gemma2)
# 访问 https://ollama.ai 并按照其简单的设置步骤操作
# 然后拉取模型:ollama pull gemma2
编辑 config.toml
文件(这就像控制面板):
[llm]
model = "gemma2" # 使用哪个 AI 大脑
api_key = "sk-1234" # API 密钥(本地模型可选)
base_url = "http://localhost:11434/v1/chat/completions"# 指定本地运行的 AI 服务接口地址
max_tokens = 8192 # AI 一次可以输出多少 token(令牌)
temperature = 0.2 # 采样温度 (0.2 = 专注准确, 0.8 = 更具创造性)
[chunking]
chunk_size = 200 # 文本块大小(按词计算)
overlap = 20 # 文本块重叠部分(按词计算)
[standardization]
enabled = true # 清理混乱的名称
use_llm_for_entities = true# 让 AI 帮助标准化名称
[inference]
enabled = true # 让 AI 进行智能推测
use_llm_for_inference = true# 使用 AI 进行关系推理
apply_transitive = true # 应用传递性规则 (如果 A→B, B→C, 那么 A→C)
# 方法一:直接作为脚本运行
python generate-graph.py --input your_awesome_text.txt --output my_first_graph.html
# 方法二:使用 UV(如果你通过 uv sync 安装)
uv run generate-graph.py --input your_awesome_text.txt --output my_first_graph.html
# 方法三:以模块形式安装并执行命令
pip install --upgrade -e .
generate-graph --input your_awesome_text.txt --output my_first_graph.html
# 你可以添加的有用标志:
# --debug # 查看 AI 的思考过程
# --no-standardize # 跳过名称清理
# --no-inference # 只提取直接事实
# --test # 首先使用示例数据尝试
示例输出:
Harry Potter → lives with → Dursley Family
Dursley Family → lives on → Privet Drive
Hagrid → delivers → Hogwarts Letter
Hogwarts → is → Wizarding School
为何有用: 新员工可以迅速了解不同政策之间的联系!
temperature = 0.2 # 更加谨慎,确保结果准确无误
temperature = 0.5 # 平衡模式
temperature = 0.8 # 更有创造性,但可能产生幻觉
该工具使用了四个精心设计的提示词来引导 AI:
"你是一位知识提取专家。请找出以下格式的事实:
Subject → Predicate → Object
关系描述要简短(1-3 个词),并且不能使用代词!"
"请将这些指代同一事物的实体名称进行分组:
['AI', 'Artificial Intelligence', 'artificial intelligence']
为每个组选择一个最佳名称。"
"审视这些不相关的事实。你能从中得出什么逻辑联系?
要聪明,但不要凭空捏造事实!"
"你是一个精密机器。只输出干净的 JSON 数据。
不需要解释,不需要寒暄,只要结构化的数据。"
strict_mode = true
以确保准确性。我亲身见证的实际影响:
接下来,开发者们正在酝酿一系列激动人心的新功能,让我们先睹为快吧:
准备好将你的下一个文档转化为视觉杰作了吗?这是你的行动计划:
我们生活在一个 AI 能够将任何文本转化为精美交互式可视化的时代。AI-Knowledge-Graph 工具不仅仅是制作漂亮的图片——它关乎以不同的方式理解信息。
不管你是正在努力搞懂复杂概念的学生,还是想要挖掘新发现的研究员,抑或仅仅是热爱将数据转化为故事的人,这个工具都将令你大开眼界!🤯
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-07-16
2025-06-02
2025-06-17
2025-06-02
2025-06-13
2025-06-17
2025-06-15
2025-07-27
2025-07-15
2025-07-18