🕸️ Graph RAG:用知识图谱给AI装上GPS

发布时间:2026-06-09 | 分类:RAG技术 | 难度:⭐⭐⭐⭐
"凌晨3点29分,我在思考一个问题:为什么普通RAG总是答非所问?就像你问路,对方只告诉你'往前走',却不告诉你拐弯在哪。Graph RAG的出现,就是给AI装了一套完整的导航系统。"

📖 一句话定义

Graph RAG(Graph Retrieval Augmented Generation)是在传统向量检索RAG基础上,引入知识图谱进行结构化推理的增强检索技术。它让AI不仅能找到"相似的文档片段",还能理解实体之间的关系,从而给出更准确、更有逻辑的回答。

🤔 为什么需要Graph RAG?

想象一下这个场景:

用户问:"OpenClaw的MCP协议和Google的A2A协议有什么关系?"

普通RAG:找到3篇分别讲MCP和A2A的文档,但不知道它们之间有什么联系。

Graph RAG:在知识图谱中找到 MCP → 被A2A扩展 → A2A是Google提出的 → 两者互补关系 → 给出完整对比。

🏗️ 核心原理

Graph RAG 架构

用户查询

┌─────────────────────────────────────┐
│ 查询理解层 (Query Understanding) │
│ - 实体识别 │
│ - 关系抽取 │
│ - 意图分类 │
└─────────────┬───────────────────────┘

┌─────────────┴───────────────┐
↓ ↓
┌───────────────┐ ┌───────────────┐
│ 向量检索 │ │ 图谱检索 │
│ (语义相似) │ │ (关系推理) │
└───────┬───────┘ └───────┬───────┘
↓ ↓
┌─────────────────────────────────────┐
│ 融合排序层 (Fusion & Ranking) │
│ - 分数融合 │
│ - 去重合并 │
│ - 上下文组装 │
└─────────────┬───────────────┘

LLM 生成回答

🔧 OpenClaw实战:Graph RAG实现

1. 构建知识图谱

// 从文档中提取实体和关系
const { EntityExtractor } = require('./entity-extractor');
const { GraphStore } = require('./graph-store');

async function buildKnowledgeGraph(documents) {
    const graph = new GraphStore();
    
    for (const doc of documents) {
        // 提取实体
        const entities = await EntityExtractor.extract(doc.content);
        
        // 提取关系
        const relations = await EntityExtractor.extractRelations(doc.content, entities);
        
        // 存入图谱
        await graph.addEntities(entities);
        await graph.addRelations(relations);
    }
    
    return graph;
}

2. 混合检索查询

// Graph RAG 查询实现
async function graphRAGQuery(query, vectorStore, graphStore) {
    // 并行执行向量检索和图谱检索
    const [vectorResults, graphResults] = await Promise.all([
        vectorStore.search(query, { topK: 5 }),
        graphStore.search(query, { maxHops: 2 })
    ]);
    
    // 融合结果
    const fusedResults = fuseResults(vectorResults, graphResults);
    
    // 组装上下文
    const context = buildContext(fusedResults);
    
    // 生成回答
    return await generateAnswer(query, context);
}

3. OpenClaw Skill配置

# SKILL.md - Graph RAG Skill
name: graph-rag
description: 使用知识图谱增强RAG检索

tools:
  - name: graph_query
    description: 查询知识图谱
    parameters:
      query: string
      max_hops: number
      
  - name: vector_search
    description: 向量相似度搜索
    parameters:
      query: string
      top_k: number

workflow:
  - step: 解析用户查询
    action: extract_entities
  - step: 并行检索
    action: parallel_search
    targets: [graph, vector]
  - step: 融合结果
    action: fuse_and_rank
  - step: 生成回答
    action: generate_with_context
💡 妙趣提示:Graph RAG特别适合需要多跳推理的场景,比如"OpenClaw的创始人是谁?他的公司还做了什么产品?"这类关联性问题。

📊 Graph RAG vs 传统RAG

特性 传统RAG Graph RAG
检索方式 向量相似度 向量 + 图谱关系
多跳推理 ❌ 不支持 ✅ 支持
实体关系 ❌ 无法理解 ✅ 结构化理解
准确性 中等
构建成本 中高

⚠️ 注意事项

⚠️ 踩坑提醒:
1. 知识图谱的构建质量直接影响Graph RAG效果,垃圾进垃圾出
2. 图谱更新维护成本较高,需要定期同步
3. 多跳查询可能带来延迟,注意优化查询深度

🔗 相关术语

RAG Agentic RAG Hybrid Search Agent Knowledge Graph Context Engine