经典RAG应用的范式与架构已经非常流行,我们可以在很短的时间内借助成熟框架开发一个简单能用的RAG应用。
但是传统的RAG系统有个非常大的局限,即不善于处理复杂关系推理、总结性问题和多跳问题。因为传统RAG需要对文本进行分块,然后进行向量化存储,这种处理模式就会天然导致RAG在全局查询或总结上的表现不会太好。比如面对这样的问题,“《跨越鸿沟》这本书整体上讲了什么?请撰写一份2000字的总结”,传统RAG大概率会表现不及格。
同样的,在对文本分块之后,可能会丢失一些信息之间的关系和因果性,因此在处理多跳问题时,会出现逻辑关系断裂的问题。比如面对这样的问题,“在华东区所有的门店中,哪个导购的消费者客单价最高”,传统RAG系统可能会给出错误的答复。
这正是知识图谱和GraphRAG可以发挥作用的场景

知识图谱是一种将将信息表示为实体(节点)和关系(边)的网络,模仿了人类结构知识的组成方式。知识图谱不仅能捕获原始信息,还能捕获跨越多个文档的高阶关系,并具备强大的推理能力。
知识图谱的信息存储可以使用图数据库,图数据库是一种专门用于存储和操作图结构数据的数据库管理系统,如下图所示。与关系型数据库不同,图数据库使用节点、边和属性来表示和存储数据,非常适合处理高度连接的数据,提供高性能的复杂查询能力,用来遍历与发现有洞察力的数据关系。其最大特点是:
灵活的模型:可以方便地表示复杂的关系。
高效的查询:特别是多跳关系的查询,比关系数据库更高效。
可扩展性:能够处理大量节点和边。

GraphRAG
GraphRAG 是一种结构化的、分层的检索增强生成 (RAG) 方法,而不是使用纯文本片段的简单语义搜索方法。 GraphRAG 过程包括从原始文本中提取知识图、构建社区层次结构、生成这些社区的摘要,然后在执行基于 RAG 的任务时利用这些结构。
GraphRAG架构
图索引构建:首先,使用LLM对源文档进行处理,提取实体和关系,构建实体知识图谱。然后,使用社区检测算法将图谱划分为社区,并为每个社区生成摘要。
查询处理:当接收到用户查询时,系统会使用社区摘要来生成部分答案。这些部分答案随后被汇总和摘要,以形成对用户的最终回答。
并行处理:在索引和查询时,系统能够并行处理社区摘要,这提高了处理效率并允许处理大规模数据集。
模块化和可扩展性:Graph RAG方法的模块化设计允许它适应不同规模和类型的数据集,同时保持高效和可扩展
GraphRAG工作流程
GraphRAG的工作流程主要分为索引(Indexing)和查询(Querying)两个阶段:
索引阶段:
文本单元分割:将输入的文本语料库划分为多个文本单元,如段落或句子。
实体与关系提取:利用LLM识别并提取文本单元中的实体(如人名、地点等)、实体之间的关系以及关键信息。
层次聚类:使用社区检测算法(如Leiden算法)对提取的实体和关系进行分层聚类,形成多个社区。
社区摘要生成:为每个社区生成自然语言摘要,以了解数据集的主题结构和语义。
查询阶段:
局部搜索:在相关社区中进行搜索,获取中间答案。
全局搜索:汇总局部搜索的结果,生成最终的全局性答案。
GraphRAG适合的应用场景
下面我们来分析一下GraphRAG适合的场景,通常来说,具备如下特征的数据和场景更适合使用GraphRAG。
第一类是有较多相互关联实体与复杂关系,且结构较明确的数据。比如:
人物关系网络数据:社交网络中的用户关系、历史人物关系、家族图谱等。
企业级关系数据:公司结构、供应链、客户等之间的关系。
医学类数据:疾病、症状、治疗、药物、传播、病例等之间复杂关系。
法律法规数据:法律条款之间的引用关系、解释、判例与适用法律条款的关系。
推荐系统数据:产品、用户、浏览内容、产品之间的关联、用户之间的关系等。
第二类是涉及复杂关系、语义推理和多步逻辑关联的查询,比如:
多跳关系查询:在华东区所有的门店中,哪个导购的消费者客单价最高?
知识推理查询:根据患者的症状和病史,推断可能的疾病并提供治疗方案。
聚合统计查询:在《三国演义》中,出场次数最多的人是谁?
时序关联查询:过去一年都有哪些AI大模型的投资与并购事件?
跨多文档查询:在《三体3》中,有哪些人物在《三体1》中出现?
基于GraphRAG的特点,我们可以提炼出一些GraphRAG适合的应用场景
智能客服:将产品手册或说明文档映射到知识图谱中,解答消费者各式各样的售后问题,不需要提前准备QA对,也不需要提前对问题进行扩写,GraphRAG可以在精确理解用户意图的基础上进行查找。
智能检修:通常电气设备的产品说明短则几百页,长则数千页,即便是最资深的运维工程师也很难完全消化。因此,可以将设备的故障排除指南映射到知识图谱中,当设备出现故障时,方便工程师快速排查和解决问题。
智能问诊:在医学领域,病人的症状和病因之间存在着非常复杂的因果关系,同时医学领域对精准度的要求也非常高,因此非常适合GraphRag的使用,比如智能问诊
**药物合成:**在医药领域,存在非常多的分子化合物,每种分子化合物的特性都相差迥异,不同的分子还能结合成新的分子化合物,其中的排列组合不胜枚举。因此,可以将各种已经发现的分子化合物的结构、特征映射到知识图谱中,帮助生物学家更高效地发现有益的大分子结构。
报告总结:在金融领域,行业分析师每天都要阅读海量的市场信息或研究报告,过去都得完全依靠人工提炼和总结。而通过GraphRAG,构建智能投研、智能投顾等系统,帮助研究员快速提炼分析报告的核心内容
总结
**知识图谱是为了解决了数据间的孤岛问题,在复杂关系和复杂语义的场景下发挥了很大作用;同时,**GraphRAG虽然强大,但是相比传统RAG,其成本要高出不少。因此在以下常规场景下,我们还是尽量使用传统RAG