跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
PythonAI算法

Python + Neo4j 构建知识图谱实战指南

知识图谱通过实体与关系连接数据,适用于社交网络等复杂场景。Neo4j 作为图数据库支持快速关联查询。本文演示了 Neo4j Desktop 安装配置流程,介绍 Cypher 基础语法,并提供 Python 代码示例实现西游记人物关系图谱的批量构建与可视化展示。内容涵盖环境搭建、驱动安装、核心代码编写及结果验证,帮助开发者掌握从 0 到 1 构建知识图谱的实战技能。

修罗发布于 2026/4/8更新于 2026/4/231 浏览
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 并批量写入数据的核心代码。

下一步可以做什么? 构建图谱只是第一步。有了这个图谱,我们不仅可以'看',还可以让 AI 去'理解'。后续可探索结合 BERT 模型与 Neo4j 实现智能问答系统 (KBQA),让 AI 能回答复杂问题。

目录

  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. 六、总结与展望
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog

更多推荐文章

查看全部
  • Arduino BLDC 模糊动态任务调度机器人
  • 实战 Pi0 机器人控制中心:实现机器人智能操控
  • 使用 Trae IDE 将 Figma 设计稿一键转换为前端代码
  • VSCode AI Copilot 智能补全失效问题排查与修复指南
  • CosyVoice 安装 openai-whisper 报错 pkg_resources 缺失原因及解决方案
  • Clawdbot 整合 Qwen3-32B 本地部署与 Web 访问指南
  • AI 辅助编程全面指南:技巧、策略与最佳实践
  • ChatGPT 降低 AIGC 率指令实战:从原理到最佳实践
  • 民用无人机新规 2026 年 5 月实施 实名登记与激活双重要求
  • Meta-Llama-3-8B-Instruct 部署避坑指南:从环境配置到对话集成
  • Whisper-Large-V3-Turbo:极速多语言语音识别技术
  • 多旋翼物流无人机节能轨迹规划与 Python 实现
  • AD9361 FPGA 纯 Verilog 驱动:LVDS 接口无依赖库
  • QClaw 本地 AI Agent 工具使用指南与微信集成
  • Java Web 开发环境搭建:IDEA 集成 Tomcat 安装部署
  • Flutter 2026 Roadmap 发布,重点解析 Impeller 与 AI 支持
  • Flutter sse_stream 鸿蒙适配:高并发背压与链路治理
  • 反无人机技术:原理、检测与反制手段
  • 深入解析 Stable Diffusion 基石:潜在扩散模型(LDMs)
  • QUEST 一体机 SideQuest 安装 APK 与 OBB 数据包教程

相关免费在线工具

  • 加密/解密文本

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

  • RSA密钥对生成器

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

  • Mermaid 预览与可视化编辑

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

  • curl 转代码

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

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online