当前位置: 首页 > news >正文

neo4j图数据库基本概念和向量使用

一.节点

1.新建节点

create (n:GroupProduct {name:'都邦高保额团意险',description: "保险产品名称"} ) return n

CREATE:Neo4j 的关键字,用于创建新节点或关系。


(n:GroupProduct):
n 是节点的临时别名(变量名),方便在return中引用,创建完成之后就没用了。


GroupProduct 是节点的标签(Label),用于分类节点(如 Person, Product 等)。


{name:'都邦高保额团意险',description: "保险产品名称"}
节点的属性(Properties),键值对形式:


RETURN n:
返回新创建的节点 n,用于验证操作是否成功。

2.已有节点创建关系

MATCH (a:GroupProductA {name:'保高空'}), (b:GroupProduct {name:'都邦高保额团意险'})
CREATE (a)-[:INCLUDE {restrict: "涉电及高空作业按6类可承保"}]->(b)

变量名可以随意定义,只要能区分出来两个节点的区别,简短有意义

关系名称INCLUDE: 也可以随意定义,最好是能够见名知意,最好定义统一的团队规范

关系也可以添加属性: 比如表明这个关系有什么限制条件

使用箭头 -> 表示从左到右的关系方向

3.删除节点

MATCH (n:GroupProductA {name:'保高空' })
DETACH DELETE n

4.查询节点之间的相邻节点

MATCH (startNode {属性名: 值})-[:关系类型*..N]-(relatedNode)
RETURN startNode, relatedNode

例如:

MATCH (a {name: "保高空"})-[*..1]-(b)
RETURN a,b

关键参数说明
参数说明示例
*表示遍历任意深度的关系(包括直接关联和间接关联)。-[*] 表示所有层级关联。
*..N最大遍历深度。例如 *..2 表示遍历 1 层或 2 层关联。-[:EXCLUDES*..2] 最多找两跳关联。
-[]->单向遍历(从左到右)。(a)-[:PARENT_OF]->(b) 只找 a 的子节点。
<-[]-反向遍历(从右到左)。(a)<-[:CHILD_OF]-(b) 找到 b 的父节点。

 注意事项

性能问题:遍历深度(如 *..N)越大,查询耗时越长,建议根据需求限制深度。
方向性:若关系是单向的(如 EXCLUDES),需注意方向(如 ()-[:EXCLUDES]->())。

属性唯一性:确保查询的属性(如 product_id)是唯一标识符,否则可能返回多个节点。


5.对已创建好的节点添加属性

MATCH (a:GroupProductA {name:'保高空' })
SET a+= { embedding: [] }
RETURN b;

二.节点向量存储和检索

1.节点需要添加向量数组

可以选择一开添加节点的时候加一个向量属性

create (n:GroupProductA {name:'保高空',description: "保险产品可以保高空作业",embedding: [向量的具体值]}) return n

或者后续添加

MATCH (a:GroupProductA {name:'保高空' })
SET a+= { embedding: [向量具体数值] }
RETURN b;

2.给节点增加向量索引

CREATE VECTOR INDEX 索引名称 IF NOT EXISTS
FOR (具体的节点标签)
ON n.embedding
OPTIONS { indexConfig: {
 `vector.dimensions`: 向量维度数值,
 `vector.similarity_function`: 向量计算方法
}}

例如:

CREATE VECTOR INDEX HighDutyIdx IF NOT EXISTS
FOR (n:HighDuty)
ON n.embedding
OPTIONS { indexConfig: {
 `vector.dimensions`: 1536,
 `vector.similarity_function`: 'cosine'
}}

3.计算向量余弦相似度

MATCH (a:GroupProductA)
WHERE a.embedding IS NOT NULL
WITH n,
     // 计算向量余弦相似度或欧氏距离
     vector.similarity.cosine(n.embedding, [0.1, 0.2, ...]) AS similarity
RETURN n.name, similarity
ORDER BY similarity DESC
LIMIT 10;

4.查询两个节点的向量相似度


MATCH (a:GroupProductA {name: '保高空'})
MATCH (b:GroupProductA {name:'团意'})
RETURN vector.similarity.cosine(a.embedding, b.embedding)

5.查询所有向量索引


SHOW VECTOR INDEXES

6.删除指定向量索引


DROP INDEX moviePlots

三.RAG向量检索最佳实践

1.先查询出所有符合的向量节点,有个阈值,比如大于0.8的查询出所有符合的节点

2.然后再通过这些符合的节点,根据节点之间的关系,找到想要查询出来的节点属性

3.根据查询出来的节点属性和用户问题,给大模型总结

相关文章:

  • python小区物业管理系统-小区物业报修系统
  • Missashe高数强化学习笔记(随时更新)
  • Redis 存储原理与数据模型(三)
  • 字符串---Spring字符串基本处理
  • TensorFlow中数据集的创建
  • 《时序数据库全球格局:国产与国外主流方案的对比分析》
  • 数据库的SQLSTATE[23000]异常,通过自定义异常类来提供更友好的提示信息
  • 2021-11-15 C++下一个生日天数
  • UnityDots学习(五)
  • 【大模型】LLM概念相关问题(上)
  • C语言编程--19.括号生成
  • 【数据机构】2. 线性表之“顺序表”
  • 行业 |四大痛点待破:“拆解”DeepSeek一体机
  • 布隆过滤器:高效的数据结构与应用详解
  • Node.js 24.0 正式发布:性能跃升与开发体验全面升级
  • 【AI论文】ZeroSearch:在不搜索的情况下激励LLM的搜索能力
  • 基于CNN的猫狗图像分类系统
  • MQTT:轻量级物联网通信协议详解
  • 在ISOLAR A/B 工具使用UDS 0x14服务清除单个DTC故障的配置
  • 大模型提示词策略
  • 国际足联女子世界杯再次扩军,2031年起增至48支球队
  • 上海市委常委会会议暨市生态文明建设领导小组会议研究基层减负、生态环保等事项
  • 湖南省职业病防治院通报3岁女童确诊“铊中毒”:去年病例,编辑误写为“近日”
  • 明星同款撕拉片,为何能炒到三四百一张?
  • 青年与人工智能共未来,上海创新创业青年50人论坛徐汇分论坛举办
  • 金地集团:今年前4个月实现销售额109.3亿元,同比下降52.44%