GraphRAG知识图谱入门

入门·10 分钟·通过可运行代码讲解「GraphRAG知识图谱入门」,覆盖环境准备、核心代码、参数说明、异常处理、工程化改造和练习任务,适合 AI 编程入门。

GraphRAG知识图谱入门

GraphRAG 是把知识图谱和 RAG 结合起来的思路。普通 RAG 擅长按语义检索文本片段,GraphRAG 更强调实体、关系和多跳关联。

为什么需要GraphRAG

普通向量 RAG 适合问“某条制度怎么说”。但如果问题涉及复杂关系,例如“某供应商关联的项目有哪些风险”,只靠文本相似度可能不够。

知识图谱能表达实体之间的关系,例如公司、项目、人员、产品、事件之间的连接。

基本流程

  1. 从文档中抽取实体;
  2. 抽取实体之间的关系;
  3. 存入图数据库或图结构;
  4. 用户提问时识别问题中的实体;
  5. 在图上查找相关邻居和路径;
  6. 把图谱结果和文本证据交给模型回答。

一个简单例子

文档里有:

A公司参与了智慧园区项目。李明是A公司的项目经理。智慧园区项目使用了B系统。

可以抽取:

A公司 --参与--> 智慧园区项目
李明 --担任项目经理--> A公司
智慧园区项目 --使用--> B系统

这样就能回答“李明负责的公司参与了哪些系统相关项目?”这类多跳问题。

图谱数据结构

最简单可以用三元组表示:

triples = [
    ('A公司', '参与', '智慧园区项目'),
    ('李明', '担任项目经理', 'A公司'),
]

生产中可以使用 Neo4j、NebulaGraph 或其他图数据库。

和向量RAG结合

GraphRAG 不一定替代向量检索。常见做法是:图谱负责找实体关系,向量检索负责找原文证据,两者结果一起交给模型。

这样既能利用结构化关系,也能保留原文上下文。

难点

  • 实体抽取不稳定;
  • 同名实体需要消歧;
  • 关系类型要设计清楚;
  • 图谱更新成本高;
  • 错误关系会影响推理结果。

小结

GraphRAG 适合关系复杂、需要追溯路径的知识问答。初学者可以先从三元组抽取开始,再逐步接入图数据库和向量检索。