图数据库与查询语言:Cypher、SPARQL 与 Gremlin

04-知识图谱基础 核心 约 20 分钟 #图数据库#Cypher#SPARQL#Neo4j#RDF 更新 2026-10-02
当前状态:未学
本文基于模型知识整理(生成时未联网核对),关键结论建议对照经典文献复核。

一句话定义

图数据库原生以图结构存储与遍历数据:属性图(Neo4j 的 Cypher、Gremlin)把属性直接挂在节点与边上,RDF 三元组库(SPARQL)以 W3C 标准建模语义——RAG 场景主流是属性图 + Cypher,查询语言是与图交互的接口,也是 Text-to-Cypher 的目标语言。

为什么重要

图检索模式(kp-025)最终都要落到一条图查询上;选型(属性图 vs RDF)影响 schema 表达、工具生态与团队技能。对 RAG 工程师而言,能读懂与手写基本 Cypher、理解"查询模式(pattern matching)"思维,是接住 GraphRAG 的入场券。

前置知识

kp-018/019(图模型与 schema)。

核心概念

  • 属性图(property graph):节点带标签与属性,边带类型与属性——工程友好,Neo4j、NebulaGraph、Memgraph、AWS Neptune(兼容双模型)均支持。
  • RDF 三元组库:主谓宾 + IRIs,OWL 本体、RDFS 推理;SPARQL 查询。学术与开放数据生态强,企业内部工程栈相对重。
  • Cypher:声明式模式匹配语言,ASCII 画图语法 (a:Person)-[:WORKS_AT]->(c:Company);Neo4j 主推,也是 LLM 生成查询最常见目标。
  • Gremlin:命令式遍历语言(图遍历流水线),Apache TinkerPop 生态。
  • 索引与遍历性能:图查询复杂度与"起点选择"强相关——从无索引属性全表扫起会灾难,热点节点(如"中国"关联百万边)需要特殊处理。

原理与机制

模式匹配思维(与 SQL 的最大区别):Cypher 不是描述"怎么算"而是描述"要匹配什么形状"——"找出向华为供货且也向小米供货的公司":

MATCH (h:Company {name:'华为'})<-[:SUPPLIES_TO]-(s)-[:SUPPLIES_TO]->(x:Company {name:'小米'})
RETURN s.name

多跳天然直观:(a)-[:KNOWS*1..3]->(b) 表示 1 到 3 跳——这正是 kp-025 多跳检索的语言基础。

属性图 vs RDF 怎么选:RAG 与企业内部应用默认属性图(schema 灵活、工具链现代、LLM 生成 Cypher 语料丰富);需要强标准语义推理(OWL 公理、跨机构数据交换)时 RDF/SPARQL 有优势。两者之间还有 RDF★ 等演进,初学不必展开。

图库在 RAG 栈中的位置:图数据库不替代向量库,而是承担"结构化查询与多跳遍历"这一路(kp-025),产物(子图/路径)被序列化成文本进入上下文(kp-014 的组装)。

图示

// 多跳: 华为的供应商的母公司
MATCH (h:Company {name:'华为'})<-[:SUPPLIES_TO]-(s)-[:OWNED_BY]->(p:Company)
RETURN s.name AS 供应商, p.name AS 母公司

// 聚合: 每类风险物料的供应商数
MATCH (m:Material)<-[:SUPPLIES]-(s:Company)
RETURN m.name, count(DISTINCT s) AS 供应商数 ORDER BY 供应商数 DESC

实例或案例

  • 供应链风险系统:Neo4j 存 10 万级公司节点,Cypher 一跳查"某物料的前五大供应商及其备份",毫秒级返回。
  • GraphRAG 工作流:LLM 生成 Cypher(Text-to-Cypher)→ 图库执行 → 结果转文本 → 进 prompt(kp-025)。
  • 风控图谱多用 Gremlin/TinkerPop(与 Hadoop 生态集成)。

常见误区

  • 误区一:"图数据库可以替代关系库/向量库"。图强在关系遍历;大规模扫描聚合(报表)SQL 仍占优,语义匹配仍要向量库——各司其职。
  • 误区二:"无界遍历随便写"。* 无上限的变长路径在稠密图上会爆炸(组合数增长);永远给跳数上限与方向。
  • 误区三:"RDF 已死/属性图不标准"。两者各有生态:开放数据与语义推理选 RDF,应用工程选属性图;按团队与场景选,不站队。

与其他知识点的关系

  • kp-019:查询 pattern 依据 schema 词汇。
  • kp-025:Text-to-Cypher 与子图检索的实现层。
  • kp-024:Microsoft GraphRAG 产出的"社区树"同样可入图库承载。

自测题

  1. 属性图与 RDF 的核心区别?

答:属性图节点/边可直接挂属性、工程生态现代;RDF 以三元组+IRI 为原子、有 OWL/SPARQL 标准语义栈,重推理与开放数据交换。

  1. 写出"找出 2023 年后收购过 AI 公司的公司"的 Cypher 思路。

答:MATCH (a:Company)-[r:ACQUIRED]->(t:Company) WHERE t.industry='AI' AND r.date >= date('2023-01-01') RETURN a.name, t.name——时间走关系属性。

  1. 为什么变长路径必须设上限?

答:无界遍历在稠密图上路径数指数爆炸,查询超时拖垮库;显式 *1..3 限制跳数与方向是性能与安全的双重要求。

延伸阅读

  • Neo4j 官方 Cypher 文档与 GraphAcademy 免费课程。
  • Robinson 等《Graph Databases》(O'Reilly,免费电子版)。
  • W3C SPARQL 1.1 规范(了解 RDF 侧即可)。