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

基于 Neo4j 与 py2neo 的知识图谱搭建实战

综述由AI生成知识图谱搭建涉及 Neo4j 安装配置、Cypher 语言基础操作、数据预处理及模型构建。文章详细演示了在 Mac 系统下通过 Homebrew 安装 Neo4j,利用 py2neo 连接数据库,并完成实体识别、属性定义与关系建立的全过程。包含增删改查示例代码及数据清洗规范。

花里胡哨发布于 2026/4/7更新于 2026/5/2115 浏览
基于 Neo4j 与 py2neo 的知识图谱搭建实战

一、Neo4j 图数据库

Neo4j 是一个高性能的、原生的图数据库。它不采用传统的行和列的表格结构,而是使用节点和关系的图结构来存储和管理数据。

1、Neo4j 安装 - Mac Brew 版

(1)安装 Neo4j

安装了 Homebrew 后直接在终端输入以下命令即可:

brew install neo4j

安装后,Neo4j 浏览器可通过 http://localhost:7474 访问。

(2)登录 Neo4j

【1】在登录页面填写信息:

  • Connect URL:输入 neo4j://localhost:7687
  • Authentication type:保持为 "Username / Password"
  • Username:输入 neo4j
  • Password:首次连接时输入默认密码 neo4j 点击蓝色的 Connect 按钮。

【2】首次连接成功后,系统会强制要求修改默认密码:当前密码 neo4j,设置一个新的安全密码(请务必记住)。

【3】测试连接 连接成功后,在顶部的命令行中输入 Cypher 查询语句,例如:

MATCH (n) RETURN n LIMIT 10;

2、Neo4j 快速入门

【1】我们点击左边栏的星星图标,在 Example Graphs 中选择 Movie Graph,点击运行,就会弹出一个关于电影图谱的教程。

【2】创建图谱 点击灰色代码框,创建图谱的代码会自动复制到代码框,点击运行,即可看到创建的电影图谱。

【3】查找 下面是一些关于查找的语句:查找名叫 Tom Hanks 的演员、查找标题为 Cloud Atlas 的电影、查找 10 个人、查找在 20 世纪 90 年代上映的电影。

【4】询问 后续还有一些查询语句教程不一一列举了,感兴趣的同学可以自行运行。

3、Neo4j 基本操作

接下来我们以麦当劳为背景,用 Neo4j 的 Cypher 查询语言演示基本增删改查操作。

下面我们建立一个简单的图谱,包含两种节点和一种关系:

  • 节点类型 1:餐厅
    • 属性:名称,地址,开业年份
  • 节点类型 2:产品
    • 属性:名称,价格,类别
  • 关系类型:供应
    • 属性:自何时起供应

(1)增操作

【1】创建节点
CREATE (r:餐厅 {名称:"麦当劳", 地址:"某路", 开业年份:2020});
【2】创建关系
MATCH (r:餐厅 {名称:"麦当劳"}), (p:产品 {名称:"汉堡"})
CREATE (r)-[:供应 {自何时起供应:"2020-01-01"}]->(p);

(2)查操作

【1】查找所有餐厅
MATCH (r:餐厅) RETURN r;
【2】查找特定餐厅供应的所有产品
MATCH (r:餐厅 {名称:"麦当劳"})-[s:供应]->(p:产品)
RETURN p;
【3】查找供应可乐的所有餐厅
MATCH (r:餐厅)-[s:供应]->(p:产品 {名称:"可乐"})
RETURN r;
【4】多跳查询 - 查找与 MC 销售同类产品的其他餐厅
MATCH (r1:餐厅)-[:供应]->(p:产品)<-[:供应]-(r2:餐厅)
WHERE r1 <> r2 AND p.名称 = "可乐"
RETURN r1, r2;
【5】路径查询 - 查找两家餐厅通过共同产品产生的关联
MATCH path = (r1:餐厅)-[:供应]->(p:产品)<-[:供应]-(r2:餐厅)
RETURN path;

(3)改操作

【1】更新节点属性
MATCH (r:餐厅 {名称:"麦当劳"}) SET r.地址 = "新地址";
【2】新增节点属性
MATCH (r:餐厅 {名称:"麦当劳"}) SET r.评分 = 4.5;
【3】更新关系属性
MATCH (r:餐厅)-[s:供应]->(p:产品) SET s.自何时起供应 = "2021-01-01";

(4)删操作

【1】删除关系
MATCH (r:餐厅)-[s:供应]->(p:产品) DELETE s;
【2】删除节点(必须先删除其所有关系)
MATCH (n) DETACH DELETE n;
【3】删除所有节点
MATCH (n) WHERE NOT EXISTS((n)--()) DELETE n;

通过以上麦当劳的例子,我们可以看到 Neo4j 的操作非常直观:

  • CREATE/MERGE:对应 SQL 的 INSERT,用于创建节点和关系。
  • MATCH:对应 SQL 的 SELECT ... FROM,是查询的起点,用于定位图形中的模式。
  • WHERE:对应 SQL 的 WHERE,用于过滤结果。
  • SET:对应 SQL 的 UPDATE,用于更新属性。
  • DELETE/DETACH DELETE:对应 SQL 的 DELETE,用于删除元素。

Neo4j 的核心优势在于通过 MATCH 子句描述关联模式,例如 (餐厅)-[供应]->(产品),这使得查询复杂的关系网络变得简单和高效。

4、安装 py2neo

py2neo 是 Python 连接和操作 Neo4j 图数据库的主要工具库,适用于需要处理复杂关系数据的应用场景。

pip install py2neo

二、数据预处理

数据预处理包括数据清洗、实体识别等步骤,目的是将原始数据转换为适合构建知识图谱的格式。

1、数据清洗

数据质量要求:

  • 补全缺失值:对于明显缺失的信息(如设备型号),可以标记为【缺失】或根据上下文推断。
  • 格式标准化:将日期统一为【YYYY-MM-DD】格式。
  • 去除重复值:删除重复的条目。

2、知识建模

我们需要从业务角度理解数据,设计出合理的图谱结构。

(1)识别实体

实体是知识图谱中的节点。在我的数据集中,可以识别出以下主要实体类型:

  • 订单记录:核心实体,每一笔订单就是一个销售事件。
  • 产品:订单中的商品。例如,'生日蛋糕'、'马卡龙'、'手冲咖啡'。数据中产品名称和产品类别是其属性。
  • 配方标准:制作产品的依据和标准。数据中配方名称、配料序号、制作要点等是其属性。
  • 客户反馈:客户对订单或产品的评价与建议。
  • 促销活动:与订单关联的营销方案。
  • 门店:订单发生的背景。

(2)识别实体属性

属性是描述实体的键值对。

  • 订单记录的属性:下单时间、订单描述、订单金额、是否加急、订单状态、支付方式、配送地址。
  • 产品的属性:产品名称、产品类别、规格、单价、保质期、产品编号。
  • 配方标准的属性:配方名称、配料序号、制作步骤、所需时间、适用产品。
  • 客户反馈的属性:反馈内容、评分。
  • 促销活动的属性:活动名称、折扣力度、适用条件。
  • 门店的属性:门店地址、营业时间、联系电话。

(3)识别关系

关系是连接实体的边,是图谱价值的体现。

  • 门店 -- 提供 --> 产品
  • 订单记录 -- 产生于 --> 门店
  • 订单记录 -- 包含 --> 产品
  • 订单记录 -- 触发 --> 促销活动
  • 订单记录 -- 收到 --> 客户反馈
  • 产品 -- 依据 --> 配方标准
  • 配方标准 -- 适用于 --> 产品

三、搭建知识图谱

下面代码为简化后的模板代码,需要根据自己的数据集进行修改后再运行。

from py2neo import Graph, Node, Relationship

# 连接数据库
graph = Graph("http://localhost:7474", auth=("neo4j", "your_password"))

# 创建节点
node = Node("Product", name="Burger", price=10)
graph.create(node)

# 创建关系
restaurant = graph.find_one(Node("Restaurant"), "name", "McDonald")
rel = Relationship(restaurant, "SUPPLY", node)
graph.create(rel)

目录

  1. 一、Neo4j 图数据库
  2. 1、Neo4j 安装 - Mac Brew 版
  3. (1)安装 Neo4j
  4. (2)登录 Neo4j
  5. 2、Neo4j 快速入门
  6. 3、Neo4j 基本操作
  7. (1)增操作
  8. 【1】创建节点
  9. 【2】创建关系
  10. (2)查操作
  11. 【1】查找所有餐厅
  12. 【2】查找特定餐厅供应的所有产品
  13. 【3】查找供应可乐的所有餐厅
  14. 【4】多跳查询 - 查找与 MC 销售同类产品的其他餐厅
  15. 【5】路径查询 - 查找两家餐厅通过共同产品产生的关联
  16. (3)改操作
  17. 【1】更新节点属性
  18. 【2】新增节点属性
  19. 【3】更新关系属性
  20. (4)删操作
  21. 【1】删除关系
  22. 【2】删除节点(必须先删除其所有关系)
  23. 【3】删除所有节点
  24. 4、安装 py2neo
  25. 二、数据预处理
  26. 1、数据清洗
  27. 2、知识建模
  28. (1)识别实体
  29. (2)识别实体属性
  30. (3)识别关系
  31. 三、搭建知识图谱
  32. 连接数据库
  33. 创建节点
  34. 创建关系
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • Android WebView 开发指南:AgentWeb 完整使用
  • LLM 应用开发实战:实现流式响应与高效落地
  • ThreadLocal 原理、使用场景及内存泄漏问题详解
  • Alas 脚本碧蓝航线自动化配置指南
  • 基于 LangChain 与 Ollama 构建本地 LLM 应用实战
  • Linux 核心 IO 模型深析:非阻塞 IO 与多路转接实现
  • Unity VR 全景视频高分辨率播放性能优化方案
  • Linux 信号机制:产生方式、处理流程与系统调用
  • 安路 FPGA 下载器驱动安装与测试指南
  • Linux 基础开发工具:Git 版本控制与 GDB 调试器详解
  • Java 重构实战:GitHub Copilot 上下文感知应用
  • MCP 插件配置指南:以 browser-tools-mcp 为例
  • 一切皆是映射:深入理解 DQN 的稳定性与收敛性
  • AI Agent 框架选型指南:OpenClaw、LangChain、AutoGPT、CrewAI 深度对比
  • Python 中国节假日日历库使用指南:识别法定节假日与工作日
  • LFM2.5-1.2B-Thinking 模型:打造个人 AI 写作助手
  • 飞书 OpenClaw 机器人 HTTP 401 Invalid Authentication 报错排查
  • 宜搭低代码高级认证:待办列表自定义页面实战指南
  • MC.JS WEBMC1.8 零基础入门:10 分钟创建方块世界
  • Python 环境安装与配置 Gurobi 求解器

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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