当前位置: 首页 > 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微软发布)的案例应用

持续更新中……

相关文章:

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

LLMs之RAG:GraphRAG(本质是名词Knowledge Graph/Microsoft微软发布)的简介、安装和使用方法、案例应用之详细攻略 导读:2024年7月3日,微软正式开源发布GraphRAG。GraphRAG可以提高大型语言模型在私有数据集上的推理能力。 背景痛点&#xff1…...

Linux 之前的 Unix 桌面沉浮启示录

It takes more than open source, it takes open standards and consensus 仅仅开源还不足以实现开放,还需开放标准和建立共识 Steven J. Vaughan-Nichols Sat 27 Jan 2024 // 12:33 UTC 现在,由于有了安卓和 ChromeOS,Linux 已成为重要的终端…...

面试问题梳理:项目中防止配置中的密码泄露-Jasypt

背景 想起面试的时候,面试官问我现在大家用Spring框架,数据库、ES之类的密码都是配置在配置文件中的,有很大的安全隐患,你有考虑过怎么解决嘛? 当时我回答是可以在项目启动的过程中的命令行追加的方式,感觉…...

engine.addImportPath()用于向 QML 引擎添加新的模块搜索路径

engine.addImportPath() 是 QQmlApplicationEngine 类中的一个方法,用于向 QML 引擎添加新的模块搜索路径。这在需要加载自定义模块或从非标准位置加载 QML 文件时非常有用。通过使用 addImportPath() 方法,可以让 QML 引擎在额外的路径中查找 QML 模块。…...

ServiceNow UI Jelly模板注入漏洞复现(CVE-2024-4879)

0x01 产品简介 ServiceNow 是一个业务转型平台。通过平台上的各个模块,ServiceNow 可用于从人力资源和员工管理到自动化工作流程或作为知识库等各种用途。 0x02 漏洞概述 由于ServiceNow的Jelly模板输入验证不严格,导致未经身份验证的远程攻击者可通过构造恶意请求利用,在…...

项目部署笔记

1、安全组需开放(如果不开放配置nginx也访问不到) 2、域名解析配置IP(子域名也需配置IP,IP地址可以不同) 3、如果出现图片获其他的文件找不到的情况请仔细检查一下路径是否正确 4、服务器nginx配置SSL证书后启动报错: nginx: […...

PyCharm\VsCode——Python第三方库下载换源

为什么要换源? Python第三方库下载默认镜像源在国外,因为特殊的原因在国内的你我利用这个镜像源往往速度会非常地慢,因此为了提速将这个默认镜像源换成国内的镜像源是非常有必要的。 镜像源的种类有哪些? 国外镜像源——官方 http…...

图片上传裁剪react-cropper

效果图 安装插件 npm i react-cropper 或者 yarn add react-cropper 主要代码 import React, { useRef, useState } from react; import Cropper from react-cropper; import cropperjs/dist/cropper.css; import ./index.less; import { UploadOutlined } from ant-d…...

跨越空间的编码:在PyCharm中高效使用远程解释器

跨越空间的编码:在PyCharm中高效使用远程解释器 PyCharm的强大功能之一是支持远程解释器,这使得开发者能够在远程服务器或虚拟机上运行、调试代码,享受本地开发环境的便利。本文将详细介绍如何在PyCharm中配置和使用远程解释器,包…...

Vue3单文件jsx输出多组件示例遇到的坑

感谢博主减肥吧Evan提供的SFC实现多组件的思路和实现&#xff0c;小卷在大佬的基础上再完善下实现。 我们从tsx的API使用上得到启发&#xff0c;可以在vue的单文件组件&#xff08;sfc&#xff09;中使用defineComponent来定义和导出多个独立的小组件。此时sfc中的<templat…...

OpenCV中的轮廓检测cv2.findContours()

文章目录 前言一、查找轮廓二、绘制轮廓轮廓面积轮廓周长 前言 轮廓提取的前提&#xff0c;将背景置为黑色&#xff0c;目标为白色&#xff08;利用二值化或Canny&#xff09; 边缘检测&#xff0c;例如Canny等&#xff0c;利用梯度变化&#xff0c;记录图像中的边缘像素点&a…...

JFlash读取和烧录加密stm32程序

JFlash读取和烧录加密stm32程序 安装后JFlash所在的目录&#xff1a;C:\Program Files\SEGGER\JLink 一、烧写加密程序 1、打开C:\Program Files\SEGGER\JLink目录&#xff0c;找到JFlash.exe,双击它&#xff0c;就可以打开该执行程序。见下图&#xff1a; 2、选择“Create …...

【总结】实际业务场景中锁、事务、异常如何考虑使用?

文章目录 锁处理目的&#xff1a;考虑锁控制思路&#xff1a;生命周期接口并发控制解决方案&#xff1a;测试锁是否生效&#xff1a;模拟多线程并发场景的2种方式&#xff1a; 事务处理目的&#xff1a;考虑事务控制思路&#xff1a;解决方案&#xff1a; 总结 锁处理 目的&am…...

Pytorch使用Dataset加载数据

1、前言&#xff1a; 在阅读之前&#xff0c;需要配置好对应pytorch版本。 对于一般学习&#xff0c;使用cpu版本的即可。参考教程点我 导入pytorch包&#xff0c;使用如下命令即可。 import torch # 注意虽然叫pytorch&#xff0c;但是在引用时是引用torch2、神经网络获取…...

【nginx】nginx的优点

目录 一、高性能1.1 高并发处理1.2 低内存消耗1.3 快速响应 二、高扩展性2.1 模块化设计2.2 动态模块扩展 三、高可靠性3.1 核心框架稳定3.2 进程管理3.3 负载均衡与健康检查3.4 热部署 四、功能丰富4.1 反向代理4.2 HTTP缓存4.3 安全功能 五、易于配置和管理5.1 配置文件简单5…...

K8S ingress 初体验 - ingress-ngnix 的安装与使用

准备环境 先把 google 的vm 跑起来… gatemanMoreFine-S500:~/projects/coding/k8s-s/service-case/cloud-user$ kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane,master 124d v1.23.6 k8s-no…...

qt 获取父控件

在 Qt 中&#xff0c;你可以通过调用 QWidget 的 parentWidget() 方法来获取一个控件的父控件。这个方法会返回一个指向父控件的指针&#xff0c;如果该控件没有父控件&#xff0c;则返回 nullptr。 以下是一个简单的示例&#xff0c;展示了如何获取一个按钮的父控件&#xff…...

flask基础配置详情

前言 一个简单的应用 app Flask(__name__) app.route("/") def hello_world():return "<p>Hello,World!"运行Flask应用 #flask命令运行flask --app hello run#使用Python命令进行运行python -m flask # 作为一个捷径&#xff0c;如果文件名为 app…...

单相整流-TI视频课笔记

目录 1、单相半波整流 1.1、单相半波----电容滤波---超轻负载 1.2、单相半波----电容滤波---轻负载 1.3、单相半波----电容滤波---重负载 2、全波整流 2.1、全波整流的仿真 2.2、半波与全波滤波的对比 3、全桥整流电路 3.1、全波和全桥整流对比 3.2、半波全波和全桥…...

用GPT 4o提高效率

**GPT-4o可以通过提高编程效率、优化工作流程、增强文档管理和知识分享等多方面帮助用户提升工作效率**。具体如下&#xff1a; 1. **代码生成与优化** - **快速原型开发**&#xff1a;程序员可以通过向GPT-4o描述需求或功能来生成初步的代码框架或关键函数&#xff0c;从而节省…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”

案例&#xff1a; 某医药分销企业&#xff0c;主要经营各类药品的批发与零售。由于药品的特殊性&#xff0c;效期管理至关重要&#xff0c;但该企业一直面临效期问题的困扰。在未使用WMS系统之前&#xff0c;其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...