从RAG到GraphRAG:知识图谱如何提升大模型的检索与推理能力?
©作者|Zane
来源|神州问学
为什么需要知识图谱
在20世纪60年代末,数据库技术开始发展,在70年代数据库技术得到了迅猛的发展,成为了计算机科学的一个重要分支。在80年代时关系型数据模型就处于统治地位,而随着关系型数据库使用范围的不断扩大,也暴露出一些他始终无法解决的问题,其中最主要的是数据建模的一些缺陷和问题,以及在补数据量和多服务器上的如何进行伸缩。同时随着互联网的发展也产生了一些新的变化,而传统的关系型数据库就表现的不是很适应,而为了解决这些传统关系型数据库产生的新型数据库被称为NoSQL数据库。
NoSQL(Not Only SQl),是一类范围非常广发的数据库,他们不遵循关系型数据模型,也不使用SQL作为语言查询,而本次我们将主要关注NoSQL中的图数据库。而作为NoSQL的一种,可以看到在db-engines.com网站中图数据库从2013年开始图数据库的关注度就一直居高不下。
知识图谱这个术语最早是由谷歌在2021年的5月提出,作为器增强搜索的结果,向用户提供更多的上下文信息,知识图谱旨在理解实体之间的关系,并直接提供查询的答案。知识图谱是一种结构化的知识表示方式,它通过实体、关系和属性来描述复杂的知识网络。在知识图谱中,实体代表现实世界中的对象或概念,关系表示实体之间的联系,而属性则描述实体的特征。这种表示方法不仅能够直观地展示知识之间的关联,还能支持高效的知识检索和推理。
结合知识图谱进行RAG
在当前背景下,我们所说的知识图谱往往指的就是图数据库,比如Neo4J,NebulaGraph这种,所以结合知识图谱进行RAG我们也可以理解为结合图数据库进行RAG,而最早提出基于图数据进行RAG的就是NebulaGraph,而结合知识图谱进行RAG的方法也别称为Graph RAG。
在NebulaGraph的文章中,将这种方法称为Text2Cypher,和Text2SQL类似的,是借助LLM生成对应的Cypher语句。在传统的文本查询领域,当一个问题语句发送之后,首先需要意图识别,实体识别,然后再利用LLM模型或者代码将相应的意图和实体构造成查询语句,在结合图数据库中,依然是使用这种方式,只不过是将查询语句变成了Cypher语句或者其他NoSQL语句。
与RAG相比,GraphRAG的提示词不仅包含了查询信息和根据查询信息检索到的相关上下文信息,而且还集成了从领域知识库图谱库中检所到的与查询信息相关的知识图谱信息,在广度深度上更加丰富。因此,GraphRAG不仅进一步的提升了LLM生成答案的准确性和可靠性,突出了是通过知识图谱提高了模型的检索能力提升了LLM处理复杂信息的能力。
在微软今年的实验中,使用新闻文章中的暴力事件信息 (VIINA)数据集,这个数据集中复杂性更高,并且存在不同的意见和部分信息,并且这个数据集中的信息是一个真实测试的案例并且是近期发生的事情,没有被纳入到LLM的预训练中。
在这个实验中,分别基于RAG和GraphRAG进行提问
Query1:“What is Novorossiya?”
Query2: “What has Novorossiya done?”
在问题1中,不论是RAG还是GraphRAG都表现良好,而在问题2中提问的问题包含了一个需要关联的查询,基础的RAG则无法回答,而GraphRAG则从Novorossiya中发现了一个实体,并通过指向原文的链接得到更加优质的答案。
除此之外基础的RAG因为是基于相似度进行查询的,所以很难处理需要汇总整个数据集的信息才能得到的答案,比如“数据中的前五个主题是什么”这种类似的查询,因为基础的RAG基于数据集内的文本内容的向量搜索,所以最终往往很难查询到正确的信息,,但是借助GraphRAG则可以回答这类问题,如在这次的实验中。
Query: “What are the top 5 themes in the data?“
在基础的RAG中发现列举的主题和实际的情况没有太大关系,而GraphRAG的结果中则可以看到5个主要的主题和支持的细节。
知识图谱RAG方案对比
在现在流行的llama-index框架和Langchain框架中,实现知识图谱的检索是通过Text2Cypher的方式。也就是首先通过LLM根据用户提出的问题生成一个Cypher语句,然后再Neo4J数据库或者其他图形数据库中执行这个Cypher语句,最终LLm根据Cypher语句执行的结果进行总结返回。
在微软的GraphRAG框架中则没有使用第三方的图数据库,而是建立在开源的库DataShaper之上,DataShaper是一个数据处理库,允许用户使用明确定义的框架以声明方式表达数据管道、架构和相关资产。
而GrapRAG框架的整体流程则可以划分为一下五个步骤
-
编写TextUnit:将输入的文档转换为TextUnits,TextUnit用于提取文本块到图中。
-
图提取:这个阶段则分析每个文本单元提取图基础信息:实体、关系和生命,并将结果组合传递到后续阶段
-
图增强:在上个阶段获取到的实体和关系图,将在这个阶段扩充,通过社区检测、图嵌入等手段理解图的拓扑记过
-
总结:在这个阶段将基于社区数据生成报告以及总结
-
文件处理:这个阶段为知识模型创建文档表
-
网络可视化:在这个阶段执行一些步骤支持现有图标中的高维向量空间大额网络可视化,此时有两个逻辑图表起作用:实体关系图和文档图
未来的机遇与挑战
GraphRAG未来的发展充满机遇,特别是在需要高准确性和复杂推理的领域中。通过结合知识图谱,GraphRAG能提升生成模型的知识理解、推理能力和信息检索的准确性,尤其在医疗、金融、法律等专业领域提供定制化解决方案。此外,知识图谱的结构化特性使信息更新更快捷,适应快节奏的领域发展。然而,GraphRAG也面临知识图谱构建与维护的复杂性、多模态整合的技术难题、实时性能优化、图谱覆盖范围限制以及隐私和安全等挑战。
资料引用
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
https://zhuanlan.zhihu.com/p/657195992