返回顶部
n

neo4j-cypher-query-analyze Cypher查询分析

智能图数据库查询助手 - 自动感知 Schema 结构,根据自然语言生成精准的 Cypher 查询

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
279
下载量
免费
免费
2
收藏
概述
安装方式
版本历史

neo4j-cypher-query-analyze

智能图数据库查询助手 (Schema-Aware Graph Query Assistant)

核心能力

  1. 1. 自动 Schema 感知:首次查询时自动获取图数据库的节点标签、关系类型和属性结构
  2. 智能 Cypher 生成:基于真实 Schema 结构,将自然语言转换为精准的 Cypher 查询
  3. 上下文记忆:缓存 Schema 信息和常用查询模式,提升后续查询效率
  4. 安全执行:严格的查询审查机制,防止破坏性操作和性能风险

系统架构

用户提问 → Schema 获取(如需要) → 意图分析 → Cypher 生成 → 安全检查 → 执行查询 → 结果格式化



第一阶段:Schema 感知与缓存

Schema 获取策略

在首次查询或 Schema 缓存过期时,执行以下探测查询:

1. 获取所有节点标签
cypher
CALL db.labels() YIELD label RETURN collect(label) AS nodeLabels

2. 获取所有关系类型
cypher
CALL db.relationshipTypes() YIELD relationshipType RETURN collect(relationshipType) AS relTypes

3. 获取属性键(可选,用于理解常用属性)
cypher
CALL db.propertyKeys() YIELD propertyKey RETURN collect(propertyKey) AS propertyKeys

4. 获取 Schema 可视化(Neo4j 特定)
cypher
CALL db.schema.visualization()

5. 采样各标签的典型节点(理解属性结构)
对每个重要标签执行:
cypher
MATCH (n:LabelName)
RETURN n LIMIT 1

6. 采样关系结构
cypher
MATCH ()-[r:REL_TYPE]->()
RETURN type(r) as rel_type, keys(r) as properties LIMIT 1

Schema 缓存机制

使用 memory 工具缓存 Schema 信息:

yaml

缓存键: graphdbschema{database_name}


内容结构:


schema_cache:
timestamp: 2024-01-15T10:30:00Z
ttl_hours: 24
node_labels:
- Person:
sampleproperties: [name, age, email, createdat]
estimated_count: 15000
- Company:
sampleproperties: [name, industry, registeredcapital]
estimated_count: 5000
- Product:
sample_properties: [name, category, price]
relationship_types:
- WORKS_AT:
start_labels: [Person]
end_labels: [Company]
properties: [since, position]
- MANAGES:
start_labels: [Person]
end_labels: [Person]
- PRODUCES:
start_labels: [Company]
end_labels: [Product]
indexes:
- :Person(id)
- :Company(name)
constraints:
- :Person(email) UNIQUE


第二阶段:智能查询生成

意图分析框架

将用户查询分类为以下模式:

查询模式描述示例
实体查找按属性查找特定节点查找叫张三的客户
关系探索
查找节点的关联关系 | 张三的朋友有哪些 |
| 路径发现 | 查找两个节点间的路径 | 张三和李四之间有什么关系 |
| 模式匹配 | 特定子图结构查询 | 查找三角担保关系 |
| 统计分析 | 聚合计算 | 每个公司的平均员工数 |
| 元数据查询 | 查询 Schema 本身 | 数据库里有哪些实体类型 |

Cypher 生成规则

基于 Schema 缓存生成查询时遵循:

1. 标签匹配规则

  • - 用户提到的实体名称 → 匹配 node_labels 中最相似的标签
  • 使用 Levenshtein 距离或语义相似度进行模糊匹配
  • 歧义时询问用户确认(如 客户 对应 Customer 还是 Client)

2. 属性推断规则

  • - 优先使用索引属性(如 id, email)进行过滤
  • 字符串匹配使用 CONTAINS 或 STARTS WITH 而非精确匹配(除非用户明确)
  • 数值范围使用 >= 和 <=

3. 关系导航规则

  • - 根据 Schema 确定有效的 (startlabel)-[REL]->(endlabel) 组合
  • 双向关系使用 -[:REL]- 而非 ->
  • 多跳查询限制最大深度(默认 3,防止路径爆炸)

4. 性能优化规则

  • - 所有查询必须包含 LIMIT(默认 100,最大 1000)
  • 避免 MATCH (n) 全节点扫描
  • 优先使用 MATCH 而非 OPTIONAL MATCH 除非明确需要
  • 复杂聚合使用 WITH 进行管道处理



第三阶段:安全与执行

查询安全检查 (Guardrails)

在执行前进行多层审查:

1. 操作类型检查
python

伪代码逻辑


write_keywords = [CREATE, DELETE, SET, REMOVE, MERGE, DROP, LOAD]
if any(kw in query.upper() for kw in write_keywords):
requireexplicitconfirmation()
logaudittrail()

2. 复杂度评估

  • - 计算估计的节点扫描量(基于标签选择性和过滤条件)
  • 深度超过 4 的关系路径查询需要警告
  • 全图遍历查询(无标签限制)直接拒绝

3. 敏感数据保护

  • - 检测到属性名包含 password, token, secret, ssn 时自动脱敏
  • 返回前扫描结果集,对敏感字段进行掩码处理(如 *)

4. 超时控制

  • - 设置 30 秒查询超时
  • 超时后自动终止并建议优化查询(添加索引提示或限制条件)

执行与错误处理

HTTP API 调用模板:
bash

Neo4j HTTP API


curl -s -X POST \
-H Content-Type: application/json \
-H Accept: application/json \
-u ${GRAPHDBUSER}:${GRAPHDBPASSWORD} \
${GRAPHDBURI}/db/${GRAPHDBDATABASE}/tx/commit \
-d {
\statements\: [{
\statement\: \${CYPHER_QUERY}\,
\parameters\: ${PARAMETERS_JSON:-{}},
\resultDataContents\: [\row\, \graph\]
}]
} 2>&1

错误分类处理:

错误类型识别特征处理策略
连接失败Failed to connect, Connection refused检查 URI 和网络,提示验证服务状态
认证失败
Unauthorized, Authentication failed | 提示检查用户名密码,不暴露具体错误 |
| 语法错误 | InvalidSyntax, SyntaxError | 展示生成的查询,高亮错误位置,建议修正 |
| 语义错误 | Label not found, Property not found | 对比 Schema 缓存,提示可用的标签/属性 |
| 性能超时 | Transaction timed out | 建议添加 LIMIT、缩小过滤范围、或创建索引 |
| 权限不足 | Forbidden, Access denied | 提示当前用户权限限制,建议联系管理员 |


第四阶段:结果格式化

输出格式策略

根据返回数据类型自动选择最佳展示方式:

1. 表格视图(默认)
适用于:属性列表、聚合统计
markdown

姓名年龄所属公司入职年份
张三32科技有限公司2019
李四
28 | 创新网络公司 | 2021 |

2. 关系图谱描述
适用于:路径、子图结构
markdown
关系路径 (长度: 2)

张三 (Person, 35岁) -[WORKS_AT {since: 2019, position: 工程师}]->
科技有限公司 (Company, 互联网) -[PRODUCES {category: SaaS}]->
智能云平台 (Product, 2023年发布)

3. 统计卡片
适用于:聚合查询
markdown
📊 统计结果

  • - 总节点数: 1,234
  • 平均年龄: 34.5 岁
  • 最大关系深度: 5
  • 最密集连接节点: 科技有限公司 (连接数: 156)

4. JSON 原始数据
适用于:开发者调试、后续程序处理
json
{
columns: [name, count],
data: [
{name: 科技有限公司, count: 42},
{name: 创新网络, count: 28}
]
}



完整工作

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 neo4j-cypher-query-analyze-1776176600 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 neo4j-cypher-query-analyze-1776176600 技能

通过命令行安装

skillhub install neo4j-cypher-query-analyze-1776176600

下载

⬇ 下载 neo4j-cypher-query-analyze v1.0.0(免费)

文件大小: 8.49 KB | 发布时间: 2026-4-15 12:28

v1.0.0 最新 2026-4-15 12:28
neo4j-cypher-query-analyze 1.0.0 – Initial Release

- Introduces schema-aware Cypher query generation: automatically detects graph schema, caches structure, and builds accurate queries from natural language.
- Implements smart intent analysis to classify user queries (entity lookup, relationship exploration, path finding, analytics, etc.).
- Integrates multi-layer safety checks to prevent destructive operations and mask sensitive fields.
- Provides auto-formatting of query results (tables, relationship paths, statistics, or JSON) for clear output.
- Connects via Neo4j HTTP API with error categorization and user-friendly troubleshooting.
- Supports schema caching for faster subsequent queries and efficient memory usage.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部