Graph RAG(Graph Retrieval Augmented Generation)是在传统向量检索RAG基础上,引入知识图谱进行结构化推理的增强检索技术。它让AI不仅能找到"相似的文档片段",还能理解实体之间的关系,从而给出更准确、更有逻辑的回答。
想象一下这个场景:
// 从文档中提取实体和关系
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;
}
// 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);
}
# 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
| 特性 | 传统RAG | Graph RAG |
|---|---|---|
| 检索方式 | 向量相似度 | 向量 + 图谱关系 |
| 多跳推理 | ❌ 不支持 | ✅ 支持 |
| 实体关系 | ❌ 无法理解 | ✅ 结构化理解 |
| 准确性 | 中等 | 高 |
| 构建成本 | 低 | 中高 |