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

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

在 macOS 环境下使用 Neo4j 图数据库和 py2neo 库搭建知识图谱的完整流程。内容包括 Neo4j 的安装配置、Cypher 语言的基本增删改查操作演示、数据预处理(清洗与建模)、以及利用 Python 连接数据库构建图谱的核心逻辑。通过麦当劳业务场景示例,展示了如何定义节点、属性及关系,帮助读者掌握图数据库的基础应用。

PgDevote发布于 2026/4/5更新于 2026/10/2498 浏览
基于 Neo4j 与 py2neo 的 Mac 知识图谱搭建实战

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

一、Neo4j 图数据库

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

Neo4j Browser Interface

1、在 macOS 上通过 Homebrew 安装 Neo4j

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

brew install neo4j

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

2、登录 Neo4j

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

首次连接成功后,系统会强制要求修改默认密码。设置一个新的安全密码并记住。

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

RETURN 'Hello World'

3、Neo4j 快速入门

  1. 点击左边栏的星星图标,在 Example Graphs 中选择 Movie Graph,点击运行,即可看到关于电影图谱的教程。
  2. 创建图谱:点击灰色代码框,创建图谱的代码会自动复制到代码框,点击运行即可看到创建的电影图谱。
  3. 查找:支持查找特定演员、电影标题、人数及上映年代等。

4、Neo4j 基本操作

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

建立简单的图谱,包含两种节点和一种关系:

  • 节点类型 1:Restaurant
    • 属性:name, address, year_opened
  • 节点类型 2:Product
    • 属性:name, price, category
  • 关系类型:SUPPLIES
    • 属性:since
(1)增操作

创建节点:

CREATE (r:Restaurant {name: 'McDonalds', address: 'New York'})
CREATE (p:Product {name: 'Burger', price: 10})

创建关系:

MATCH (r:Restaurant {name: 'McDonalds'}), (p:Product {name: 'Burger'})
CREATE (r)-[:SUPPLIES {since: 2020}]->(p)
(2)查操作

查找所有餐厅:

MATCH (r:Restaurant) RETURN r

查找特定餐厅供应的所有产品:

MATCH (r:Restaurant {name: 'McDonalds'})-[:SUPPLIES]->(p:Product)
RETURN p.name, p.price

查找供应可乐的所有餐厅:

MATCH (r:Restaurant)-[:SUPPLIES]->(p:Product {name: 'Coke'})
RETURN r.name

多跳查询 - 查找与 MC 销售同类产品的其他餐厅:

MATCH (mc:Restaurant {name: 'McDonalds'})-[:SUPPLIES]->(p:Product)<-[:SUPPLIES]-(other:Restaurant)
RETURN other.name

路径查询 - 查找两家餐厅通过共同产品产生的关联:

MATCH path = (r1:Restaurant)-[:SUPPLIES]->(p:Product)<-[:SUPPLIES]-(r2:Restaurant)
WHERE r1 <> r2
RETURN path
(3)改操作

更新节点属性:

MATCH (r:Restaurant {name: 'McDonalds'}) SET r.address = 'Beijing'

新增节点属性:

MATCH (r:Restaurant {name: 'McDonalds'}) SET r.rating = 4.5

更新关系属性:

MATCH (r:Restaurant)-[rel:SUPPLIES]->(p:Product) WHERE r.name = 'McDonalds' AND p.name = 'Burger'
SET rel.since = 2021
(4)删操作

删除关系:

MATCH (r:Restaurant)-[rel:SUPPLIES]->(p:Product) WHERE r.name = 'McDonalds' AND p.name = 'Burger'
DELETE rel

删除节点(必须先删除其所有关系):

MATCH (n:Restaurant {name: 'McDonalds'}) DETACH DELETE n

删除所有节点:

MATCH (n) DETACH DELETE n

通过以上例子,可以看到 Neo4j 的操作非常直观:

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

Neo4j 的核心优势在于通过 MATCH 子句描述关联模式,这使得查询复杂的关系网络变得简单和高效。

5、安装 py2neo

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

pip install py2neo

二、数据预处理

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

1、数据清洗

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

2、知识建模

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

(1)识别实体

实体是知识图谱中的【节点】。主要实体类型包括:

  • 订单记录:核心实体,每一笔订单就是一个销售事件。
  • 产品:订单中的商品。例如,'生日蛋糕'、'马卡龙'。
  • 配方标准:制作产品的依据和标准。
  • 客户反馈:客户对订单或产品的评价与建议。
  • 促销活动:与订单关联的营销方案。
  • 门店:订单发生的背景。
(2)识别实体属性

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

  • 订单记录的属性:下单时间、订单金额、支付方式。
  • 产品的属性:产品名称、单价、保质期。
  • 门店的属性:门店地址、营业时间。
(3)识别关系

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

  • 门店 -- 提供 --> 产品
  • 订单记录 -- 产生于 --> 门店
  • 订单记录 -- 包含 --> 产品
  • 订单记录 -- 触发 --> 促销活动
  • 产品 -- 依据 --> 配方标准

三、搭建知识图谱

以下是利用 Python 和 py2neo 连接 Neo4j 并构建图谱的示例逻辑,需根据自己的数据集进行修改。

from py2neo import Graph, Node, Relationship

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

# 创建节点
restaurant_node = Node("Restaurant", name="McDonalds", address="New York")
product_node = Node("Product", name="Burger", price=10)

# 创建关系
relationship = Relationship(restaurant_node, "SUPPLIES", product_node)

# 写入数据库
graph.create(restaurant_node)
graph.create(product_node)
graph.create(relationship)

运行后效果可在 Neo4j Browser 中查看图谱结构。

目录

  1. 基于 Neo4j 与 py2neo 的知识图谱搭建实战
  2. 一、Neo4j 图数据库
  3. 1、在 macOS 上通过 Homebrew 安装 Neo4j
  4. 2、登录 Neo4j
  5. 3、Neo4j 快速入门
  6. 4、Neo4j 基本操作
  7. (1)增操作
  8. (2)查操作
  9. (3)改操作
  10. (4)删操作
  11. 5、安装 py2neo
  12. 二、数据预处理
  13. 1、数据清洗
  14. 2、知识建模
  15. (1)识别实体
  16. (2)识别实体属性
  17. (3)识别关系
  18. 三、搭建知识图谱
  19. 连接数据库
  20. 创建节点
  21. 创建关系
  22. 写入数据库

更多推荐文章

查看全部
  • Nginx 部署私有 Web 播放器配置指南
  • Linux 下安装 Claude Code 的常见问题与解决方案
  • 树莓派 4B 连接大疆 M300 无人机开发指南
  • Spring AI Alibaba 快速入门指南
  • ReAct 与 Plan-and-Execute:AI Agent 推理架构对比与选择
  • SheetJS:全场景适用的 JavaScript 电子表格处理工具
  • Python 环境安装与配置 Gurobi 求解器指南
  • 2025 华为 OD 机试真题题库汇总及 OJ 刷题指南
  • C++ 模板进阶:非类型参数、特化技巧与分离编译实战
  • C++继承机制详解:同名隐藏与重载的区别、派生类默认成员函数及栈的实现
  • Linux 常用命令速查手册
  • 并查集数据结构详解与实战应用
  • Dify 工作流实战:快速搭建 Web 登录界面
  • 大语言模型原理必读的 10 篇核心论文
  • Linux 基本操作与 Java 项目部署指南
  • AI 实践:工具函数调用详解
  • 基于 LangGraph 实现模块化 Skills 型 AI Agent
  • 2026 年 Python 发展局势:AI 时代的通用基础设施语言
  • OpenClaw iOS/Android 端部署教程:语音唤醒与随身 AI 助手
  • OpenAI Whisper 语音转文本入门与实战

相关免费在线工具

  • 加密/解密文本

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