什么是知识图谱与 Neo4j?
在动手写代码前,先理清两个核心概念。
知识图谱 (Knowledge Graph)
别被名字吓到,本质就是把事物(节点)和联系(关系)画成网。Excel 思维是罗列数据,图谱思维是链接数据。比如 (张三)--[朋友]-->(李四)。它由实体、关系、属性三要素组成:
- 实体 (Entity/Node):比如'周杰伦'、'昆凌'。
- 关系 (Relationship):比如'夫妻'、'代言'。
- 属性 (Property):比如周杰伦的'年龄:40+'。
Neo4j
如果说 SQL 是关系型数据库霸主,Neo4j 就是图数据库王者。原生支持图存储,查询关联数据极快。查询语言 Cypher 类似 SQL 但更直观。 我们用 Python 处理数据,喂给 Neo4j,形成可视化图谱。
环境搭建
推荐用 Neo4j Desktop,免费且图形化友好。
下载安装后,点击 New Project,Add Local DBMS。设置密码并启动。状态灯变绿后,浏览器访问 http://localhost:7474,默认用户 neo4j。
Cypher 初体验
在浏览器输入框敲一行代码感受下。
CREATE (p1:Person {name: '孙悟空', title: '齐天大圣'})
CREATE (p2:Person {name: '唐僧', title: '师傅'})
CREATE (p1)-[:PROTECT {role: '保镖'}]->(p2)
RETURN p1, p2
你会看到圆圈和连线,这就是最简单的图谱。
Python 构建知识图谱
实际工作中靠 Python 批量写入。
安装驱动:pip install neo4j。
新建 build_graph.py,编写连接类。这里用 MERGE 关键字保证节点不重复创建。
from neo4j import GraphDatabase
class KnowledgeGraph:
def __init__(self, uri, user, password):
self.driver = GraphDatabase.driver(uri, auth=(user, password))
def close(self):
self.driver.close()
def create_node_and_relationship(self, person1, relation, person2):
with self.driver.session() as session:
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)
()
():
.driver.session() session:
session.run()
()
__name__ == :
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()


