首页 > 科技周边 > 人工智能 > 从理论到实施的GraphRag -Analytics Vidhya

从理论到实施的GraphRag -Analytics Vidhya

Christopher Nolan
发布: 2025-03-17 11:17:09
原创
714 人浏览过

GraphRag采用了一种更具结构化和分层的方法来检索增强生成(RAG),将自己与依赖于无组织文本摘要的基本语义搜索的传统抹布方法区分开来。该过程首先将原始文本转换为知识图,将数据组织为社区结构,并总结这些分组。这种结构化的方法使GraphRag能够利用这些有组织的信息,增强其在基于抹布的任务中的有效性,并提供更精确和更加感知的结果。

学习目标

  • 了解什么是GraphRag,并探讨GraphRag的重要性及其在传统的幼稚抹布模型上如何改进。
  • 对Microsoft的GraphRag,尤其是其知识图,社区检测和层次结构的应用更深入了解。了解该系统内的全球和本地搜索功能如何运作。
  • 参加Microsoft的GraphRag库的实施Python实施,以实际了解其工作流程和集成。
  • 比较和对比GraphRag和传统的抹布方法产生的输出,以突出改进和差异。
  • 确定GraphRag面临的关键挑战,包括大规模应用程序中的资源密集过程和优化需求。

本文作为数据科学博客马拉松的一部分发表

目录

  • 学习目标
  • 什么是GraphRag?
  • 为什么要在传统/幼稚的抹布上绘画?
  • GraphRag解决的抹布的局限性
  • 微软的GraphRag如何工作?
    • 索引阶段
    • 查询阶段
  • Microsoft的GraphRag实现Python
    • 步骤1:创建Python虚拟环境和库的安装
    • 步骤2:生成设置.yaml文件
    • 步骤3:运行索引管道
    • 步骤4:运行查询
    • 本地搜索
  • GraphRag的挑战
  • 结论
    • 关键要点
  • 常见问题

什么是GraphRag?

检索授权的生成(RAG)是一种新颖的方法,它将预训练的大语言模型(LLM)与外部数据源相结合,以创建更精确且上下文上更丰富的输出。最先进的LLMS的协同作用与上下文数据的协同作用,使RAG能够提供良好的响应,不仅可以很好地划分,而且在事实和统治性知识中也构成了扎根。

GraphRag(基于图的检索增强生成)是一种标准或传统抹布的高级方法,它通过利用知识图来改善信息检索和响应生成来增强它。与标准抹布(依赖简单的语义搜索和纯文本片段)不同,GraphRag以结构化的层次结构格式组织和处理信息。

为什么要在传统/幼稚的抹布上绘画?

与散布在不同来源的信息的斗争。传统的检索生成一代(RAG)在散布在多个来源的综合信息方面面临挑战。它努力识别和结合通过微妙或间接关系联系起来的见解,从而使其对需要相互联系的推理的问题的有效性降低。

缺乏捕获更广泛的背景。传统的抹布方法通常在捕获更广泛的上下文或汇总复杂数据集方面缺乏。这种限制源于缺乏提取总体主题或准确提取复杂文档的关键点所需的更深入的语义理解。当我们执行诸如“数据集中的主要主题是什么?”之类的查询时,除非数据集明确定义这些主题,否则传统抹布很难识别相关的文本块。从本质上讲,这是一项以查询为重点的摘要任务,而不是传统抹布斗争的明确检索任务。

GraphRag解决的抹布的局限性

现在,我们将研究Graprag解决的抹布的局限性:

  • 通过利用实体之间的互连,GraphRag优化了其以更高的精度查明和检索相关数据的能力。
  • 通过使用知识图,GraphRag提供了对查询的更详细,更细微的理解,可帮助更准确的响应生成。
  • 通过将其在结构化的事实数据中扎根,GraphRag显着减少了产生错误或捏造信息的机会。

微软的GraphRag如何工作?

GraphRag通过合并两阶段的操作设计:索引阶段和查询阶段,扩展了传统检索演出生成(RAG)的功能。在索引阶段,它构建了知识图,分层组织提取的信息。在查询阶段,它利用该结构化表示形式来对用户查询提供高度上下文和精确的响应。

索引阶段

索引阶段包括以下步骤:

  • 将输入文本分为较小的,易于管理的块。
  • 从每个块中提取实体和关系。
  • 将实体和关系总结为结构化格式。
  • 用节点作为实体和边缘作为关系构建知识图。
  • 使用算法确定知识图中的社区。
  • 总结较小社区内的个人实体和关系。
  • 为汇总社区层次创建更高级别的摘要。

查询阶段

配备了知识图和详细的社区摘要,GraphRag然后可以以良好的精度来响应用户查询,以利用查询阶段中存在的不同步骤。

全球搜索 - 需要对数据集进行广泛分析的查询,例如“讨论的主要主题是什么?”,GraphRag利用了编译的社区摘要。这种方法使系统能够整合整个数据集的见解,从而提供透彻且全面的答案。

本地搜索 - 针对特定实体的查询,GraphRag利用了知识图的互连结构。通过浏览实体的直接联系并检查相关的主张,它收集了相关的细节,从而使系统能够提供准确和上下文敏感的响应。

Microsoft的GraphRag实现Python

现在让我们在下面的详细步骤中研究Microsoft的GraphRag的Python实现:

步骤1:创建Python虚拟环境和库的安装

制作一个文件夹,并在其中创建Python虚拟环境。我们创建文件夹GraphRag,如下所示。然后,在创建的文件夹中,我们使用命令 - “ PIP INSTALS GRAPHRAG”安装GraphRag库。

 PIP安装GraphRag
登录后复制

步骤2:生成设置.yaml文件

在GraphRag文件夹中,我们创建一个输入文件夹,然后将一些文本文件放入文件夹中。我们已经使用了此TXT文件并将其保存在输入文件夹中。本文的文字已从该新闻网站获取。

从包含输入文件夹的文件夹中,运行以下命令:

 python -m graphrag.index -init -root
登录后复制

此命令导致创建.ENV文件和设置.yaml文件。

从理论到实施的GraphRag -Analytics Vidhya

在.envfile中,输入您的OpenAI键,将其分配给graphRag_api_key。然后,在“ llm”字段下的settings.yaml文件使用。其他参数(例如模型名称,max_tokens,块大小)可以在settings.yaml文件中定义。我们已经使用了“ GPT-4O”模型,并在settings.yaml文件中定义了它。

从理论到实施的GraphRag -Analytics Vidhya

步骤3:运行索引管道

我们使用以下命令从“ GraphRag”文件夹的内部运行索引管道。

 Python -M graphRag.index -Root。
登录后复制

一旦我们执行上述命令,在上一节中定义的所有步骤都会在后端进行。

提示文件夹

为了执行索引阶段的所有步骤,例如实体和关系检测,知识图创建,社区检测以及不同社区的摘要生成,系统使用“提示”文件夹中定义的提示进行了多个LLM调用。运行索引命令时,系统会自动生成此文件夹。

从理论到实施的GraphRag -Analytics Vidhya

适应提示与文档的特定域保持一致,这对于改善结果至关重要。例如,在entity_extraction.txt文件中,您可以保留文本语料库所在域相关实体的示例,以从抹布中获得更准确的结果。

存储在lancedb中的嵌入

此外,LancedB用于存储每个文本块的嵌入式数据。

图形数据的镶木文件

该输出文件夹存储了与图形和相关数据相对应的许多镶木式文件,如下图所示。

从理论到实施的GraphRag -Analytics Vidhya

步骤4:运行查询

为了运行像“文档的顶部主题”之类的全局查询,我们可以从GraphRag文件夹中的终端运行以下命令。

全局搜索

Python -M GraphRag.Query -Root。 - 使用“全球”“文档中的首要主题是什么?”
登录后复制

全球查询使用生成的社区摘要来回答这个问题。中间答案用于生成最终答案。

我们的TXT文件的输出将如下:

从理论到实施的GraphRag -Analytics Vidhya

与幼稚抹布的产出的比较:

幼稚抹布的代码可以在我的github中找到。

 1。SAP和Microsoft 365应用程序的集成
2。无缝用户体验的潜力
3。SAP和Microsoft之间的合作
4。最大化生产率的目标
5。Microsoft Ignite的预览
6。限量预览公告
7。注册有限预览的机会。
登录后复制

本地搜索

为了运行与我们的文档相关的本地查询,例如“什么是Microsoft和SAP合作朝着努力?”,我们可以从GraphRag文件夹中的终端运行以下命令。下面的命令专门将查询指定为本地查询,以确保执行更深入地研究知识图,而不是依靠全局查询中使用的社区摘要。

 Python -M GraphRag.Query -Root。 - 使用本地的“ SAP和Microsoft是什么合作努力的?
登录后复制

GraphRag的输出

从理论到实施的GraphRag -Analytics Vidhya

与幼稚抹布的产出的比较

幼稚抹布的代码可以在我的github中找到。

 Microsoft和SAP正在致力于无缝集成其AI副驾驶Joule和Microsoft 365 Copilot,以重新定义工作场所的生产力,并允许用户在不转换应用程序之间从两个系统中执行任务和访问数据。
登录后复制

从全球和局部产出中观察到的那样,与幼稚抹布的响应相比,GraphRag的响应更加全面和解释。

GraphRag的挑战

GraphRag斗争存在某些挑战,以下列出:

  • 多个LLM调用:由于该过程中的多个LLM调用,GraphRag可能是昂贵且缓慢的。因此,成本优化对于确保可伸缩性至关重要。
  • 高资源消耗:构建和查询知识图涉及大量的计算资源,尤其是在扩展大型数据集时。使用许多节点和边缘处理大图需要仔细的优化,以避免性能瓶颈。
  • 语义聚类中的复杂性:使用莱顿(Leiden)这样的算法识别有意义的簇可能具有挑战性,尤其是对于具有松散连接实体的数据集。误识别的集群可能导致分散或过于广泛的社区摘要
  • 处理各种数据格式: GraphRag依赖于结构化输入来提取有意义的关系。非结构化,不一致或嘈杂的数据可能会使提取和图形构建过程复杂化

结论

GraphRag通过解决其在推理,上下文理解和可靠性方面的局限性,证明了对传统抹布的显着进步。通过利用知识图和结构化实体关系,它可以综合跨数据集的分散信息,从而实现更深入的语义理解,从而擅长于跨数据集。

Microsoft的GraphRag通过结合两相方法来增强传统抹布:索引和查询。索引阶段从提取的实体和关系中构建了层次知识图,将数据组织到结构化摘要中。在查询阶段,GraphRag利用此结构进行精确和上下文富含的响应,可满足全局数据集分析和基于特定实体的查询。

但是,GraphRag的好处带来了挑战,包括高资源需求,对结构化数据的依赖以及语义聚类的复杂性。尽管有这些障碍,但它提供准确的整体响应的能力将其确立为可处理复杂查询的天真抹布系统的有力替代方法。

关键要点

  • GraphRag通过将原始文本组织成层次知识图来增强抹布,从而实现精确和上下文感知的响应。
  • 它采用社区摘要来进行广泛的分析和图形连接,以进行特定的深入查询。
  • GraphRag通过利用实体互连和结构化数据来克服上下文理解和推理的限制。
  • Microsoft的GraphRag库支持使用知识图创建和查询工具的实用应用程序。
  • 尽管它具有精确性,但GraphRag仍面临障碍,例如资源强度,语义聚类复杂性和处理非结构化数据。
  • 通过基于结构化知识的响应,GraphRag降低了传统抹布系统中常见的不准确性。
  • 非常适合需要相互联系推理的复杂查询,例如主题分析或特定于实体的见解。

常见问题

Q1。为什么GraphRag比传统的抹布更喜欢复杂的查询?

A. GraphRag通过利用实体之间的互连而脱颖而出的综合见解,这与传统的抹布不同,这与传统的抹布相同,这在识别微妙的关系方面挣扎。

Q2。 GraphRag如何在索引阶段创建知识图?

答:它处理文本块以提取实体和关系,使用莱顿等算法进行层次组织,并构建一个知识图,其中节点表示实体和边缘表示关系。

Q3。 GraphRag查询阶段中的两个关键搜索方法是什么?

全球搜索:使用社区摘要进行广泛分析,回答诸如“讨论的主要主题是什么?”之类的查询。
本地搜索:通过在知识图中探索其直接连接来关注特定实体。

Q4。 GraphRag面临什么挑战?

A. GraphRag遇到由于多个LLM调用,语义聚类困难以及处理非结构化或嘈杂数据而引起的高计算成本等问题。

Q5。 GraphRag如何增强响应生成中的上下文理解?

答:通过将其在层次知识图和基于社区的摘要中的响应扎根,GraphRag提供了更深入的语义理解和上下文丰富的答案。

本文所示的媒体不由Analytics Vidhya拥有,并由作者酌情使用。

以上是从理论到实施的GraphRag -Analytics Vidhya的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板