AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


重磅 - 微软官宣正式在GitHub开源GraphRAG
发布日期:2024-07-03 07:36:18 浏览次数: 2971


今年早些时候,微软推出了GraphRAG: 解锁大模型RAG知识增强,并预告开源  重磅-微软发表GraphRAG论文并即将开源项目这是一种基于知识图谱的检索增强生成方法(RAG),可以实现对私有或以前未见过的数据集进行问答。昨天晚上,微软正式宣布,GraphRAG 现已在GitHub

https://github.com/microsoft/graphrag )上提供, 比朴素的 RAG 方法提供了更多结构化信息检索和全面的响应生成。

GraphRAG 代码仓库配备了一个解决方案加速器

https://github.com/Azure-Samples/graphrag-accelerator/在 Azure 上托管,提供了一个易于使用的 API 体验,可以无需编码地在几次点击之内部署。

GraphRAG 使用一个大型语言模型(LLM)来自动从任何文本文档集合中提取丰富的知识图谱。这种基于图的数据索引最令人兴奋的特性之一是它能够在用户查询之前报告数据的语义结构。它通过以分层方式检测“社区”中密集连接的节点来实现这一点,从高级主题到低级主题在多个层次上对图进行分割,如图 1 所示。使用 LLM 总结每个这些社区,创建了数据的分层摘要,提供了一个数据集概览,无需事先知道要提出什么问题。每个社区都作为一个社区摘要的基础,描述其实体及其关系。

GraphRAG是一种结构化、分层的检索增强生成(RAG)方法,与使用纯文本片段的朴素语义搜索方法相对。GraphRAG流程涉及从原始文本中提取知识图谱,构建社区层次结构,为这些社区生成摘要,然后在执行基于RAG的任务时利用这些结构。

要了解有关GraphRAG及其如何用于增强您的LLMs推理您的私人数据方面的更多信息,请访问Microsoft Research博客帖子

 https://microsoft.github.io/graphrag/

Solution Accelerator ?

为了快速启动GraphRAG系统,我们建议尝试Solution Accelerator套餐。这为Azure资源提供了用户友好的端到端体验。

开始使用GraphRAG ?

开始使用 GraphRAG,请查看 “入门指南https://microsoft.github.io/graphrag/posts/get_started 。如果想更深入地了解主要子系统,请访问“索引器”和“查询”软件包的文档页面。

GraphRAG vs 基准RAG ?

检索增强生成(RAG)是一种利用真实世界信息来改善LLM输出的技术。这种技术是大多数基于LLM的工具的重要组成部分,大多数RAG方法使用向量相似性作为搜索技术,被称为基准RAG。GraphRAG使用知识图谱来显著改善在推理复杂信息时的问答性能。

RAG技术展示了在帮助LLM推理关于私有数据集的潜力 - 这些数据是LLM没有经过训练并且以前从未见过的数据,如企业的专有研究、商业文件或通信。基准RAG是为了帮助解决这个问题而创建的,但我们观察到基准RAG表现非常糟糕的情况。例如:

  • 基准RAG难以连接各种信息点。当回答问题需要通过它们共享的属性遍历不同的信息片段以提供新的综合见解时,会出现这种情况。

  • 当要求基准RAG全面理解大数据集或甚至单个大文档中总结的语义概念时,基准RAG表现不佳。为了解决这个问题,技术社区正在努力开发扩展和增强RAG的方法。

微软研究的新方法GraphRAG 使用LLM来基于输入语料库创建知识图。这个图与社区摘要和图机器学习输出一起在查询时用于增强提示。GraphRAG 在回答上述两类问题时显示出显着改善,展示了超越先前应用于私有数据集的其他方法的智能或掌握能力。

GraphRAG流程?

GraphRAG基于我们之前使用图机器学习进行的研究和工具化。GraphRAG进程的基本步骤如下:

1.索引

  • 将输入语料库切分为一系列TextUnits,这些TextUnits作为整个过程中可分析的单元,并在我们的输出中提供细粒度的引用。

  • 使用LLM从TextUnits中提取所有实体、关系和关键主张。

  • 使用Leiden技术对图进行分层聚类。要查看可视化结果,请参见下图。每个圆表示一个实体(例如,人、地点或组织),其大小表示实体的程度,颜色表示其社区。

  • 从底层向上生成每个社区及其成员的摘要。这有助于全面理解数据集。

2.查询

在查询时,这些结构用于为LLM上下文窗口提供材料,用于回答问题。主要查询模式包括:

  • 全局搜索,用于推理关于语料库的整体问题,利用社区摘要。



  • 本地搜索,用于推理关于特定实体的问题,展开到它们的邻居和相关概念。

3.提示词微调

直接使用GraphRAG可能不会产生最佳结果。我们强烈建议根据我们文档中的提示词微调指南对提示进行微调。


社区摘要对“全局问题”的优势

在最近的预印本

https://www.microsoft.com/en-us/research/publication/from-local-to-global-a-graph-rag-approach-to-query-focused-summarization/ 中,我们探讨了这些社区摘要如何帮助回答全局性问题,这些问题涉及整个数据集而不是专注于特定的文本块,天真的基于向量搜索的RAG方法存在局限性。例如,考虑问题“数据集中的主题是什么?”这是一个合理的起点,但Naive RAG总是会给出误导性的答案。这是因为它生成的答案来自语义上类似于问题的文本块,而不一定来自需要回答问题的输入文本子集。然而,如果一个问题涉及整个数据集,应该考虑所有的输入文本。

由于朴素RAG只考虑前k个最相似的输入文本块,它会失败。更糟糕的是,它将问题与表面上与该问题相似的文本块进行匹配,导致误导性的答案。社区摘要有助于回答这样的全局性问题,因为实体和关系描述的图索引在构建过程中已经考虑了所有的输入文本。因此,我们可以使用一种保留全局数据上下文中所有相关内容的问题回答的映射-减少方法:

- 将社区报告分组到LLM上下文窗口大小。

- 将问题映射到每个组,生成社区答案。

- 将所有相关的社区答案减少到一个最终的全局答案。

评估与结果

对于这种方法与朴素RAG 和分层源文本摘要进行比较,我们使用 LLM GPT-4 从两个数据集的简短描述中生成了一组多样化的以活动为中心的理解问题:播客转录和新闻文章。然后我们选择了三个指标来逐个比较生成的答案,由LLM评委评估:全面性(详细涵盖所有方面),多样性(提供不同视角)和赋权性(支持知情决策)。

结果显示,GraphRAG 在使用社区层次结构中的任何层次的社区摘要时,在全面性和多样性方面均优于朴素的 RAG(获胜率为约70-80%)。使用中级和低级社区摘要的 GraphRAG 在这些指标上的表现也优于源文本摘要,且在较低的标记成本下(每次查询使用的标记数为20-70%)效果更好。在较低的标记成本下(每次查询使用的标记数为2-3%),性能与层次结构源文本摘要针对最高层社区的性能相竞争。图2中显示了这一点。

研究见解和未来方向

首次研究周期表明,LLM 可成功地从非结构化文本输入中推导出丰富的知识图,并且这些图可以支持一类新的全局查询,对于这类查询,(a) 幼稚的 RAG 无法生成适当的回应,(b) 分层源文本摘要在每个查询中的成本过高。然而,GraphRAG 对于任何特定用例的整体适用性取决于结构化知识表示、现成的社区摘要的好处是否超过了图索引构建的前期成本。

我们目前正在探索各种方法来降低这些成本,同时保持响应质量。我们最新的工作是针对问题领域自动调整 LLM 提取提示的示例,展示了我们如何减少定制这些提示、列举实体类型、创建少量示例等所需的前期工作。为了在最小的前期索引成本下评估 GraphRAG,我们还正在研究基于自然语言处理的方法,以近似模拟由完整索引过程生成的知识图和社区摘要。我们的目标是确保,无论部署背景的约束如何,都有一个可以适应这些约束的 GraphRAG 配置,同时仍然提供卓越的响应质量。

通过使 GraphRAG 和解决方案加速器公开可用,我们旨在使基于图的 RAG 方法对于需要以全局水平理解数据的用户和用例更加易于访问。在共同努力推动下一代 RAG 体验的过程中,我们鼓励社区对代码存储库和解决方案加速器提出反馈和建议。

GraphRAG:负责任人工智能常见问题解答

什么是GraphRAG?

GraphRAG 是一种基于人工智能的内容解释和搜索能力。利用LLMs,它解析数据以创建知识图谱,并回答用户关于用户提供的私有数据集的问题。

GraphRAG 能做什么?

GraphRAG 能够跨越大量信息连接信息,并利用这些连接回答使用关键字和基于向量的搜索机制难以或无法回答的问题。在前一个问题的基础上,提供关于该系统如何为各种用途提供功能的半技术、高层信息。这使得使用GraphRAG的系统能够回答那些答案涉及多个文档的问题,以及主题性问题,例如“这个数据集中的顶级主题是什么?”

GraphRAG 的预期用途有哪些?

GraphRAG 旨在支持关键信息发现和分析用例,其中获取有用见解所需的信息跨越多个文档、混杂有噪音、错误和/或虚假信息,或者用户尝试回答的问题比底层数据更抽象或主题化。

GraphRAG 的设计用于在已经接受负责任分析方法培训并且期望批判性推理的用户环境中使用。GraphRAG 能够在复杂信息主题上提供高程度的见解,但是需要领域专家对答案进行人工分析,以验证和增强GraphRAG生成的响应。

GraphRAG 旨在部署并与特定领域的文本数据语料库一起使用。GraphRAG 本身不会收集用户数据,但鼓励用户验证用于配置GraphRAG的所选LLM的数据隐私政策。

GraphRAG 是如何评估的?采用了哪些指标来衡量性能?

GraphRAG 已以多种方式进行评估。主要关注点包括:1)数据集的准确表示,2)提供响应的透明度和扎实基础,3)对提示和数据语料库注入攻击的抗性,4)低幻觉率。下面按数字概述了对每个方面的评估方式。

  1. 数据集的准确表示经过手动检查和针对从测试语料库的随机选择子集创建的“金标准答案”的自动测试来测试。

  2. 透明度和响应的扎实基础通过自动化答案覆盖评估和对返回的基础上下文的人工检查来测试。

  3. 我们使用手动和半自动技术测试用户提示注入攻击(“越狱”)和跨提示注入攻击(“数据攻击”)。

  4. 通过索赔覆盖度指标、答案和来源的手动检查,以及对试图通过恶意和异常具有挑战性的数据集进行强制妄想的对抗性攻击来评估幻觉率。


GraphRAG 的局限性是什么?用户如何在使用系统时最小化GraphRAG的局限性的影响?

GraphRAG依赖于良好构建的索引示例。对于一般应用(例如围绕人员、地点、组织、事物等内容的内容),我们提供示例索引提示。对于独特的数据集,有效的索引取决于对领域特定概念的正确识别。索引是一个相对昂贵的操作;缓解索引的最佳实践是在目标领域创建一个小型测试数据集,以确保索引器在进行大规模索引操作之前的性能。

哪些运营因素和设置能够实现有效和负责任的GraphRAG使用?

GraphRAG旨在供具有领域复杂性和经验以解决困难信息挑战的用户使用。尽管该方法通常对注入攻击和识别信息冲突来源具有较强的鲁棒性,但该系统是为可信用户设计的。对响应的适当人类分析对于生成可靠的见解至关重要,并且必须追踪信息的来源以确保人类与所作推断的一致性。

GraphRAG在以整体主题或主题为中心的自然语言文本数据上产生最有效的结果,并且这些数据内容丰富—实体可以是人员、地点、事物或可唯一标识的对象。

尽管GraphRAG已经经过评估,确定其对提示和数据语料库注入攻击的弹性,并已经针对特定类型的危害进行了探讨,但用户配置GraphRAG的LLM可能会生成不当或冒犯性内容,这可能使其不适合在敏感环境中部署,除非使用适合其用例和模型的额外减缓措施。开发人员应该对其上下文的输出进行评估,并使用可用的安全分类器、模型特定的安全过滤器和功能(https://azure.microsoft.com/en-us/products/ai-services/ai-content-safety )或针对其用例的定制解决方案进行评估。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询