当前位置: 首页 > news >正文

LLMs之RAG:GraphRAG(本质是名词Knowledge Graph/Microsoft微软发布)的简介、安装和使用方法、案例应用之详细攻略

LLMs之RAG:GraphRAG(本质是名词Knowledge Graph/Microsoft微软发布)的简介、安装和使用方法、案例应用之详细攻略

导读:2024年7月3日,微软正式开源发布GraphRAG。GraphRAG可以提高大型语言模型在私有数据集上的推理能力。

背景痛点:基线RAG (Retrieval-Augmented Generation)方法在以下情况下表现不佳:

需要跨越不同片段信息进行综合推理时需要对大量数据集或大型单个文档进行整体语义理解时。

解决方案

GraphRAG是一种结构化、分层的RAG方法,通过从原始文本中提取知识图谱、构建社区层次结构、生成社区总结等步骤,增强大型语言模型在私有数据集上的推理能力。

核心思路步骤

>> 索引:将输入语料切分为TextUnits;使用大型语言模型从TextUnits中提取实体、关系和关键声明;使用Leiden技术对图谱进行分层聚类;从底层到顶层生成每个社区及其组成部分的总结

>> 查询

全局搜索:利用社区总结来回答关于整个语料库的综合性问题

局部搜索:通过扇出到相邻概念来回答关于特定实体的问题

提示调优:根据具体数据集和任务,建议对提示进行微调以获得最佳效果

优势

>> 能够更好地处理需要综合推理和对大型数据集进行整体理解的任务

>> 在上述两类任务上表现优于其他基线RAG方法

>> 通过提示微调可以针对具体数据集和任务进行优化

目录

GraphRAG(Microsoft微软发布)的简介

1、什么是GraphRAG?

2、GraphRAG能做什么?

3、GraphRAG的预期用途是什么?

4、GraphRAG是如何评估的?用什么指标来衡量性能?

5、GraphRAG的局限性是什么?用户在使用系统时如何尽量减少GraphRAG局限性的影响?

6、哪些操作因素和设置可以有效和负责任地使用GraphRAG?

GraphRAG(Microsoft微软发布)的安装和使用方法

1、安装

下载库

设置数据项目和配置:

配置环境变量和设置:

运行索引管道:

使用查询引擎:

2、使用方法

2.1、提示调优

GraphRAG(Microsoft微软发布)的案例应用


GraphRAG(Microsoft微软发布)的简介

2024年7月3日,微软正式开源发布GraphRAG。GraphRAG 项目是一个数据管道和转换套件,旨在利用大语言模型(LLM)的强大功能,从非结构化文本中提取有意义的结构化数据。

官方文章:GraphRAG: Unlocking LLM discovery on narrative private data - Microsoft Research

GitHub地址:GitHub - microsoft/graphrag: A modular graph-based Retrieval-Augmented Generation (RAG) system

文档地址:Welcome to GraphRAG

1、什么是GraphRAG?

GraphRAG是一种基于AI的内容解释和搜索功能。通过使用大型语言模型(LLM),它解析数据以创建知识图谱,并回答用户关于用户提供的私有数据集的问题。

2、GraphRAG能做什么?

GraphRAG能够连接大量信息,并利用这些连接回答通过关键字和向量搜索机制难以或不可能回答的问题。在此基础上,提供半技术性的高级信息,说明系统如何为各种用途提供功能。这使得使用GraphRAG的系统能够回答跨越多个文档的问题,以及诸如“该数据集中的主要主题是什么?”这样的主题问题。

3、GraphRAG的预期用途是什么?

GraphRAG旨在支持关键信息发现和分析的用例,这些用例中,获取有用见解所需的信息分布在许多文档中,噪音较多,夹杂有错误信息或虚假信息,或者用户要回答的问题比底层数据能直接回答的问题更抽象或更具主题性。
GraphRAG设计用于已经接受过负责任的分析方法培训并具备批判性思维的用户环境中。GraphRAG能够在复杂信息主题上提供高度见解,但需要领域专家对答案进行人工分析,以验证和补充GraphRAG生成的响应。
GraphRAG旨在与特定领域的文本数据集一起部署和使用。GraphRAG本身不收集用户数据,但建议用户验证所选LLM的隐私政策。

4、GraphRAG是如何评估的?用什么指标来衡量性能?

GraphRAG通过多种方式进行了评估。主要关注点是
1)准确表示数据集,
2)提供透明和有依据的响应,
3)抵御提示和数据集注入攻击的弹性,
4)低幻觉率。每项评估的详细信息如下所述。

通过手动检查和对测试数据集的随机选取子集进行自动测试,验证数据集的准确表示。
通过自动答案覆盖评估和对返回的基础上下文进行人工检查,测试响应的透明性和有依据性。
通过手动和半自动技术测试用户提示注入攻击(“越狱”)和跨提示注入攻击(“数据攻击”)。
使用声明覆盖指标、答案和来源的人工检查以及对抗攻击尝试通过对抗性和极具挑战性的数据集强制幻觉评估幻觉率。

5、GraphRAG的局限性是什么?用户在使用系统时如何尽量减少GraphRAG局限性的影响?

GraphRAG依赖于精心构建的索引示例。对于通用应用(如以人、地点、组织、事物等为中心的内容),我们提供示例索引提示。对于独特的数据集,有效的索引依赖于适当识别领域特定概念。
索引是相对昂贵的操作;缓解索引的最佳实践是先在目标领域创建一个小型测试数据集,以确保索引器性能,然后再进行大规模索引操作。

6、哪些操作因素和设置可以有效和负责任地使用GraphRAG?

GraphRAG旨在由具有领域专业知识和经验丰富的用户使用,处理困难的信息挑战。尽管该方法通常能有效抵御注入攻击并识别冲突的信息来源,但该系统是为受信任的用户设计的。对响应进行适当的人工分析对于生成可靠的见解至关重要,并且应追踪信息来源以确保人类对推理结果的认同。
GraphRAG在自然语言文本数据上效果最好,这些数据集体聚焦于一个整体主题或主题,并且实体丰富——实体是指可以唯一标识的人、地点、事物或对象。
尽管GraphRAG已经过评估,以评估其对提示和数据集注入攻击的抵御能力,并探讨了特定类型的危害,但用户配置的LLM可能会生成不适当或冒犯的内容,因此在敏感环境中部署时需要针对具体使用场景和模型采取额外的缓解措施。开发者应根据他们的背景评估输出,使用可用的安全分类器、模型特定的安全过滤器和功能(例如https://azure.microsoft.com/en-us/products/ai-services/ai-content-safety),或适合其用例的定制解决方案。

GraphRAG(Microsoft微软发布)的安装和使用方法

要开始使用 GraphRAG 系统,我们推荐尝试解决方案加速器包。这提供了一个使用 Azure 资源的用户友好的端到端体验。
本库介绍了一种使用知识图谱记忆结构增强 LLM 输出的方法。请注意,提供的代码仅作为演示用途,并不是微软官方支持的产品。
警告:GraphRAG 索引可能是一个昂贵的操作,请阅读所有文档以了解过程和涉及的成本,并从小规模开始。

1、安装

下载库

pip install graphrag

设置数据项目和配置:

mkdir -p ./ragtest/input
curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt > ./ragtest/input/book.txt
python -m graphrag.index --init --root ./ragtest

配置环境变量和设置:

更新 .env 文件中的 GRAPHRAG_API_KEY 并修改 settings.yaml。

运行索引管道:

python -m graphrag.index --root ./ragtest

使用查询引擎:

python -m graphrag.query --root ./ragtest --method global "What are the top themes in this story?"
python -m graphrag.query --root ./ragtest --method local "Who is Scrooge, and what are his main relationships?"

2、使用方法

2.1、提示调优

直接使用 GraphRAG 处理您的数据可能不会产生最佳效果。我们强烈建议按照文档中的提示调优指南对提示进行微调。

GraphRAG(Microsoft微软发布)的案例应用

持续更新中……

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PAT甲级真题1020树的遍历
  • Spring Boot中@Async注解的使用及原理 + 常见问题及解决方案
  • MFC CRectTracker 类用法详解
  • Linux环境下安装Nodejs
  • Flutter热更新技术探索
  • 【ffmpeg命令入门】重新编码媒体流、设置码率、设置帧速率
  • 昇思25天学习打卡营第21天|DCGAN生成漫画头像
  • 算法学习笔记:贪心算法
  • Java集合框架的内部揭秘:List、Set与Map的深潜之旅
  • PHP MySQL 创建数据库
  • 数仓工具—Hive语法之宏(Macro)
  • 数据采集监控平台:挖掘数据价值 高效高速生产!
  • 单例模式 单例模式在多线程中是否线程安全, 如何保证线程安全。
  • react中状态管理useState
  • 计算1的数量
  • 分享一款快速APP功能测试工具
  • #Java异常处理
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • ECMAScript入门(七)--Module语法
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Yeoman_Bower_Grunt
  • yii2权限控制rbac之rule详细讲解
  • 阿里云应用高可用服务公测发布
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 复习Javascript专题(四):js中的深浅拷贝
  • 三分钟教你同步 Visual Studio Code 设置
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​一些不规范的GTID使用场景
  • ### RabbitMQ五种工作模式:
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (06)Hive——正则表达式
  • (23)Linux的软硬连接
  • (3) cmake编译多个cpp文件
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Java数据结构)ArrayList
  • (差分)胡桃爱原石
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (七)Flink Watermark
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .net2005怎么读string形的xml,不是xml文件。
  • @Service注解让spring找到你的Service bean
  • [100天算法】-实现 strStr()(day 52)
  • [145] 二叉树的后序遍历 js