graphrag学习总结

news2024/10/17 9:46:24

学习视频:b站链接

项目链接

GraphRAG 的基本概念

  • Document(文档):系统中的输入文档。这些文档要么代表CSV中的单独行,要么代表单独的txt文件。

  • TextUnit(文本块):要分析的文本块。这些块的大小、重量以及它们是否遵守任何数据边界可以在下面配置。一个常见的用例是设置 CHUNK_BY_COLUMNS 为 id,以便文档和TextUnits之间存在一对多关系,而不是多对多关系。

  • Entity(实体):从TextUnit中提取的实体。这些实体代表人物、地点、事件或您提供的其他实体模型。

  • Relationship(关系):两个实体之间的关系。这些关系由协变量生成。

  • Covariate(协变量):提取的声明信息,其中包含可能受时间限制的实体的陈述。

  • Claim(声明):代表具有评估状态和时间限制的积极事实陈述,以协变量(Covariates)的称呼在各处使用。

  • Community Report(社区报告):一旦生成实体,我们就对它们执行层次社区检测,并为该层次结构中的每个社区生成报告。

  • Node(节点):包含已被聚集的实体和文档的呈现图形视图的布局信息。

总体流程:
在这里插入图片描述

文档转换为 TextUnits

说明:

  • 概念 -> 追溯原文
  • 文档和文本单元之间存在严格的一对多关系
    在这里插入图片描述

切换技巧:

  • 切换大小 chunk size: 1200 token
  • 较大的块会导致输出保真度较低,参考文本意义较小;使用较大的块可以大大缩短处理时间。

图表:

  • 图表显示不同 chunk sizegleanings 的数量对实体引用检测的影响。
  • 600 token、1200 token、2400 token 的 chunk size 对比。
  • 在这里插入图片描述

图提取

功能:

分析每个文本单元并提取图形基元:实体、关系和声明

实体和关系提取:

  • 使用 LLM 从原始文本中提取实体和关系,包含具有名称、类型和描述的实体列表,以及具有源、目标和描述的关系列表。

实体和关系摘要:

  • 通过 LLM 为每个实体和关系提供简短的摘要描述。

Claim Extraction & Emission:

  • 声明代表具有评估状态和时间限制的积极事实陈述,以协变量(Covariates)的称呼在各处使用。

在这里插入图片描述

图增强(构建社区)

社区检测:

  • 使用分层莱顿算法生成实体社区的层次结构,此方法将对我们的图应用递归社区聚类,直到达到社区规模阈值。
  • 这将使我们能够了解图的社区结构,并提供一种在不同粒度级别上导航和总结图的方法。

图嵌入:

  • 使用 Node2Vec 算法生成图的向量表示。
  • 这将使我们能够理解图的隐式结构,并提供额外的向量空间,以便在查询阶段搜索相关概念。

在这里插入图片描述

社区总结

功能:

基于社区数据并为每个社区生成报告,这让我们可以从多个粒度点对图表有一个高层次的了解。例如,如果社区 A 是顶级社区,我们将获得有关整个图表的报告。如果社区是较低级别的,我们将获得有关地集群的报告。

生成社区报告:

使用 LLM 生成每个社区的摘要,引用社区子结构中的关键实体、关系和声明。

总结社区报告:

每个社区报告都会通过 LLM 进行总结,以供速记使用。

社区嵌入:

通过生成社区报告、社区报告摘要和社区报告标题的文本嵌入来生成我们的社区的向量表示。

在这里插入图片描述

文档处理

链接到 TextUnits:

将每个文档链接到第一阶段创建的文本单元,了解哪些文档与哪些文本单元相关。

文档嵌入:

文档切片的平均嵌入来生成文档的向量表示,能够理解文档之间的隐式关系。

在这里插入图片描述

local查询

在这里插入图片描述

Local 查询流程

流程描述:

  1. 用户查询(User Query):用户输入查询,进入流程的起点。
  2. 提取实体(Extracted Entities):从用户查询中提取出实体,包括实体描述和嵌入信息。
  3. 候选文本单元(Candidate Text Units):通过实体和文本单元的映射,生成候选文本单元。
  4. 候选社区报告(Candidate Community Reports):通过实体和社区报告的映射,生成候选社区报告。
  5. 候选实体(Candidate Entities):通过实体-实体关系映射,生成候选实体。
  6. 候选关系(Candidate Relationships):通过实体-实体关系映射,生成候选关系。
  7. 候选协变量(Candidate Covariates):通过实体-协变量映射,生成候选协变量。

排序和过滤:

每个候选单元经过排序与过滤(Ranking + Filtering),并输出优先级结果,包括:

  • 优先级文本单元(Prioritized Text Units)
  • 优先级社区报告(Prioritized Community Reports)
  • 优先级实体(Prioritized Entities)
  • 优先级关系(Prioritized Relationships)
  • 优先级协变量(Prioritized Covariates)

响应(Response):

最终将所有优先级结果汇总,并生成响应(Response),提供给用户。

会话历史(Conversation History):

会话历史用来记录并辅助当前查询的处理,确保连续性和上下文的完整性。

Global查询流程

Global 查询流程

流程描述:

  1. 用户查询(User Query):用户输入查询,作为流程的起点。
  2. 会话历史(Conversation History):通过会话历史确保查询的上下文完整性。
  3. 社区报告批次(Shuffled Community Report Batch):将用户查询分配给不同的社区报告批次进行处理。每个批次会被洗牌处理,以确保多样性。
    • Batch 1:第一批社区报告
    • Batch 2:第二批社区报告
    • Batch N:第N批社区报告
  4. 中间响应评分(Rated Intermediate Responses, RIR):每个社区报告批次会生成中间响应,并对其进行评分。
  5. 排序与过滤(Ranking + Filtering):对中间响应的评分结果进行排序与过滤,保留最佳结果。
  6. 聚合中间响应(Aggregated Intermediate Responses):将所有评分较高的中间响应聚合在一起,作为最终输出。
  7. 最终响应(Response):将聚合的结果返回给用户,作为最终的查询响应。

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

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

相关文章

pdf阅读软件有哪些?5个软件帮助你快速进行pdf阅读

pdf阅读软件有哪些?5个软件帮助你快速进行pdf阅读 如果你正在寻找优秀的PDF阅读软件,以下推荐的5款软件能够帮助你快速、轻松地阅读和管理PDF文件。这些工具各具特色,适用于不同的使用需求,无论是注释、签名、还是管理大文件&…

使用Rollup.js快速开始构建一个前端项目

Rollup 是一个用于 JavaScript 项目的模块打包器,它将小块代码编译成更大、更复杂的代码,例如库或应用程序。Rollup 对代码模块使用 ES6 模块标准,它支持 Tree-shaking(摇树优化),可以剔除那些实际上没有被…

lwip多线程使用说明,注意事项

lwIP: Common pitfalls 相关问题: lwIP - A Lightweight TCP/IP stack - Bugs: bug #56531, Missing locking in tcp_input() [Savannah] 我也碰到了差不多情况

goDoH:一款使用了DNS-over-HTTPS作为传输端口的C2框架

工具介绍 goDoH是一款概念验证命令与控制框架,该工具采用Golang开发,并使用了DNS-over-HTTP作为传输介质。 项目依赖 goDoH的代码构建需要使用到Dep(【GitHub传送门】),Dep是一款针对Go语言的依赖管理工具。 在mac…

【vue】vue-router_ vue3路由管理器

代码获取 vue-router_ vue3路由管理器 ⼀、基本介绍 1. 单⻚应⽤程序介绍 1.1 概念 单⻚应⽤程序:SPA(Single Page Application)是指所有的功能都在⼀个HTML⻚⾯上实现 1.2 具体⽰例 单⻚应⽤⽹站: ⽹易云⾳乐 https://music.163.com/ 多⻚应⽤⽹…

【Python语言进阶(二)】

一、函数的使用方式 将函数视为“一等公民” 函数可以赋值给变量函数可以作为函数的参数函数可以作为函数的返回值 高阶函数的用法(filter、map以及它们的替代品) items1 list(map(lambda x: x ** 2, filter(lambda x: x % 2, range(1, 10)))) # filter…

K8s简介和安装部署

一、 Kubernetes 简介及部署方法 1、应用部署方式演变 Kubernetes简称为K8s,是用于自动部署、扩缩和管理容器化应用程序的开源系统,起源于Google 集群管理工具Borg。 传统部署 :互联网早期,会直接将应用程序部署在物理机上 优…

python yolov8半自动标注

首先标注一部分图片,进行训练,生成模型,标注文件为xml方便后面统一做处理。 1、标注数据(文件为xml, 转为txt用于训练,保留xml标签文件) 2、模型训练(训练配置、训练代码、) 3、使用…

400行程序写一个实时操作系统(八):(必看!)使用gdb调试错误的程序

上一篇笔者讲完了内存管理算法的完整实现,不过差点忘了,直接上这一部分是不是有点不友好,要知道笔者当初写内存算法可是调试得死去活来,奇奇怪怪的问题不断出现。 就比如笔者当初写了一个内存池算法,结果奇葩的事情发…

大模型之三十二-语音合成TTS(coqui) 之二 fine-tune

在 大模型之三十-语音合成TTS(coqui)[shichaog CSDN]中提到了xttsv2的fine-tune。 数据情况: 我是从bilibili up主小Lin说提取了一些视频,然后进行了重新的fine-tune。 训练结果 如下图所示,上面波形幅度较大的是xttsv2原始模型的结果&am…

u盘被写保护怎么解除?u盘写保护怎么去掉?

我们平时在使用U盘的过程中,可能会遇到U盘无法写入文件、删除数据或是格式化的情况。同时还可能收到提示“改磁盘已写保护”。U盘被写保护可能是有意的设置,也可能是无疑的操作。那么U盘被写保护了该怎么解除呢?本期内容,我们将介…

最新版 Winows下如何安装Redis?

最新版 Winows下如何安装Redis? 一、Redis介绍 Redis是一个广泛使用的开源非关系型数据库,它在现代软件开发中扮演着重要角色。**作为一个基于内存的数据库,Redis的底层代码是用ANSI C编写的,这使得它在性能上非常出色。**Redis…

【AIF-C01认证】亚马逊云科技生成式 AI 认证正式上线啦

文章目录 一、AIF-C01简介二、考试概览三、考试知识点3.1 AI 和 ML 基础知识3.2 生成式人工智能基础3.3 基础模型的应用3.4 负责任 AI 准则3.5 AI 解决方案的安全性、合规性和监管 四、备考课程4.1 「备考训练营」 在线直播课4.2 「SkillBuilder」学习课程 五、常见问题六、参考…

前端开发攻略---使用ocr识别图片进行文字提取功能

1、引入资源 通过链接引用 <script src"https://cdn.bootcdn.net/ajax/libs/tesseract.js/5.1.0/tesseract.min.js"></script> npm或其他方式下载 npm i tesseract 2、示例 <!DOCTYPE html> <html lang"en"><head><meta…

从纸质到云端:3C产品说明书的电子化进程与影响

在科技日新月异的今天&#xff0c;3C产品&#xff08;计算机类、通信类和消费类电子产品&#xff09;作为现代生活不可或缺的一部分&#xff0c;其说明书的演变也见证了技术进步的足迹。从最初的纸质文档到如今的电子说明书&#xff0c;这一转变不仅仅是物理形态的转换&#xf…

UE5 圆周运动、贝塞尔曲线运动、贝塞尔曲线点

圆周运动 贝塞尔曲线路径运动 蓝图函数库创建贝塞尔曲线点 // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "MyBlu…

文件IO知识梳理及练习

1> 使用fread和fwrite完成两个文件的拷贝&#xff0c;要求源文件和目标文件由外界输入 #include <myhead.h> typedef struct sockaddr_in addr_in_t; typedef struct sockaddr addr_t; typedef struct sockaddr_un addr_un_t; int main(int argc, const char *argv[])…

使用OpenCV实现基于FisherFaces的人脸识别

引言 随着人工智能技术的发展&#xff0c;人脸识别已经成为日常生活中不可或缺的一部分。在众多的人脸识别算法中&#xff0c;FisherFaces 方法因其简单易用且具有良好的识别效果而备受青睐。本文将详细介绍如何使用Python和OpenCV库实现基于FisherFaces的人脸识别系统&#x…

Flink On kubernetes

Apache Flink 是一个分布式流处理引擎&#xff0c;它提供了丰富且易用的API来处理有状态的流处理应用&#xff0c;并且在支持容错的前提下&#xff0c;高效、大规模的运行此类应用。通过支持事件时间&#xff08;event-time&#xff09;、计算状态&#xff08;state&#xff09…

知道ip地址怎么看网络地址

在计算机网络的世界里&#xff0c;IP地址是设备之间通信的基础。然而&#xff0c;仅仅知道一个设备的IP地址并不足以完全理解它在网络中的位置和作用。网络地址&#xff0c;作为IP地址的一个重要组成部分&#xff0c;为我们提供了关于设备所属网络的更多信息。本文将深入探讨如…