储存的不是数据罗列,而是逻辑脉络、因果关联、层级关系。当"乔布斯的女儿是谁"这类需要推理的问题出现,向量数据库就无能为力——图数据库登场。
三个核心元素:节点(Node)= 实体 · 关系(Edge)= 关联 · 属性(Props)= 详情
┌──────┬─────────┬──────┐
│ 姓名 │ 职位 │ 上级 │
├──────┼─────────┼──────┤
│ 张三 │ CEO │ NULL │
│ 李四 │ CTO │ 张三 │
│ 王五 │ 工程师 │ 李四 │
└──────┴─────────┴──────┘
问"王五的老板的老板"→ 2次 JOIN
(张三:CEO)
│
├─管理→ (李四:CTO)
│
└─管理→ (王五:工程师)
问"王五的老板的老板"→ 沿边遍历2次 ✅
Cypher 是 Neo4j 专属语言,像画图一样直观:
-- 创建节点
CREATE (p:Person {name: '乔布斯', born: 1955})
-- 创建关系
MATCH (a:Person {name: '乔布斯'}), (b:Company {name: 'Apple'})
CREATE (a)-[:FOUNDED {year: 1976}]->(b)
-- 乔布斯的女儿是谁?
MATCH (乔布斯:Person {name: '乔布斯'})-[:PARENT_OF]->(child)
RETURN child.name
-- 多跳:女儿就读的大学?
MATCH (乔布斯:Person {name: '乔布斯'})
-[:PARENT_OF]->(child)-[:STUDIED_AT]->(school)
RETURN child.name, school.name
| 优势 | 说明 | 场景 |
|---|---|---|
| 🧠 隐性逻辑挖掘 | 发现数据中隐藏的关联模式 | 反洗钱、欺诈检测 |
| 🔗 溯源关系 | "根因是什么"一路追溯 | 供应链追踪 |
| 🏗️ 多层级串联 | 公司→部门→团队→人,4跳毫秒级 | 组织架构分析 |
| 🕸️ 网状数据处理 | 天生适合社交网络、金融交易 | 股权穿透、家族关系 |
| 📊 图算法 | PageRank、社区发现、中心度 | 影响力分析 |
用户:"某客户供应链最近有什么风险?"
↓
1. LLM 提取实体:客户名、供应商名
↓
2. Neo4j 图查询:客户→供应商→二级供应商→近期异常
↓
3. Qdrant 向量库:检索相关新闻详情
↓
4. LLM 综合:生成完整风险分析报告
GraphRAG = 向量库(What) + 图库(Why/How) + LLM(生成)
| 搭建复杂 | 需定义节点类型和关系模式 → 从简单 schema 迭代 |
| 维护成本高 | 数据更新需维护图结构 → 自动化 ETL |
| 运算消耗高 | 大规模图计算需资源 → 索引优化+图分片 |