GraphRAG知识图谱入门
入门·10 分钟·通过可运行代码讲解「GraphRAG知识图谱入门」,覆盖环境准备、核心代码、参数说明、异常处理、工程化改造和练习任务,适合 AI 编程入门。
GraphRAG知识图谱入门
GraphRAG 是把知识图谱和 RAG 结合起来的思路。普通 RAG 擅长按语义检索文本片段,GraphRAG 更强调实体、关系和多跳关联。
为什么需要GraphRAG
普通向量 RAG 适合问“某条制度怎么说”。但如果问题涉及复杂关系,例如“某供应商关联的项目有哪些风险”,只靠文本相似度可能不够。
知识图谱能表达实体之间的关系,例如公司、项目、人员、产品、事件之间的连接。
基本流程
- 从文档中抽取实体;
- 抽取实体之间的关系;
- 存入图数据库或图结构;
- 用户提问时识别问题中的实体;
- 在图上查找相关邻居和路径;
- 把图谱结果和文本证据交给模型回答。
一个简单例子
文档里有:
A公司参与了智慧园区项目。李明是A公司的项目经理。智慧园区项目使用了B系统。
可以抽取:
A公司 --参与--> 智慧园区项目
李明 --担任项目经理--> A公司
智慧园区项目 --使用--> B系统
这样就能回答“李明负责的公司参与了哪些系统相关项目?”这类多跳问题。
图谱数据结构
最简单可以用三元组表示:
triples = [
('A公司', '参与', '智慧园区项目'),
('李明', '担任项目经理', 'A公司'),
]
生产中可以使用 Neo4j、NebulaGraph 或其他图数据库。
和向量RAG结合
GraphRAG 不一定替代向量检索。常见做法是:图谱负责找实体关系,向量检索负责找原文证据,两者结果一起交给模型。
这样既能利用结构化关系,也能保留原文上下文。
难点
- 实体抽取不稳定;
- 同名实体需要消歧;
- 关系类型要设计清楚;
- 图谱更新成本高;
- 错误关系会影响推理结果。
小结
GraphRAG 适合关系复杂、需要追溯路径的知识问答。初学者可以先从三元组抽取开始,再逐步接入图数据库和向量检索。