2017-10-24-neo4j-3-cypher

GraphRAG实战:用Neo4j构建可解释、高准确率的知识检索系统 知识图谱是一种将实体与语义关系结构化表达的技术,其核心原理在于通过节点、边和属性建模现实世界中的概念关联,从而支持多跳推理与路径查询。相比传统向量检索,图结构天然具备逻辑可追溯性与上下文连贯性,显著提升复杂问题的召回精度与答案可信度。在金融、制造、医疗等强业务逻辑领域,GraphRAG技术正成为解决‘跨文档推理’‘责任链溯源’‘根因分析’等高阶知识检索需求的关键路径。本文聚焦Neo4j图数据库与大语言模型协同落地的完整链路,涵盖Schema设计、Cypher优化、分层检索、图感知提示工程等真实工程细节,助力 阅读详情
titlecategorylayouttagsdate
3.Cypher
kg
post
neo4j
kg
2017-10-24 23:16:24

1.Pattern

Neo4j中的图由节点(Node)和关系(Relation)组成,节点和关系也可以具有属性。节点代表的是实体,比如概念、事件、地点和事物。关系将节点连接起来。

节点和关系是图的基本单元,但是真正让图表示复杂知识的是连接起来的节点和关系构成的patterns。单一的节点和关系仅仅只能携带少量的信息但是pattern却可以携带或表示复杂的信息。

Cypher是Neo4j的查询语言就是基于pattern。通常pattern用来匹配期望找到的图结构,一旦找到或者创建,就可以进行进一步处理。

Cypher中简单的pattern比如:a Person LIVES_IN a City or a City is PART_OF a Country

或者更为复杂一点的:(:Person) -[:LIVES_IN]-> (:City) -[:PART_OF]-> (:Country)

Cypher的长处在于擅长识别各种给定的模式(pattern)。就跟人脑一样,比如人脑就很擅长识别图片中的人、物体等,因为人、物体都具备一定的模式。

Cypher跟SQL语言类似,有比如MATCH,WHERE,DELETE之类的关键字。

2.Node语法

Node使用一对括号表示:

()
((matrix))
(:Movie)
(matrix:Movie)
(matrix:Movie {title: "The Matrix"})
(matrix:Movie {title: "The Matrix", released: 1997})

Movie是Node的标签,表明节点的类型。不同的标签可以组成不同的模式,比如Movie和Actor就可以组成一种模式。Neo4j的节点使用标签索引的,每一个索引由标签和属性组成。 节点的属性由大括号包含一系列key/value。比如 {title: "The Matrix", released: 1997}

Relation语法

Cypher中--表示无方向性的关系,<--,-->表示指向性的关系,[....]表示对关系的说明,可以是变量、属性等。

-->
-[role]->
-[:ACTED_IN]->
-[role:ACTED_IN]->
-[role:ACTED_IN {roles: ["Neo"]}]->

ACTED_IN是关系的标签,指明关系的类型。role是关系变量,可以在别处使用。roles是属性值,和节点的属性一样。

Pattern语法

(keanu:Person:Actor {name: "Keanu Reeves"} )-[role:ACTED_IN {roles: ["Neo"] } ]->(matrix:Movie {title: "The Matrix"} )

Pattern指明在图中符合给定pattern的节点以及连接的关系。 Pattern还可以被声明为一个变量:

acted_in = (:Person)-[:ACTED_IN]->(:Movie)

Cypher示例

打开命令行执行:

sudo bin/neo4j console

打开浏览器打开:

http://localhost:7474/browser/
添加:
CREATE (:Movie { title:"The Matrix",released:1997 })

执行完毕可以看到:


![]({{ "/imgs/20171023-220055.png" | absolute_url }})

如果创建之后需要返回值:

CREATE (p:Person { name:"Keanu Reeves", born:1964 })
RETURN p

执行完毕可以看到:
![]({{ "/imgs/20171023-220504.png" | absolute_url }})
更为复杂的一个例子:

CREATE (a:Person { name:"Tom Hanks",
  born:1956 })-[r:ACTED_IN { roles: ["Forrest"]}]->(m:Movie { title:"Forrest Gump",released:1994 })
CREATE (d:Person { name:"Robert Zemeckis", born:1951 })-[:DIRECTED]->(m)
RETURN a,d,r,m


![]({{ "/imgs/20171023-220635.png" | absolute_url }})

查找

比方说查找所有的Movie:

MATCH (m:Movie)
RETURN m


![]({{ "/imgs/20171023-220857.png" | absolute_url }})
也可以找某个具体的人:

MATCH (p:Person { name:"Keanu Reeves" })
RETURN p


![]({{ "/imgs/20171023-220952.png" | absolute_url }})
还可以查找某个关系:

MATCH (p:Person { name:"Tom Hanks" })-[r:ACTED_IN]->(m:Movie)
RETURN m, r


![]({{ "/imgs/20171023-221230.png" | absolute_url }})

创建新的pattern
MATCH (p:Person { name:"Tom Hanks" })
CREATE (m:Movie { title:"Cloud Atlas",released:2012 })
CREATE (p)-[r:ACTED_IN { roles: ['Zachry']}]->(m)
RETURN p,r,m


![]({{ "/imgs/20171023-222709.png" | absolute_url }})

MERGE

Merge表示为节点或者关系添加新的pattern或属性。

添加新的属性:

MERGE (m:Movie { title:"Cloud Atlas" })
ON CREATE SET m.released = 2012
RETURN m


![]({{ "/imgs/20171023-223231.png" | absolute_url }})
添加新的关系:

MATCH (m:Movie { title:"Cloud Atlas" })
MATCH (p:Person { name:"Tom Hanks" })
MERGE (p)-[r:ACTED_IN]->(m)
ON CREATE SET r.roles =['Zachry']
RETURN p,r,m


![]({{ "/imgs/20171023-223419.png" | absolute_url }})
添加新的节点和关系:

CREATE (y:Year { year:2014 })
MERGE (y)<-[:IN_YEAR]-(m10:Month { month:10 })
MERGE (y)<-[:IN_YEAR]-(m11:Month { month:11 })
RETURN y,m10,m11


![]({{ "/imgs/20171023-223757.png" | absolute_url }})

条件选择

#1 WHERE
MATCH (m:Movie)
WHERE m.title = "The Matrix"
RETURN m

#2 WHERE
MATCH (p:Person)-[r:ACTED_IN]->(m:Movie)
WHERE p.name =~ "K.+" OR m.released > 2000 OR "Neo" IN r.roles
RETURN p,r,m

#3 NOT
MATCH (p:Person)-[:ACTED_IN]->(m)
WHERE NOT (p)-[:DIRECTED]->()
RETURN p,m

#4 ALIAS
MATCH (p:Person)
RETURN p, p.name AS name, toUpper(p.name), coalesce(p.nickname,"n/a") AS nickname, { name: p.name,
  label:head(labels(p))} AS person
  
#5 COUNT
MATCH (:Person)
RETURN count(*) AS people
OR
RETURN  count(DISTINCT role)

MATCH (actor:Person)-[:ACTED_IN]->(movie:Movie)<-[:DIRECTED]-(director:Person)
RETURN actor,director,count(*) AS collaborations

#6 ORDER
MATCH (a:Person)-[:ACTED_IN]->(m:Movie)
RETURN a,count(*) AS appearances
ORDER BY appearances DESC LIMIT 10;

#7 COLLECT
MATCH (m:Movie)<-[:ACTED_IN]-(a:Person)
RETURN m.title AS movie, collect(a.name) AS cast, count(*) AS actors

#8 UNION
MATCH (actor:Person)-[r:ACTED_IN]->(movie:Movie)
RETURN actor.name AS name, type(r) AS acted_in, movie.title AS title
UNION
MATCH (director:Person)-[r:DIRECTED]->(movie:Movie)
RETURN director.name AS name, type(r) AS acted_in, movie.title AS title

#9 WITH
MATCH (person:Person)-[:ACTED_IN]->(m:Movie)
WITH person, count(*) AS appearances, collect(m.title) AS movies
WHERE appearances > 1
RETURN person.name, appearances, movies

查询的结果可能是数字、字符串、或者列表、数组。

约束和索引

# UNIQUE
CREATE CONSTRAINT ON (movie:Movie) ASSERT movie.title IS UNIQUE

# INDEX
CREATE INDEX ON :Actor(name)
CREATE (actor:Actor { name:"Tom Hanks" }),(movie:Movie { title:'Sleepless IN Seattle' }),
  (actor)-[:ACTED_IN]->(movie);
  
  
AI驱动的可信知识库构建:从证据溯源到动态图谱 百科全书正从人工协作共识转向AI增强的可信知识生产范式。其核心原理在于将信息摄取、证据锚定与结构化表达解耦,通过多源感知、可验证推理与人类在环表达三层架构,实现知识从发现到组织的小时级闭环。技术价值体现在显著压缩‘时效悬崖’、保障事实可追溯性、支持专家精准干预,而非替代专业判断。典型应用场景包括垂直领域知识库建设、科研动态追踪、监管合规文档管理及开放科学基础设施升级。本文深入解析Grokipedia所代表的AI-Powered Encyclopedia与Knowledge Graph Integration 阅读详情

相关推荐

BERT驱动的多跳RAG:从迁移学习器到推理调度中枢

多跳问答(Multi-Hop QA)是RAG系统突破单次检索瓶颈的关键能力,其本质在于对问题中实体、关系与逻辑路径的结构化理解。传统端到端LLM生成模式易导致语义漂移、证据链断裂与检索错配,而BERT作为预训练迁移学习器,凭借分层Transformer编码能力,天然适配多跳推理——底层建模词法句法,中层捕捉跨句关系,高层对齐文档级逻辑。将BERT微调为查询规划器(Query Planner),可输出可解释、可追溯、可执行的DAG检索计划,显著提升金融、医疗等强监管场景下的召回率与审计合规性。本文聚焦BERT

culiao2169的博客 639

图数据库查询语言 Cypher 基础

Cypher 是 Neo4j 的声明式查询语言,为属性图提供了富有表现力和高效的查询,是一种成熟和直观的图数据库查询语言。在图上执行任何类型的创建、读取、更新或删除(CRUD),Cypher 是 Neo4j 的主要接口。本文介绍了 Cypher 基础知识,以及如何使用 Neo4j 的查询 UI。

AaronZZH 的博客 3359

【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04

编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017)

weixin_49199313的博客 395

CentOS下Neo4j安装教程

本文记录一下在CentOS 6.7上,安装neo4j图数据库,本文安装的版本为neo4j-community-2.3.9-unix.tar.gz。 下载Neo4j安装包 使用wget命令获取Neo4j安装包~如: [root@dev18 srv]# wget https://neo4j.com/artifact.php?name=neo4j-community-2.3.9-unix...

weixin_30291791的博客 195

【信息科学与工程学】【安全领域】第一百四十二篇 零信任网络解决方案中的算法04

对于节点 i, 有功和无功功率平衡方程为: Pi​=Vi​∑j=1N​Vj​(Gij​cosθij​+Bij​sinθij​), Qi​=Vi​∑j=1N​Vj​(Gij​sinθij​−Bij​cosθij​)。下风向某点 (x,y,z)的浓度 C为: C=2πuσy​σz​Q​exp(−2σy2​y2​)[exp(−2σz2​(z−H)2​)+exp(−2σz2​(z+H)2​)], 其中 Q是源强, u是风速, H是有效源高, σy​,σz​是水平和垂直扩散参数。

weixin_49199313的博客 1408

知识图谱与循环神经网络融合的推荐系统实战解析

推荐系统是解决信息过载问题的核心技术,广泛用于电影、电商、新闻等场景。传统协同过滤方法面临数据稀疏和冷启动两大痛点,如何引入外部知识增强推荐效果成为研究热点。知识图谱以实体-关系结构描述语义关联,为推荐提供显式先验;循环神经网络则擅长对用户行为序列建模,捕捉动态兴趣演变。两者融合,既缓解了冷启动问题,又提升了推荐结果的可解释性,在学术和工业界均备受关注。以MovieLens电影数据集为依托,从知识图谱构建、图嵌入表示、GRU序列建模到特征融合,系统拆解一个推荐系统实战项目,并总结工程落地中的关键细节与调优经

weixin_34194087的博客 394

neo4j入门到入土

图数据库概念:https://blog.youkuaiyun.com/heyc861221/article/details/80128421                          https://blog.youkuaiyun.com/u010801439/article/details/77202371 neo4j图数据库操作入门:https://blog.youkuaiyun.com/AinUser/articl...

github_37002236的博客 1033

ArcGIS通过已知坐标点转面(通过excel文件,有工具可批量生成面要素)

通过使用ArcGIS中的工具,将坐标点XY数据转换成可视化的点线面矢量数据,更加方便快捷有效的获取对应信息

qq_41046162的博客 3万+

Neo4j学习笔记

1. 环境搭建 正好最近同学有一台阿里云服务器借我玩,就尝试着在服务器上搭了Neo4j。 环境:CentOS Linux release 7.4.1708 (Core) 安装Java 安装Neo4j需要Java环境。并且需要jdk1.8,所以低版本需要卸载重装。 去 官网 复制下载链接,然后到命令行找一个目录下载: wget --no-cookies --no-check-certificate ...

weixin_30838873的博客 184

医用超声图像模拟系统算法:空间分辨率详解

医用超声图像模拟系统中的空间分辨率,是连接物理原理、信号处理算法和最终图像质量的桥梁。通过精确模拟从声场发射、组织相互作用到信号接收和图像重建的全链条过程,并运用先进的波束形成、解卷积和超分辨率算法,我们可以不断逼近并突破物理极限,为开发下一代高分辨率超声成像系统提供强大的算法验证平台和数据集来源。未来的趋势将是更高保真度的物理模拟、更智能的自适应算法与数据驱动方法的深度融合。

alxraves的博客 702

硬件-电源-智能保护:eFuse选型与实战设计全攻略

本文深入解析eFuse在硬件电源设计中的关键作用与实战选型技巧。作为智能保护器件,eFuse能提供毫安级精度的过流保护、多重故障防护和智能恢复功能,比传统保险丝快1000倍以上。文章详细介绍了eFuse的工作原理、五大选型维度和PCB布局要点,帮助工程师有效预防电源异常导致的硬件损坏,适用于AI服务器、工业控制等场景。

weixin_30879169的博客 200

py2neo的使用(转)

转自:https://blog.youkuaiyun.com/sinat_26917383/article/details/79901207#24-%E7%B1%BB%E4%BC%BCset%E7%9A%84%E9%87%8D%E8%AE%BE-pushsetdefaultupdate 图数据库常规的有:neo4j(支持超多语言)、JanusGraph/Titan(分布式)、Orientdb,goog...

qq_15906905的博客 711

W5500 TCP服务器状态机详解:从SOCK_CLOSED到SOCK_ESTABLISHED的完整流程

本文深入解析W5500芯片作为TCP服务器时的状态机转换流程,从SOCK_CLOSED到SOCK_ESTABLISHED的完整链路实践。通过硬件协议栈架构分析、状态机全流程拆解及异常处理方案,帮助开发者构建高可靠性的嵌入式网络服务端,优化TCP连接性能与稳定性。

Jerry的专栏 1165

网络算法:从图论基础到深度学习应用(万字长文)

摘要 本文系统介绍了网络算法的知识体系,从基础图论到前沿图神经网络。首先讲解了图的基本概念、表示方法和度量指标。然后详细阐述了经典算法:图的遍历(BFS/DFS)、最短路径(Dijkstra/Bellman-Ford)、最小生成树(Kruskal/Prim)、网络流和社区发现。接着分析了传统方法的局限性,引出深度学习在图数据上的应用,重点介绍了图表示学习(如Node2Vec)和图神经网络(GCN)的核心原理——消息传递机制。全文构建了从理论基础到实践应用的完整框架,为处理各类网络数据问题提供了方法论指导。

热爱技术与前沿创新,深耕科技领域,在科创中精进自我;探索技术乐趣,分享技术干货与成长心得,以技术为伴,热爱生活,在科创与生活中双向成长。 263

3GPP协议解读_NTN系列(一)_38.811_非地面网络(NTN)的背景、应用场景和信道建模

非地面网络覆盖广,对物理攻击和自然灾害有一定的抵抗性。本文根据3GPP协议对NTN网络的背景、应用场景和信道模型进行了整理。

JCMLSY的博客 4924

echarts的坐标轴处理算法

参考原文:https://www.cnblogs.com/vicky-li/p/11653415.html。2、可用于双轴的情况,指定splitNumber,保证左右两边的线没有交叉显示的情况。1、设置echarts显示的最大最小值,让数据显示比较有起伏。处理echarts的一些问题。

HYeeee的博客 800

【系统架构设计师】综合知识篇

本文是软考系统架构设计师备考笔记,系统梳理了考试核心知识点,重点涵盖中间件技术、缓存问题和解决方案。主要内容包括: 中间件概述:定义位于OS与应用间的软件层,分类包括数据库访问、RPC、消息队列等,分析7大技术优点。 消息中间件:对比RabbitMQ/Kafka/RocketMQ特性,详解点对点和发布订阅模型,列举异步解耦、流量削峰等典型场景。 Redis缓存:介绍单线程模型、5种数据结构,重点分析RDB/AOF持久化机制和集群高可用方案。 缓存三大问题:通过流程图解析雪崩(随机过期时间/熔断降级)、穿透(

你的博客 879

uniapp - 解决App端(安卓/苹果)使用uni.openlocation跳转第三方高德地图白屏问题,安卓苹果ios平台使用应用内置地图查看位置打不开,打包后App高德地图页面白屏不显示的问题!

uni-app,安卓Android,苹果ios,安卓app端,苹果App端,uniapp苹果安卓app,高德地图白屏,uniapp调用内置高德地图白屏,uniApp使用uni.openlocation空白不显示地图,uniappapp端如何解决openlocation地图不显示问题,打开第三方地图显示位置地图没反应,uni.openlocation跳转第三方高德地图,APP端白屏问题,使用uni.openlocation跳转到第三方导航软件的时候,app端跳转的是高德地图,但是白屏没有反应,打包发布后白

🏆 前端领域优质创作者 1万+

经典机器学习实战05:把模型做成 Web 应用(UFO)

模型训好了怎么给别人用?用 Flask + pickle 把 UFO 目击分类器(准确率 0.97)包成 Web 应用:GET 返回页面、POST 返回预测,五行核心代码跑通模型上线的最小闭环。

Blockbuster-drug 797

硬件工程师笔试面试高频考点汇总——(2025版)

《硬件工程师笔试面试知识汇总》一文系统梳理了硬件领域的核心知识体系,涵盖电子器件、模拟电路、数字电路等模块。文章详细解析了电阻、电容、电感等基础元件的选型与应用,深入探讨了三极管、MOS管等半导体器件的工作原理,并对比分析了DCDC与LDO等电源方案。在电路设计方面,提供了滤波器、放大器等实用电路的设计方法与仿真案例,同时包含UART、I2C等通信协议的实现要点。文章还整合了戴维宁定理等电路分析理论,并附有美团、联想等名企真题解析。通过器件特性、电路设计、企业真题三维度内容,为硬件工程师构建了完整的知识框架

XU157303764的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【图数据库实战进阶(01):从零认识 Neo4j,搭建第一个图数据库项目】

认识了 Neo4j 和图数据库的基本概念。使用 Docker 启动 Neo4j。通过 Neo4j Browser 连接数据库。创建用户节点。创建好友和关注关系。使用 MATCH 查询一层和两层关系。虽然案例很简单,但已经建立了一个可以继续扩展的用户关系图。接下来我们会逐渐增加用户数量、关系类型和业务场景。另外,本篇使用的是小规模演示数据,重点是理解图模型和 Cypher 查询方式,还不能据此判断图数据库在大规模数据下的性能优势。

一些微不足道的见解、希望能帮助各位 169

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

知识图谱neo4j笔记

在Neo4j中,CREATE语句的三个核心元素是:节点(如emp:Employee)、标签(如Employee,用于分类节点)、属性(如id:123,表示节点的字段)。MATCH(dept:Dept)中,dept是节点变量,Dept是标签,deptno和dname是属性。标签相当于表名,节点是行数据,属性是列值。MATCH(dept:Dept) RETURN dept等价于SELECT * FROM Dept,返回所有该标签的节点。关系具有方向性,可通过CREATE在节点间建立带或不带属性的单向/双向关系。

weixin_51981189的博客 222

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

提示词调参已到死胡同?Neo4j拆解Agent图工程架构:状态图、条件分支与断点排障——读Zachary Blumenfeld演讲

AI Engineer World’s Fair / New York 峰会 · 架构实录 | 主讲嘉宾:Zachary Blumenfeld(Neo4j 资深 AI 架构师) | 主题:Make Your AI Agents Predictable With Graph Engineering:在提示词里多写两句“千万不要出错”、“请严格遵照逻辑”,永远治不好 AI Agent 的不可预测性。自然语言写就的散文式 Prompt,本质上是将复杂的业务控制流塞进了黑盒概率迷宫。

鲜衣怒马楼兰月 204

AI 编译器常量折叠:让计算图上的“死算子“提前消失

"某一点上变量x的值是多少"这个问题,在编译原理里叫**可达定义(Reaching Definitions)**分析。做法是给控制流图(CFG)的每个基本块算一个集合ReachesnReachesnReachesn⋃m∈predsnDEDefm∪Reachesm∩DefKillm‾Reachesnm∈predsn⋃​DEDefm∪Reachesm∩DefKillm​符号含义大白话predsnpredsn基本块nnn的。

喜欢打篮球的普通人 173
上一篇: 2018-01-06-inroduction-for-spacy
下一篇: 2017-10-23-neo4j-1-install
android_ruben
博客等级 码龄11年 106粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值