今年早些时候,微软推出了[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 总结每个这些社区,创建了数据的分层摘要,提供了一个数据集概览,无需事先知道要提出什么问题。每个社区都作为一个社区摘要的基础,描述其实体及其关系。
图1. 从新闻数据集 https://github.com/yixuantt/MultiHop-RAG/ 中派生的实体节点和关系边的知识图谱,不同颜色代表不同的社区。级别0社区(左侧)代表数据集的最高级主题,而级别1社区(右侧)显示这些主题内更精细主题的出现。
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中显示了这一点。
图2。对一个关于新闻数据集 https://github.com/yixuantt/MultiHop-RAG/ 的全局问题的Naive RAG和GraphRAG的比较表明,在全面性、多样性和赋权方面,GraphRAG优于Naive RAG。
研究见解和未来方向
首次研究周期表明,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)低幻觉率。下面按数字概述了对每个方面的评估方式。
-
数据集的准确表示经过手动检查和针对从测试语料库的随机选择子集创建的“金标准答案”的自动测试来测试。
-
透明度和响应的扎实基础通过自动化答案覆盖评估和对返回的基础上下文的人工检查来测试。
-
我们使用手动和半自动技术测试用户提示注入攻击(“越狱”)和跨提示注入攻击(“数据攻击”)。
-
通过索赔覆盖度指标、答案和来源的手动检查,以及对试图通过恶意和异常具有挑战性的数据集进行强制妄想的对抗性攻击来评估幻觉率。
GraphRAG 的局限性是什么?用户如何在使用系统时最小化GraphRAG的局限性的影响?
GraphRAG依赖于良好构建的索引示例。对于一般应用(例如围绕人员、地点、组织、事物等内容的内容),我们提供示例索引提示。对于独特的数据集,有效的索引取决于对领域特定概念的正确识别。索引是一个相对昂贵的操作;缓解索引的最佳实践是在目标领域创建一个小型测试数据集,以确保索引器在进行大规模索引操作之前的性能。
哪些运营因素和设置能够实现有效和负责任的GraphRAG使用?
GraphRAG旨在供具有领域复杂性和经验以解决困难信息挑战的用户使用。尽管该方法通常对注入攻击和识别信息冲突来源具有较强的鲁棒性,但该系统是为可信用户设计的。对响应的适当人类分析对于生成可靠的见解至关重要,并且必须追踪信息的来源以确保人类与所作推断的一致性。
GraphRAG在以整体主题或主题为中心的自然语言文本数据上产生最有效的结果,并且这些数据内容丰富—实体可以是人员、地点、事物或可唯一标识的对象。
尽管GraphRAG已经经过评估,确定其对提示和数据语料库注入攻击的弹性,并已经针对特定类型的危害进行了探讨,但用户配置GraphRAG的LLM可能会生成不当或冒犯性内容,这可能使其不适合在敏感环境中部署,除非使用适合其用例和模型的额外减缓措施。开发人员应该对其上下文的输出进行评估,并使用可用的安全分类器、模型特定的安全过滤器和功能(https://azure.microsoft.com/en-us/products/ai-services/ai-content-safety )或针对其用例的定制解决方案进行评估。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。