跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

Python + Neo4j 构建知识图谱入门教程

利用 Python 和 Neo4j 构建知识图谱。涵盖概念解析、环境搭建(Neo4j Desktop)、Cypher 语言基础、Python 驱动集成及数据批量写入。通过西游记人物关系示例,演示从代码到可视化的完整流程,为后续 AI 应用奠定基础。

链路追踪发布于 2026/2/5更新于 2026/9/107.9K 浏览
Python + Neo4j 构建知识图谱入门教程

大数据时代,数据之间的关系往往比数据本身更有价值。传统的 SQL 数据库在处理复杂关系(如社交网络、推荐系统、风控分析)时显得力不从心,而知识图谱和图数据库 Neo4j 正是为此而生。本文将带你从 0 基础出发,理解知识图谱核心概念,安装 Neo4j 环境,并手把手教你用 Python 代码构建一个生动的人物关系图谱。

一、什么是知识图谱与 Neo4j?

在动手写代码之前,我们先用大白话把两个核心概念捋清楚。

1. 什么是知识图谱 (Knowledge Graph)?

不要被高大上的名字吓到。知识图谱本质上就是把世界上的事物(节点)和它们之间的联系(关系)画成一张巨大的网。

  • Excel 思维: 罗列数据。例如:张三,25 岁;李四,30 岁。
  • 图谱思维: 链接数据。例如:(张三)--[朋友]-->(李四)。

它由三要素组成:

  • 实体 (Entity/Node): 比如'周杰伦'、'昆凌'。
  • 关系 (Relationship): 比如'夫妻'、'代言'。
  • 属性 (Property): 比如周杰伦的'年龄:40+'。
2. 什么是 Neo4j?

如果说 SQL 是关系型数据库的霸主,那么 Neo4j 就是图数据库(Graph Database)的王者。

  • 特点: 原生支持图存储,查询关联数据速度极快(秒杀 MySQL)。
  • 查询语言: 使用 Cypher 语言(类似 SQL,但更直观)。

一句话总结: 我们用 Python 处理数据,把数据喂给 Neo4j,最终形成可视化的知识图谱。

二、环境搭建:Neo4j Desktop 安装

对于初学者,推荐使用 Neo4j Desktop(桌面版),不仅免费,而且图形化界面非常友好,免去了复杂的命令行配置。

步骤 1:下载与安装
  1. 进入 Neo4j 官网下载中心。
  2. 填写基本信息后下载 Neo4j Desktop。
  3. 像安装普通软件一样安装并运行。
步骤 2:创建项目与数据库
  1. 打开 Neo4j Desktop,点击 "New Project"。
  2. 在右侧点击 "Add" -> "Local DBMS"。
  3. 关键设置: 设置一个密码(比如 123456),一定要记住!
  4. 点击 Create,然后点击 Start 启动数据库。
步骤 3:进入浏览器控制台

当状态灯变绿后,点击 Open 或者在浏览器输入 http://localhost:7474。

  • 用户名:neo4j
  • 密码:你刚才设置的(如 123456)

文章配图

三、快速上手:Cypher 语言初体验

在用 Python 之前,我们先在 Neo4j 浏览器的输入框里敲一行代码,感受一下图的魅力。

输入以下命令并按回车(或点击播放按钮):

CREATE (p1:Person {name: '孙悟空', title: '齐天大圣'}) 
CREATE (p2:Person {name: '唐僧', title: '师傅'}) 
CREATE (p1)-[:PROTECT {role: '保镖'}]->(p2) 
RETURN p1, p2

你会看到屏幕上出现了两个圆圈(节点)和一条连线。这就是最简单的图谱!

四、实战:使用 Python 构建知识图谱

在实际工作中,我们不可能手动一条条敲 Cypher 命令,而是通过 Python 读取文件(CSV/Excel)并批量写入。

1. 安装 Python 驱动

打开终端或 CMD,运行:

pip install neo4j
2. 编写核心代码

下面我编写了一个通用的连接类,你可以直接复制使用。我们将构建一个简单的'西游记人物关系图谱'。

新建一个 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__":
    # 1. 配置数据库连接 (请修改你的密码)
    URI = "bolt://localhost:7687"
    USER = "neo4j"
    PASSWORD = "123456"  # 替换为你自己的密码

    # 2. 准备数据 (模拟从 Excel 读取的数据)
    data = [
        ("唐僧", "师徒", "孙悟空"),
        ("唐僧", "师徒", "猪八戒"),
        ("唐僧", "师徒", "沙僧"),
        ("孙悟空", "师兄弟", "猪八戒"),
        ("孙悟空", "师兄弟", "沙僧"),
        ("孙悟空", "结拜兄弟", "牛魔王"),
        ("牛魔王", "夫妻", "铁扇公主"),
        ("铁扇公主", "母子", "红孩儿")
    ]

    # 3. 开始构建
    kg = KnowledgeGraph(URI, USER, PASSWORD)
    try:
        # 先清空旧数据,防止重复
        kg.clear_data()
        print("开始构建知识图谱...")
        for p1, rel, p2 in data:
            kg.create_node_and_relationship(p1, rel, p2)
        print("\n图谱构建完成!请去 Neo4j Browser 查看效果。")
    except Exception as e:
        print(f"发生错误:{e}")
    finally:
        kg.close()
3. 运行效果

运行上述脚本,控制台会输出:

数据库已清空!
开始构建知识图谱...
成功构建:唐僧 --[师徒]--> 孙悟空
成功构建:唐僧 --[师徒]--> 猪八戒
...
图谱构建完成!

五、见证奇迹的时刻:可视化展示

现在回到你的 Neo4j Browser (http://localhost:7474)。

在顶部输入框输入以下命令查询所有数据:

MATCH (n) RETURN n

点击播放按钮。你将看到一张错综复杂、可以拖拽的人物关系网!

文章配图

你可以尝试:

  1. 点击'孙悟空'节点,改变它的颜色。
  2. 拖动节点,感受力导向图的物理效果。
  3. 鼠标悬停在连线上,查看关系类型。

六、总结

恭喜你!你已经完成了从 0 到 1 的知识图谱构建。我们通过 Python 的 neo4j 库,成功将结构化的数据转化为了图谱。

本文学到了什么?

  1. 理解了图数据库与传统数据库的区别。
  2. 学会了安装 Neo4j Desktop。
  3. 掌握了 Python 连接 Neo4j 并批量写入数据的核心代码。

目录

  1. 一、什么是知识图谱与 Neo4j?
  2. 1. 什么是知识图谱 (Knowledge Graph)?
  3. 2. 什么是 Neo4j?
  4. 二、环境搭建:Neo4j Desktop 安装
  5. 步骤 1:下载与安装
  6. 步骤 2:创建项目与数据库
  7. 步骤 3:进入浏览器控制台
  8. 三、快速上手:Cypher 语言初体验
  9. 四、实战:使用 Python 构建知识图谱
  10. 1. 安装 Python 驱动
  11. 2. 编写核心代码
  12. --- 主程序执行 ---
  13. 3. 运行效果
  14. 五、见证奇迹的时刻:可视化展示
  15. 六、总结

更多推荐文章

查看全部
  • HDFS 核心组件深度解析:分布式文件系统架构基石
  • Web 开发者转型 AI 实战:基于 Agent 的代码质量分析 Skill 开发指南
  • 微信小程序 AR 开发实战方案与性能优化
  • 服务器环境 VS Code GitHub Copilot 加载超时优化与修复
  • OpenClaw 插件更新:面板直连 QQ 和飞书机器人
  • Linux 进程状态详解:内核视角与代码实例
  • Discord 机器人创建与配置完整指南
  • 从 Gitee 到 GitHub 的迁移与自动同步实践
  • 前端开发:避免重复造轮子,选用成熟组件库
  • Web 安全实战:Training-WWW-Robots 题目解析与 Robots 协议原理
  • Android ViewModel 在屏幕旋转时为何保持存活原理分析
  • C++ ODB ORM 框架入门与实战应用
  • C++ 继承入门:从概念定义到默认成员函数
  • MOOTDX 快速上手指南:Python 量化投资入门
  • Java 入门:JDK 和 IDEA 下载安装及环境搭建
  • 数据结构:二叉树初阶与实现
  • 基于 SpringBoot 和 Vue 的社区疫情管理系统设计与实现
  • Flutter wasm_interop 鸿蒙 Web 端适配与高性能计算实战
  • AirSim 无人机物理引擎与动力学模拟:碰撞风场传感器噪声
  • 基于 YOLOv8 的无人机枸杞树病害检测数据集与训练方案

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online