GraphRAG介绍

一、RAG原理

用户输入了一个指令Instruct,RAG将其与Document store(向量库)中的预存文本进行匹配,然后将符合条件的筛选文本(Retrieved Documents)与指令Instruct,共同合成为一个增强型的Prompt,并将该增强型Prompt喂给大模型,最终大模型根据此增强型Prompt,生成最终的Response。

img

  • RAG技术架构与实现原理

​ https://cloud.tencent.com.cn/developer/article/2436421

  • 用通俗易懂的方式讲解:一文详解大模型 RAG 模块

​ https://blog.csdn.net/python1222_/article/details/140124845

二、RAG的缺陷

目前RAG效果不佳的原因:一个是Document=>Chunks的切分策略,另一个是在向量库检索(Retrieval)与指令Instruct关联的文本(Chunks)策略。

  1. Document=>Chunks的切分策略:

    现有工具将文档分成若干个段落,具有完整语义的段落被拆分为数个chunks,或者一个chunk包含几个不同语义的段落,当一个问题的答案需要通过多个不同的信息片段,并通过它们共享的属性来连接,进而提供新的综合见解时,基线 RAG 表现得很差。

  2. 向量库检索(Retrieval)与指令Instruct关联的文本(Chunks)策略:

    从向量库检索匹配指令Instruct的文本,存在只能匹配细粒度的问题,在查询阶段,RAG将用户指令Instruct挨个在向量库与这些chunks的embedding向量进行相似度匹配,然后输出最匹配的k个作为prompt的上下文(context),未能考虑各个chunk之间的关联。当被要求在大量数据或复杂文档中进行总结、提炼和理解时,基线 RAG 往往表现不佳。

三、GraphRAG

GraphRAG 使用 知识图谱 来在推理复杂信息时显著提升问答性能。当需要对复杂数据进行推理时,GraphRAG 展示了优于基线 RAG 的性能,特别是在 知识图谱 的帮助下。

核心特点

1. 基于知识图谱的全局推理

通过引入知识图谱结构化数据,突破传统向量检索的局限性,动态捕捉实体关系,支持跨信息点的全局性关联分析(如发现隐藏的模式和跨领域逻辑链)。

2. 多层次查询能力

提供三层搜索模式:

  • 全局搜索:基于社区聚类的宏观洞察(如Leiden层次聚类)
  • 局部搜索:聚焦实体邻域关联的深度推理
  • DRIFT混合搜索:结合局部与全局信息平衡精度与广度

3. 图神经网络增强架构

集成图机器学习技术,从结构化与非结构化数据中提取深度语义,提升复杂查询(如多跳推理、数据漂移分析)的响应质量。

4. 灵活可扩展的应用适配

提供Prompt调优工具链,支持针对不同场景(如企业知识库、科研文献库)定制检索生成策略,实现精准需求适配。

运行流程

  • 索引(Indexing)过程

    • 文本单元切分:将输入文本分割成 TextUnits,每个 TextUnit 是一个可分析的单元,用于提取关键信息。

    • 实体和关系提取:使用 LLM 从 TextUnits 中提取实体、关系和关键声明。

    • 图构建:构建知识图谱,使用 Leiden 算法进行实体的层次聚类。每个实体用节点表示,节点的大小和颜色分别代表实体的度数和所属社区。

    • 社区总结:从下到上生成每个社区及其成员的总结,帮助全局理解数据集。

  • 查询(Query)过程

    索引完成后,用户可以通过不同的搜索模式进行查询:

    • 全局搜索:当我们想了解整个语料库或数据集的整体概况时,GraphRAG 可以利用 社区总结 来快速推理和获取信息。这种方式适用于大范围问题,如某个主题的总体理解。

    • 局部搜索:如果问题关注于某个特定的实体,GraphRAG 会向该实体的 邻居(即相关实体)扩展搜索,以获得更详细和精准的答案。

    • DRIFT 搜索:这是对局部搜索的增强,除了获取邻居和相关概念,还引入了 社区信息 的上下文,从而提供更深入的推理和连接。

Prompt 调优
为了获得最佳性能,GraphRAG 强烈建议进行 Prompt 调优,确保模型可以根据你的特定数据和查询需求进行优化,从而提供更准确和相关的答案。

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

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

相关文章

清理Docker数据卷volumes

原文链接地址 清理Docker数据卷volumes1.查看磁盘使用 2.查看Docker数据卷及磁盘使用情况 3.Docker 删除无用数据卷今天突然发现跑服务器的磁盘满了。记录下进入服务查看到Docker-Overlay2磁盘空间的清理方法:清理Docker的数据卷volumes Docker在长时间使用的情况下,经常需…

Web开发SpringBoot流程性的学习----回顾补充1

HTML(HyperText Markup Language)**:超文本标记语言 超文本:超越了文本的限制,比普通文本更强大。除了文字信息,还可以定义图片、音频、视频等内容。 标记语言:由标签构成的语言HTML标签都是预定义好的。例如:使用展示超链接,展示图片,展示视频。 HTML代码直接在浏览器中运…

【我的青春coding物语果然有问题!】第四次上机卡题复盘

最近事多 今天才写出来 实际做的时候变量名犯了很多很唐的错误 这里就不一一说了 我们看一下今天要讲的题目 05:正整数的任意进制转换 将 p 进制 n 转换为 q 进制。p 和 q 的取值范围为[2,36],其中,用到的数码按从小到大依次为:0,1,2,3,4,5,6,7,8,9,A,B,...,Z…

【PCIE711-214】基于PCIe总线架构的4路HD-SDI/3G-SDI视频图像模拟源

产品概述 PCIE711-214是一款基于PCIE总线架构的4路SDI视频模拟源。该板卡为标准的PCIE插卡,全高尺寸,适合与PCIE总线的工控机或者服务器,板载协议处理器,可以通过PCIE总线将上位机的YUV 422格式视频数据下发通过SDI接口播放出去,从而模拟SDI协议标准的视频流。该板卡支持4…

3 Packet (Mbuf) Library

Packet(MBuf)库概述: 这个库提供了分配和释放缓冲区(mbuf)的能力,DPDK 应用可以使用这些缓冲区来存储各种类型的数据,比如:网络数据包(最常见) 控制信息(control data) 事件(events) 或其他需要临时存储的数据这些 mbuf 缓冲区的底层是通过 Mempool 管理的,即使…

3.31 计算机实践-数字逻辑电路

带使能端的D触发器 之前学的门控D锁存器加了一个时钟周期CLK(使得只有时钟发生转换的时候才能写入数据)再加一个使能端(使得只有EN=1的时候才能正确写入,否则就把当前的输出结果再输入给D端,保持触发器当前输出)4位行波加法计数器 T触发器(使得每一个时钟周期之后就会有…

2025年天梯赛补题记录——九宫格

九宫格输入样例: 3 5 1 9 2 8 3 4 6 7 7 2 8 9 6 4 3 5 1 3 4 6 5 7 1 9 2 8 8 9 2 1 4 5 7 3 6 4 7 3 6 2 8 1 9 5 6 5 1 7 3 9 2 8 4 9 3 4 8 1 6 5 7 2 1 6 7 3 5 2 8 4 9 2 8 5 4 9 7 6 1 3 8 2 5 4 9 7 1 3 6 7 9 6 5 1 3 8 2 4 3 4 1 6 8 2 7 9 5 6 8 4 2 7 1 3 5 9 9 1…

【Python编程】Python 参数传递的强制规则你必须掌握

场景 外卖点单时,本来想在“备注”里写“不要辣”,结果不小心输错位置,填在了“地址”栏。骑手到了,给你打电话:“请问您是在‘不要辣小区’门口等我吗?”是不是听起来有点好笑? 生活里,错误填写表单位置尚且令人哭笑不得;而在代码世界里,如果参数用错了位置,后果往…

基于FPGA的2ASK+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR

1.算法仿真效果 vivado2019.2仿真结果如下(完整代码运行后无水印):设置SNR=8db设置SNR=20db整体波形效果:仿真操作步骤可参考程序配套的操作视频。2.算法涉及理论知识概要 2.1 2ASK调制解调2ASK调制解调是一种数字调制解调技术,它是基于ASK调制的一种数字调制方式。ASK调制…

15.文件和流

本章目标Java中的文件 流 字节流 字符流本章内容 一、Java中的文件 1、文件的介绍 Java中文件操作主要通过File类来实现,File类关心的是磁盘上存储的文件File类并不是只代表文件 可以表示特定文件的名称,这里的名称就是路径 可以是某个目录。2、路径的表示方式: 因为在Java中…

16.对象流

本章目标对象流 递归(掌握)本章内容 一、对象流如果想在JVM停止后,把这些对象保存到磁盘或者通过网络传输到另一远程机器,怎么办呢?1、什么是对象流 所谓对象流也就是将对象的内容进行流化,能够输入输出对象的流称为对象流。可以对流化后的对象进行读写操作,也可将流化后…