基于知识图谱的智能问答系统教程实战三----Neo4j增删改查【Django+neo4j+LLM大模型】cypher语句教程
neo4j是一个非关系型数据库,用来保存关系复杂的数据,并且具有相比于关系型数据更高效、更快的特点。neo4j还有个重要特点是其完整的AICD。(tips:AICD指的是原子性 (Atomicity) :一个事务里所有操作均完成才算完成、独立性 (Isolation):并发的事务相互不影响 、一致性(Consistency) :事务发生前后,数据库保持一致、持久性(Durability) :一旦操
本教程一共分为7个小教程专为零基础小白设计,从概念到实战,带你轻松入门!
📁 资源福利:教程代码+数据集+工具安装包,私信领取!
【解决毕设的最后一公里】基于知识图谱的智能问答系统教程实战三----Neo4j增删改查【Django+neo4j+大模型】
前言
neo4j是一个非关系型数据库,用来保存关系复杂的数据,并且具有相比于关系型数据更高效、更快的特点。neo4j还有个重要特点是其完整的AICD。(tips:AICD指的是原子性 (Atomicity) :一个事务里所有操作均完成才算完成、独立性 (Isolation):并发的事务相互不影响 、一致性(Consistency) :事务发生前后,数据库保持一致、持久性(Durability) :一旦操作提交,将永远保存在数据库里
2.1 增
2.1.1 CREATE创建节点
语法:
• 通过CREATE创建一个节点
• () 代表一个节点
• 节点包括标示符和标签label
• {} 包含了属性如果想返回创建的数据,需要指定标示符 即:return 标示符;
创建多个节点数据,多个元素间用逗号或者用create分开
- 创建一个无属性节点:
Create (r1:Rapper) return r1;
- 生成有属性的节点:
Create (r2:Rapper{name:"Pharaoh",Team:"Walkingdead"}) return r2;
- 一次创造多个节点(多节点之间用Create隔离):
Create (r3:Rapper{name:"KeyNG",Team:"Walkingdead",award:"champion"})
Create (r4:Rapper{name:"GAI",Team:"GOSH",award:"champion"})
- 创建一个有多个标签的节点:
Create (r5:Rapper:Producer:Composer{name:"Cloud"})
2.1.2 merge创建节点
语法:
MERGE (<节点或关系的名称>:<节点或关系的标签名称>
{
<节点或关系的属性名称>:<节点或关系的属性值>
.....
<节点或关系的属性名称>:<节点或关系的属性值>
})
merge(:Basketballplayer{name:"Love"})
注:MERGE命令在图中搜索给定模式,如果存在,则返回结果;如果它不存在于图中,则它创建新的节点/关系并返回结果。create可以创建相同节点,但是merge不能创建相同节点。
merge 先进行match,若成功match到,则不进行创建;反之则创建新的节点
2.1.3 create创建节点关系
语法(关系也类似节点也是有标签的,也是有有属性和无属性两类):
–> 表示一个有指向的关系
[] 能够添加标示符,属性,类型等信息
关系也是有标签的,有属性的。
先用”match(标示符:标签)“匹配到才能创建关系
- 创建无属性的指向关系:
match(r3:Rapper{name:"KeyNG"}),(r4:Rapper{name:"GAI"})
create(r3)-[:队友]->(r4)
- 创建有属性的关系:
match(r2:Rapper{name:"Pharaoh"}),(r3:Rapper{name:"KeyNG"})
create(r2)-[:队友{时间:"2018年夏",共属的团队:"Walkingdead"}]->(r3)
- 创建新节点及新关系:
Create (r6:Rapper{name:"Buzzy",Team:"Walkingdead"})-[:存在意见不合{时间:"2017年末"}]->(r7:Rapper{name:"Masiwei",Team:"Higherbrother"})
2.2 删
先创建一个节点
Create(r:Rapper{name:"6ix9ine",Team:"Blood"})
2.2.1 删除一个节点
- 通过 name 属性删除节点
MATCH(r:Rapper{name:"6ix9ine"})
delete r
- 通过id属性删除节点
MATCH (r)
WHERE id(r) = 84
DELETE r
2.2.2 删除一个节点及其所有的关系
MATCH (r)
WHERE id(r) = 83
DETACH DELETE r
2.2.3 删除一个标签下的所有节点与关系
MATCH (r:Loc)
DETACH DELETE r
2.2.4 删除所有节点与关系
MATCH (r)
DETACH DELETE r
2.3 改
2.3.1 SET:向现有节点或关系添加新属性
- 向现有的节点添加和更新属性
创建一个节点,我们来更新他的Team属性并添加一个award属性
Create (:Basketballplayer{name:"LeBron",Team:"Cavaliers",AKA:"King"})
更新Team属性
match(b:Basketballplayer{name:"LeBron"})
set b.Team="Heat"
return b
添加一个award属性
match(b:Basketballplayer{name:"LeBron"})
set b.award="3 chmpions"
return b
- 向现有的关系添加和更新属性
已建立队友关系,添加关系属性-发生的时间,修改关系-共属的团队
- 建立关系
create(r1:Rapper{name:"Buzzy"}) -[:`队友`{`共属的团队`:"Walkingdead"}]->(r2:Rapper{name:"KeyNG"})
- 添加属性
match p=(:Rapper{name:"Buzzy"})-[r]->(:Rapper{name:"KeyNG"})
set r.`时间`="2018年夏"
return p
- 更改属性
match p=(:Rapper{name:"Buzzy"})-[r]->(:Rapper{name:"KeyNG"})
set r.`共属的团队`="Wokenday"
return p
2.3.2 REMOVE:来删除节点或关系的现有属性
DELETE和REMOVE命令的**主要区别**:
- DELETE用于删除节点和它们的关联关系
- REMOVE命令用于删除节点、关系的标签、删除节点、关系的属性
- 删除节点的属性
先创建一个节点
Create (:Basketballplayer{name:"George",Team:"Clipper",score:"89"})
match(b:Basketballplayer{name:"George"})
remove b.Team
return b
- remove关系的属性
先建立如下关系
create (:Singer{name:"Jay Chou"})-[:`合作`{`合作作品`:"歌曲 天地一斗"}]->(:Basketballplayer:{name:"Kobe",Team:"Lakers"})
match p= (:Singer)-[r]->(:Basketballplayer)
remove r.`合作作品`
return p
- 删除节点的标签
语法:
match 节点a
remove 节点a:标签
return a
建立多属性节点m
create (m:Movie:Cinema:Picture)
删除m的Picture标签
MATCH (m:Movie)
REMOVE m:Picture
return m
2.4 查
2.4.1 match
语法:
MATCH
(
<node-name>:<label-name>
)
- 查找节点:
(因为标签为Rapper的节点很多,因此需要加上要查找节点独特的属性方能准确查找出来)可在table里面看到其所有属性
MATCH (r2:Rapper{name:"Pharaoh"})
RETURN r2
- 查找节点的属性
MATCH (r2:Rapper{name:"Pharaoh"})
RETURN r2.Team
- 查找节点的所有关系
查找时可缺省标示符仅用标签和节点属性进行查找
MATCH p = (:Rapper{name:'Buzzy'})-[]->()
RETURN p
2.4.2 where
where语句是用来筛选节点或关系的
- 查找结点
方法1:
match (n)
where n.name="GAI"
return n
方法2:
match (r:Rapper)
where r.name="GAI"
return r
注:命令1是遍历所有之后,才根据条件name='小黄’筛选出来的,当节点过多的时候,建议采用命令2去查找,有label这个设定之后,遍历的节点范围会有所缩小,速度会更快一些,所占用内存空间也会减少。
- 查找多个结点
match (r:Rapper)
where r.name='GAI' or r.name='Pharaoh'
return r
注:查找用的是or不是and
- 筛选关系
match p= (r:Rapper)-[r]->(r1:Rapper)
where r.relationship="制作"
return p

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)