Python + Neo4j 构建知识图谱实战指南
介绍知识图谱与 Neo4j 图数据库基础概念。通过 Neo4j Desktop 安装环境,使用 Cypher 语言创建节点与关系。演示利用 Python 的 neo4j 驱动连接数据库,批量写入西游记人物关系数据,并在浏览器中进行可视化展示。适合零基础入门图数据库开发。

介绍知识图谱与 Neo4j 图数据库基础概念。通过 Neo4j Desktop 安装环境,使用 Cypher 语言创建节点与关系。演示利用 Python 的 neo4j 驱动连接数据库,批量写入西游记人物关系数据,并在浏览器中进行可视化展示。适合零基础入门图数据库开发。

摘要:大数据时代,数据之间的关系往往比数据本身更有价值。传统的 SQL 数据库在处理复杂关系(如社交网络、推荐系统、风控分析)时显得力不从心,而知识图谱和图数据库 Neo4j 正是为此而生。
在动手写代码之前,我们先用大白话把两个核心概念捋清楚。
不要被高大上的名字吓到。知识图谱本质上就是把世界上的事物(节点)和它们之间的联系(关系)画成一张巨大的网。
(张三)--[朋友]-->(李四)。它由三要素组成:
如果说 SQL 是关系型数据库的霸主,那么 Neo4j 就是图数据库(Graph Database)的王者。
一句话总结: 我们用 Python 处理数据,把数据喂给 Neo4j,最终形成可视化的知识图谱。
对于初学者,推荐使用 Neo4j Desktop(桌面版),不仅免费,而且图形化界面非常友好,免去了复杂的命令行配置。
123456),一定要记住!当状态灯变绿后,点击 Open 或者在浏览器输入 http://localhost:7474。
neo4j123456)在用 Python 之前,我们先在 Neo4j 浏览器的输入框里敲一行代码,感受一下图的魅力。
输入以下命令并按回车(或点击播放按钮):
CREATE (p1:Person {name: '孙悟空', title: '齐天大圣'})
CREATE (p2:Person {name: '唐僧', title: '师傅'})
CREATE (p1)-[:PROTECT {role: '保镖'}]->(p2)
RETURN p1, p2
你会看到屏幕上出现了两个圆圈(节点)和一条连线。这就是最简单的图谱!
在实际工作中,我们不可能手动一条条敲 Cypher 命令,而是通过 Python 读取文件(CSV/Excel)并批量写入。
打开终端或 CMD,运行:
pip install neo4j
下面我编写了一个通用的连接类,你可以直接复制使用。我们将构建一个简单的'西游记人物关系图谱'。
新建一个 build_graph.py 文件:
from neo4j import GraphDatabase
class KnowledgeGraph:
def __init__(self, uri, user, password):
""" 连接 Neo4j 数据库 """
self.driver = GraphDatabase.driver(uri, auth=(user, password))
def close(self):
""" 关闭连接 """
self.driver.close()
def create_node_and_relationship(self, person1, relation, person2):
""" 创建节点和关系 使用 MERGE 关键字,保证节点不被重复创建 """
with self.driver.session() as session:
# Cypher 语句说明:
# 1. 查找或创建名为 person1 的节点
# 2. 查找或创建名为 person2 的节点
# 3. 建立两者之间的关系
query = """MERGE (p1:Character {name: $name1})
MERGE (p2:Character {name: $name2})
MERGE (p1)-[r:RELATION {type: $rel}]->(p2)
RETURN p1, p2, r"""
session.run(query, name1=person1, name2=person2, rel=relation)
print(f"成功构建:{person1} --[{relation}]--> {person2}")
def clear_data(self):
""" (可选) 清空数据库,方便测试 """
with self.driver.session() as session:
session.run("MATCH (n) DETACH DELETE n")
print("数据库已清空!")
# --- 主程序执行 ---
if __name__ == "__main__":
URI =
USER =
PASSWORD =
data = [
(, , ),
(, , ),
(, , ),
(, , ),
(, , ),
(, , ),
(, , ),
(, , )
]
kg = KnowledgeGraph(URI, USER, PASSWORD)
:
kg.clear_data()
()
p1, rel, p2 data:
kg.create_node_and_relationship(p1, rel, p2)
()
Exception e:
()
:
kg.close()
运行上述脚本,控制台会输出:
数据库已清空!
开始构建知识图谱...
成功构建:唐僧 --[师徒]--> 孙悟空
成功构建:唐僧 --[师徒]--> 猪八戒
...
图谱构建完成!
现在回到你的 Neo4j Browser (http://localhost:7474)。
在顶部输入框输入以下命令查询所有数据:
MATCH (n) RETURN n
点击播放按钮。你将看到一张错综复杂、可以拖拽的人物关系网!
你可以尝试:
恭喜你!你已经完成了从 0 到 1 的知识图谱构建。我们通过 Python 的 neo4j 库,成功将结构化的数据转化为了图谱。
本文学到了什么?
下一步可以做什么? 构建图谱只是第一步。有了这个图谱,我们不仅可以'看',还可以让 AI 去'理解'。后续可探索结合 BERT 模型与 Neo4j 实现智能问答系统 (KBQA),让 AI 能回答复杂问题。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online