GraphRAG

什么是RAG?

RAG 是一种自然语言查询方法,用于通过外部知识增强现有的LLM,因此如果问题需要特定知识,问题的答案会更相关。它包括一个检索信息组件,用于从外部源获取附加信息,也称为“基础上下文”,然后将其馈送到 LLM 提示以更准确地回答所需的问题。

这种方法是最便宜和最标准的方法,可以通过额外的知识来增强 LLM 以回答问题。此外,它被证明可以减少 LLM 产生幻觉的倾向,因为这一代人更坚持来自上下文的信息,而这些信息通常是可靠的。由于该方法的这种性质,RAG 成为增强生成模型输出的最流行的方法。

除了问答之外,RAG 还可以用于许多自然语言处理任务,例如从文本中提取信息、推荐、情感分析和摘要等。

但RAG在解决问题的时候,也会有表现非常差的情况:

  • 基本 RAG 很难将关键点联系起来。当回答问题需要通过共享属性遍历不同的信息以提供新的综合见解时,就会发生这种情况。
  • 要求基本 RAG 全面理解大型数据集合甚至单个大型文档的概括语义概念时,基础 RAG 表现不佳。

GraphRAG

7月3日,微软在官网开源了基于图的RAG(检索增强生成)——GraphRAG。

为了增强大模型的搜索、问答、摘要、推理等能力,RAG已经成为GPT-4、Qwen-2、文心一言、讯飞星火、Gemini等国内外知名大模型标配功能。

传统的RAG系统在处理外部数据源时,只是简单地将文档转换为文本,将其分割为片段,然后嵌入到向量空间中,使得相似的语义对应相近的位置。

但这种方法在处理需要全局理解的海量数据查询时存在局限,因为它过度依赖局部文本片段的检索,无法捕捉到整个数据集的全貌

所以,微软在RAG基础之上通过“Graph”图的方式,例如,文本中的实体,人物、地点、概念等,构建了超大的知识图谱,帮助大模型更好地捕捉文本中的复杂联系和交互,来增强其生成、检索等能力。

GraphRAG架构简单介绍

GraphRAG的核心是通过两阶段构建基于图谱的文本索引:首先,从源文档中衍生出实体知识图谱;然后,针对所有紧密相关的实体群组预生成社区摘要。

所以,Graph RAG的第一步就是将源文档分割成较小的文本块,这些文本块随后被输入到大模型中以提取关键信息。

在这个过程中,大模型不仅要识别文本中的实体,还要识别实体之间的关系,包括它们之间的相互作用和联系,用来构建一个庞大的实体知识图谱,其中包含了数据集中所有重要实体和它们之间的关系。

接着,Graph RAG使用社区检测算法来识别图谱中的模块化社区。这些社区由相关的节点组成,它们之间的联系比与图中其他部分的联系更为紧密。通过这种方式,整个图谱被划分为更小、更易于管理的单元,每个单元都代表了数据集中的一个特定主题或概念

在基于图的索引之上,Graph RAG进一步生成社区摘要。这些摘要是对社区内所有实体和关系的总结,它们提供了对数据集中特定部分的高层次理解。

然后要求大模型对每个答案进行打分,分数在0—100之间,得分过低的将被过滤掉,高分则留下。将剩余的中间答案按照得分高低排序,逐步添加至新的上下文窗口中,直至词数限制。

例如,当用户提问“如何进行有效减肥时?”,系统会利用与问题相关的社区摘要来生成部分答案。这些部分答案随后被汇总并精炼,以形成最终答案。

GraphRAG对大模型的好处

与传统RAG相比,Graph RAG的全局检索能力非常强,所以很擅长处理大规模数据集,以下是对大模型的主要帮助。

扩展上下文理解能力:通常大模型受限于其上下文窗口的大小,这限制了它们理解和生成基于长文本的能力。Graph RAG通过构建基于图的索引,将整个文本集合分解成更小、更易于管理的社区模块,从而扩展了模型的理解和生成能力。

增强全局查询:传统的RAG方法在处理全局数据的查询时表现不佳,因为依赖于局部文本片段的检索。GraphRAG通过生成社区摘要,使得模型能够从整个数据集中提取相关信息,生成更加全面和准确的答案。

提高摘要的质量和多样性:Graph RAG方法通过并行生成社区摘要,然后汇总这些摘要来生成最终答案,能帮助大模型从不同的角度和社区中提取信息,从而生成更丰富的摘要。

优化算力、资源利用率:在处理大规模文本数据集时,资源的有效利用至关重要。Graph RAG通过模块化处理,减少了对算力资源的需求。与传统的全文摘要方法相比,GraphRAG在生成高质量摘要的同时,显著降低了对token的需求。

提升信息检索和生成的协同:Graph RAG方法通过结合检索增强和生成任务,实现了两者之间的协同工作,提高了生成内容的准确性和相关性。

增强了对数据集结构的理解:通过构建知识图谱和社区结构,Graph RAG不仅帮助模型理解文本内容,还能理解数据集的内在结构。

提高对复杂问题的处理能力:在处理需要多步骤推理或多文档信息整合的复杂问题时,Graph RAG能够通过检索和摘要不同社区的信息,提升对问题更深层次的理解。尤其是在解读PDF、Word等文档时非常有用。

为了评估Graph RAG的性能,微软在一个100万tokens、超复杂结构的数据集上,包含娱乐、播客、商业、体育、技术、医疗等内容,进行了综合测试。

结果显示,全局检索方法在全面性和多样性测试上,超越了Naive RAG等方法。特别是,Graph RAG方法在播客转录和新闻文章数据集上都显示出了超高的水准,多样性也非常全面,是目前最佳的RAG方法之一。

同时Graph RAG对tokens的需求很低,也就是说可以帮助开发者节省大量成本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/868253.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pnpm介绍

PNPM 是一个 JavaScript 包管理器,类似于 npm 和 Yarn。它的全称是 "Performant npm",主要设计目标是优化包的安装和管理过程,以提升速度和效率。PNPM 的主要特点包括: 符号链接(Symlink)&#x…

AI产品经理发展与规划

今天引用高飞老师的讲课内容,分享一下,何为AI产品经理?这个话题不仅仅希望介绍AI产品经理的工作方式等方面的内容,更多的在于讨论未来产品经理这个行业应该如何发展?行业壁垒在何处?如何应对中年危机&#…

名企面试必问30题(二十六)——毕业这么久了,为什么还没有找到工作?

回答一: “毕业后的这段时间,我一直在努力寻找最适合自己发展的岗位。我没有急于随便接受一份工作,而是希望能够进入一个与我的专业技能和职业规划高度匹配的公司。在这个过程中,我不断提升自己的技术能力,学习新的测…

PyQT: 开发一款ROI绘制小程序

在一些基于图像或者视频流的应用中,比如电子围栏/客流统计等,我们需要手动绘制一些感兴趣(Region of Interest,简称ROI)区域。 在这里,我们基于Python和PyQt5框架开发了一款桌面应用程序,允许用…

c#类型转换和常见集合类型

目录 1. 整数转换,整数和字符串,字符串和整数之间的转换怎么实现? 2. 日期转换,获取当前日期,字符串转日期,日期转字符串怎么实现? 3. 举例一维、二维、三维数组 4. 需求:有个88…

事务(数据库)

是一组操作的集合,是一个不可分割的工作单位,事物会把所有的操作作为一个整体一起向系统提交或撤销操作请求,这些操作要么同时成功,要么同时失败 create table account(id int auto_increment primary key comment 主键ID,name va…

VPN 的入门介绍

VPN(虚拟专用网络) 简介 虚拟专用网络,简称虚拟专网(VPN),其主要功能是在公用网络上建立专用网络,进行加密通讯。在企业网络中有广泛应用。VPN网关通过对数据包的加密和数据包目标地址的转换实…

14-48 剑和诗人22 - RAG 的主要痛点和解决方案

​​​​​ 检索增强生成 (RAG) 模型已成为一种有前途的方法,它利用存储在文档中的外部知识来提高生成文本的准确性和相关性。通过检索和调节相关的上下文文档,与传统语言模型相比,RAG 模型可以产生更真实、更深入和更具体的响应。 然而&…

诸葛亮的空城计 - 代理模式

定场诗 “无形之中蕴含至理,虚实相生方见大道。” 在三国演义中,诸葛亮的空城计可谓神来之笔。这看似冒险的策略,实则蕴含深意。今天,我们将透过空城计,一窥软件设计中代理模式的奥秘。 西城无人旦夕危,…

君方智能设计平台-事务管理技术方案

1.背景介绍 事务处理是指对数据进行一组操作,这些操作要么全部成功,要么全部失败,以确保数据的一致性和完整性。软件的事务管理主要实现方案主要涉及以下几个方面: (1)数据一致性:在CAD软件中…

STM32实现看门狗(HAL库)

文章目录 一. 看门狗1. 独立看门狗(IWDG)1.1 原理1.2 相关配置1.3 相关函数 2. 窗口看门狗(WWDG)2.1 原理2.2 相关配置2.3 相关函数 一. 看门狗 单片机在日常工作中常常会因为用户配置代码出现BUG,而导致芯片无法正常工…

Flask项目搭建及部署(完整版!全网最全)

flask搭建及部署 pip 19.2.3 python 3.7.5 Flask 1.1.1 Flask-SQLAlchemy 2.4.1 Pika 1.1.0 Redis 3.3.11 flask-wtf 0.14.2 1、创建flask项目: 创建完成后整个项目结构树: app.py: 项⽬管理⽂件,通过它管理项⽬。 static: 存放静态文…

map和set的原理、优劣势、应用场景和示例代码,统统告诉你。

map和set的原理都是基于哈希表实现的,通过哈希值来快速查找和插入元素,从而实现高效的数据存储和管理,那么他们之间有什么不同呢,该如何选择,本文带你了解。 一、map和set的原理 map和set都是数据结构,用…

【分布式系统三】监控平台Zabbix对接grafana(截图详细版)

目录 一.安装grafana并启动 二.浏览器访问 三.导入zabbix数据,对接grafana 四.如何导入模版 以前两篇博客为基础 【分布式系统】监控平台Zabbix介绍与部署(命令截图版)-CSDN博客 【分布式系统】监控平台Zabbix自定义模版配置-CSDN博客 …

java ReadWriteLock接口

在 Java 中,ReadWriteLock 接口的实现类ReentrantReadWriteLock 类提供了一种允许多个线程同时读取某一资源但只允许一个线程写的锁定机制。这种机制可以提高并发性能,特别是在读操作远多于写操作的场景下。 特性: 可重入;不存…

前端使用Threejs加载机械臂并控制机械臂跳舞

1. 前言 在我的第一篇博客中,大致讲解了如何使用threejs导入机械臂模型,以及如何让机械臂模型动起来的案例,可以看一下之前的博客前端使用Threejs控制机械臂模型运动 本篇博客主要讲解的是在原来的基础上添加GSAP动画库的应用,可以通过动画,来让机械臂进行指定轨迹位姿的运动…

基于SpringBoot的休闲娱乐代理售票系统

本系统主要包括管理员和用户两个角色组成;主要包括:首页、个人中心、用户管理、折扣票管理、分类管理、订单信息管理、退票信息管理、出票信息管理、系统管理等功能的管理系统。 💕💕作者:Weirdo 💕&#x…

Python酷库之旅-第三方库Pandas(009)

目录 一、用法精讲 19、pandas.read_xml函数 19-1、语法 19-2、参数 19-3、功能 19-4、返回值 19-5、说明 19-6、用法 19-6-1、数据准备 19-6-2、代码示例 19-6-3、结果输出 20、pandas.DataFrame.to_xml函数 20-1、语法 20-2、参数 20-3、功能 20-4、返回值 …

GTP/GTX 手动对齐,谈谈思路。

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

【server】springboot 整合 redis

1、redis 使用模式 1.1 单机模式 1.1.1 编译安装方式 1.1.1.1 下载 Redis的安装非常简单,到Redis的官网(Downloads - Redis),下载对应的版本,简单几个命令安装即可。 1.1.1.2 编译安装 tar xzf redis-stable.tar.…