1.什么时GraphRAG
检索增强生成(RAG)是一种通过结合真实世界的信息来提升大模型语言模型(LLM)输出质量的技术。RAG技术是大多数基于LLM的工具中的一个重要的组成部分。大多数RAG方法使用向量相似性作为检索技术,我么将其称为基于基线RAG(Baseline RAG)。
GraphRAG则使用知识图谱来在推理复杂信息时显著提升问答性能。当需要对复杂数据进行推理时,GraphRAG展示出了由于基线RAG的性能,特别是在知识图谱的帮助下。
RAG技术在帮助LLM推理私有数据集方面显示了很大的潜力,比如,LLM在训练时接触不到企业内部的专有知识、业务文档和专业数据。基线RAG技术虽然最初是为了解决这个问题提出的,但是在某些情况下,基线RAG表现不是很理想。以下为几个典型的场景:
1.基线RAG很难将信息串联起来:当一个问题的答案需要通过多个不同的信息片段,并通过他们共享的属性来连接,进而提供新的见解时,基线RAG表现会很差。
2.基线RAG无法有效的理解大型数据集或者单一大文档的整体语义和概念:当被要求在大量数据或者复杂文档中进行总结、提炼和理解时,基线RAG往往会表现不佳。比如,如果问题要求对整个文档或者多篇文档的主题进行总结和理解,基线RAG的简单向量检索方法可能无法处理文档之间的复杂关系,导致对全局语义的理解不完整。
为了应对这些挑战,微软研究院提出的GraphRAG方法,使用LLM基于输入预料库构建知识图谱。这个图谱与社区总结和图谱机器学习输出结合,能够在查询时增强提示(prompt)。GraphRAG在回答以上两类问题时,展现了显著的改进,尤其是在复杂信息的推理能力和智能性上,超越了基线RAG应用于私有数据集的方法。
2.GraphRAG核心特点
(1)更好的连接信息点:GraphRAG能够处理那些需要从多个数据点合成新见解的任务。
(2)更好的理解能力:GraphRAG更擅长对大型数据集进行全面理解,能够更好的处理复杂的抽象问题。
借助GraphRAG,我们可以快速做到以下事项:
(1)基于图的检索:传统的RAG方法使用向量相似性进行检索,而GraphRAG引入知识图谱来捕捉实体、关系及其他重要元数据,从而更有效的进行推理。
(2)层次聚类:GraphRAG使用Leiden技术进行层次聚类,将实体及其关系进行组织,提供更丰富的上下文信息来处理复杂的查询。
(3)多模式查询:支持多种查询模式:
全局搜索:通过利用社区总结来进行全局性推理。
局部搜索:通过扩展相关实体的邻居和关联概念来进行具体实体的推理。
DRIFT搜索:结合局部搜索和社区信息,提供更为准确和相关的答案,是局部搜索的增强引入了社区信息的上下文,从而提供更深入的推理和连接。
(4)图机器学习:集成了图机器学习技术,提升查询响应质量,并提供来自结构化和非结构化的深度洞察。
(5)prompt调优:提供调优工具,帮助根据特定数据和需求调整查询提示,从而提高结果质量。
3.GraphRAG运行流程
(1)索引indexing过程
a.文本单元切分:将输入文本分割成TextUnits,每个TextUnits是一个可分析的单元,用于提取关键信息。
b.实体和关系提取:使用LLM从TextUnits中提取实体、关系和关键声明。
c.图构建:构建知识图谱,使用Leiden算法进行实体的层次聚类。每个实体用节点表示,节点的大小和颜色分别代表实体的度数和所属社区。
d.社区总结:从下到上生成每个社区及其成员的总结,帮助全局理解数据集。
e.这个索引过程中会大量的消耗token,对资源要求比较高。
(2)查询(Query)过程
检索完成后,用户可以通过不同的搜索模式进行查询:全局搜索、局部搜索、DRIFT搜索
(3)Prompt调优
为了获得最佳性能,GraphRAG强烈建议进行Prompt调优,确保模型可以根据你的特定数据和查询需求进行优化,从而提供更准确和相关的答案。