GraphRAG知识库概要设计展望

最近研究了一下GraphRAG,写了一个文档转换工具还有图可视化工具,结合langchain构建RAG经验,还有以前的数据平台,做了一个知识库概要设计,具体应用欢迎留言探讨。

一、GraphRAG整体概述

GraphRAG图基检索增强生成,从原始文本中提取知识图谱、构建社区层次结构、为这些社区生成摘要,然后在执行基于RAG的任务时利用这些结构。旨在利用知识图谱和大语言模型(LLMs)来提升信息处理能力和问答能力。而标准RAG是一种基础版本的检索增强生成架构,采用前置处理流程,通过chunk方式来切割文档,使用纯文本片段的朴素语义进行搜索。
当面临以下情况时,GraphRAG比标准RAG有更好的表现:当一些实体(名词)占比比较小,通过标准RAG无法正确召回时;当希望通过实体关系正向和反向查询内容,通过实体关系实现很正确召回时;通过GlobalSearch对整体进行总结和洞见时。

二、图基检索增强生成平台架构

在这里插入图片描述

基本思路:

[用户端]


[文档预处理层] → 统一文本化


[GraphRAG索引管道] → 知识图谱构建


[检索与问答引擎] → 用户交互接口

1、文档预处理模块

输入: 支持PDF(含扫描件)/DOCX/IMG/HTML/TXT等文件类型
处理流程:
主要利用Marker处理扫描版PDF(OCR识别),MarkitDown处理结构化文档,使用LLM增强可以对于文档中出现的图片进行描述以及提高pdf扫描件的识别准确性和处理速度,最后统一输出UTF-8编码的TXT文件。
在这里插入图片描述

这个工程是利用streamlit构建的一个简单的app,通过上传一个或多个文件,转换txt后批量下载一个zip文件。如果涉及扫描件或者图谱建议勾选“使用LLM提高准确性”。
实践挑战:上述流程主要是对各类文档进行文本提取,实际还需要对提取的文本进行清洗,提高文本质量,作为graphrag索引管道的输入,文本质量关系着构建的知识图谱的质量。

2、GraphRAG索引管道

**输入:**经过预处理的txt文档。
处理流程:
通过运行GraphRAG索引管道,会将输入语料库切成一系列TextUnits,这些TextUnits充当流程其余部分的可分析单元,并在我们的输出中提供细粒度的引用。关于知识图谱提取是使用配置的LLM(支持lm-studio本地大模型)来抽取这些实体、关系、社区等信息,使用Leiden 技术对图形执行分层聚类,这有助于全面了解数据集。
下图是基本的工作流:
在这里插入图片描述

默认情况下,管道的输出存储为本地Parquet文件,嵌入将写入默认配置的lancedb矢量存储。
实践挑战:

  1. 知识图谱提取需用到LLM,会消耗大量的token,估算token数量级是个挑战。
  2. 实践中使用的大模型不同,需要相应的优化提示词,graphrag提供的prompt auto tune效果不太理想。实际测试下来,在社区报告提取过程中经常报错,需要手动优化提示词。
  3. 管道输出的数据默认存储在本地文件(parquet和lancedb),如果结合其他数据源通过langchain或llamaindex实现多路召回,则需要实现指定数据库的接入。可以使用postgresql数据同AEG和pgvector拓展实现图和向量查询,或者分别接入单独的图数据库和向量数据库,例如neo4j和Milvus。
  4. 知识图谱质量评估也是一个挑战。不过可以通过图形化展示很直观的看到:点、边、社区等信息。其次,就是提供给LocalSearch中对应的entitylD,GlobalSearch中的community reqportID引用信息,并根据这些ID获取进一步信息,进行查询和可视化展示。
    下图仅为知识图谱可视化展示:
    在这里插入图片描述

这个工程分成前后端,可以上传对应的parque文件,存入postgres数据库,前端查询出实体和关系信息解析成2d或3d图形,同时提供parque文件对应的table。其中主要使用 react-force-graph-2d 和 react-force-graph-3d来构建2d或3d图形。目前可以通过查询模式,或者点击交互模式,找到对应节点信息和关系信息。

3、检索与问答引擎

GraphRAG的查询接口主要有LocalSearch、GlobalSearch和Driftsearch。

  • LocalSearch主要是将知识图谱中的结构化数据与输入文档中的非结构化数据相结合,能够在查询时使用相关实体信息来增强LLM上下文。它非常适合回答需要了解输入文档中提到的特定实体的问题。
  • GlobalSearch主要使用来自图的社区信息和社区报告作为LLM的上下文,对于需要聚合数据、集中信息来组成答案的全局查询有很好的支持。
  • Driftsearch具有灵活遍历的动态推理,结合了全局搜索和本地搜索的特征,以平衡计算成本和质量结果的方法生成详细的响应。

localsearch 和标准rag一样,只查找相关实体缩关联的社区信息,构建查询上下文,对于全局类型的问题不能很好的回答。而GlobalSearch过程需要遍历某一层的社区,如果对应的知识图谱巨大的,社区很多的话,需要消耗大量的token,花费很长时间才能得到最终答案。DriftSearch就是在两种采取一个权衡。

4、graphrag实践挑战

  • 1)实际使用速度比较慢,主要原因包括:
    • 初始化时间:加载知识图谱
    • 查询复杂度:通过向量查询实体,构建上下文
    • LLM调用:调用LLM,生成token

时间成本、价格成本主要是在llm调用上,可以通过提示词工程优化。目前能优化的点主要就是:提示词优化和增加大语言模型的理解次数。

  • 2)难以评估graphrag好坏,除了rag评估的主要指标,知识图谱质量评估也是一个挑战。
    改进RAG的两个方向:对数据进行处理,提高数据质量和索引。对检索生成的结果进行评估。

5、检索增强生成评估

Ragas 框架提供了一系列工具和技术,借助 Ragas可以合成生成一个多样化的测试数据集客观的衡量RAG系统性能。后面研究看看。

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

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

相关文章

Android Studio 日志系统详解

文章目录 一、Android 日志系统基础1. Log 类2. 日志级别 二、Android Studio 中的 Logcat1. 打开 Logcat2. Logcat 界面组成3. 常用 Logcat 命令 三、高级日志技巧1. 自定义日志工具类2. 打印方法调用栈3. 打印长日志4. JSON 和 XML 格式化输出 四、Logcat 高级功能1. 自定义日…

深度对比:Objective-C与Swift的RunTime机制与底层原理

1. RunTime简介 RunTime(运行时)是指程序在运行过程中动态管理类型、对象、方法等的机制。Objective-C 和 Swift 都拥有自己的运行时系统,但设计理念和实现方式有很大不同。理解 RunTime 的底层原理,是掌握 iOS 高级开发的关键。…

使用手机录制rosbag包

文章目录 简介录制工具录制步骤录制设置设置IMU录制频率设置相机分辨率拍照模式录制模式数据制作获取数据数据转为rosbag查看rosbag简介 ROS数据包(rosbag)是ROS系统中用于记录和回放传感器数据的重要工具,通常用于算法调试、系统测试和数据采集。传统上,rosbag依赖于ROS环…

浅谈PCB传输线(一)

前言:浅谈传输线的类型,以及传输线的一些行为特性。 1.传输线的种类 2.互连线被视为传输线的场景 3.传输线的行为特性*** 1.传输线的种类 PCB 中的信号传输线通常有两种基本类型: 微带线和带状线。此外,还有第三种类型–共面线(没有参考平面…

【angular19】入门基础教程(一):项目的搭建与启动

angular现在发展的越来越能完善了,在vue和react的强势竞争下,它迎来了自己的巨大变革。项目工程化越来越好,也开始拥抱了vite这种高效的构建方式。所以,我们有必要来学习这么一个框架了。 项目实现效果 nodejs环境 Node.js - v^…

在前端应用领域驱动设计(DDD):必要性、挑战与实践指南

引言 领域驱动设计(Domain-Driven Design,简称 DDD)起源于后端复杂业务系统建模领域,是 Eric Evans 在 2003 年提出的一套理论体系。近年来,随着前端工程化与业务复杂度的持续提升,"前端也要 DDD&quo…

一文了解 模型上下文协议(MCP)

MCP(Model Context Protocol,模型上下文协议)是由Anthropic公司于2024年11月推出的一项开放标准协议,旨在解决大型语言模型(LLM)与外部数据源和工具之间的通信问题。其核心目标是通过提供一个标准化的接口&…

面向全球的行业开源情报体系建设方法论——以易海聚实战经验为例

在全球数字化转型加速的背景下,如何精准锁定目标领域的关键信息源,构建可持续迭代的情报网络,已成为企业战略决策的核心能力。深圳易海聚信息技术有限公司(以下简称“易海聚”)深耕开源情报领域十余年,其自…

UDP协议详解+代码演示

1、UDP协议基础 1. UDP是什么? UDP(User Datagram Protocol,用户数据报协议)是传输层的核心协议之一,与TCP并列。它的主要特点是:​​​​ 无连接:通信前不需要建立连接(知道对端的…

基于大模型的胆总管结石全流程预测与临床应用研究报告

目录 一、引言 1.1 研究背景 1.2 研究目的与意义 1.3 研究方法和创新点 二、大模型在胆总管结石预测中的应用原理 2.1 大模型概述 2.2 模型构建的数据来源与处理 2.3 模型训练与优化 三、术前预测与准备 3.1 术前胆总管结石存在的预测 3.2 基于预测结果的术前检查方…

Windows避坑部署SkyworkAI/SkyReels-V2昆仑万维电影生成模型

#工作记录 前言 SkyworkAI/SkyReels-V2 是由昆仑万维开源的全球首个无限时长电影生成模型,基于扩散强迫框架结合多模态大语言模型、强化学习等技术,支持文本到视频、图像到视频等多种生成方式 开源项目地址: SkyworkAI/SkyReels-V2&#x…

iVX 图形化编程如何改写后端开发新范式

在数字化转型加速推进的当下,企业对后端系统的需求呈现爆发式增长。Gartner 最新报告指出,2025 年全球企业平均需完成 300 定制化应用开发,而传统编码模式下,单个项目平均交付周期长达 6 - 8 个月。与此同时,Redis、K…

策略模式:灵活的算法封装与切换

策略模式是一种行为型设计模式,它将一组算法封装成独立的类,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户端。本文将以一个收银系统为例,详细介绍策略模式的实现和应用。 什么是策略模式? 策略模式定义了算法…

第十四章-PHP与HTTP协议

第十四章-PHP与HTTP协议 一,HTTP 协议详解 HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的协议之一,用于客户端(如浏览器)与服务器之间的通信。它是 Web 技术的基石…

刀客独家 | 潘胜接管百度移动生态市场部

一、 据刀客doc向独家信源确认,百度移动生态事业群(MEG)市场部日前完成重要人事调整:潘胜已经接任市场负责人。 此前,根据雷锋网3月底的报道,百度云渠道生态总经理陈之若离职,原移动生态事业群…

Springoot、Flowable快速学习

应用背景: 公司打算做个考勤系统,涉及到请假、补卡之类的流程审批。想到了工作流,gitee、github上看了下开源的,有自研的和常见的Flowable‌、Activiti‌。首先放弃自研的,考虑到成熟度、社区生态,最后选择…

关于 【Spring Boot Configuration Annotation Processor 未配置问题】 的详细分析、解决方案及代码示例

以下是关于 Spring Boot Configuration Annotation Processor 未配置问题 的详细分析、解决方案及代码示例: 1. 问题描述 当使用 Spring Boot 的配置注解(如 ConfigurationProperties、Value、ConditionalOnProperty 等)时,若未…

Spring系列四:AOP切面编程 第一部分

AOP切面编程 💗AOP-官方文档🍝AOP 讲解🍝AOP APIs 💗动态代理🍝初探动态代理🍝动态代理深入🍝AOP问题提出📗使用土方法解决📗 对土方法解耦-开发最简单的AOP类&#x1f4…

【云计算】云计算中IaaS、PaaS、SaaS介绍

0 随着云计算、大数据、人工智能发展迅速,布局“云”已经是互联网企业共识。云计算的服务类型分为三种,分别为IaaS、PaaS、SaaS,这三个分别是什么意思,今天做一个简单的介绍和了解。 一、云计算 云计算是用户需求通过Internet获取计算资源,把计算资源包装成服务,提供给…

使用HYPRE库并行装配IJ稀疏矩阵指南: 矩阵预分配和重复利用

使用HYPRE库并行装配IJ稀疏矩阵指南 HYPRE是一个流行的并行求解器库,特别适合大规模稀疏线性系统的求解。下面介绍如何并行装配IJ格式的稀疏矩阵,包括预先分配矩阵空间和循环使用。 1. 初始化矩阵 首先需要创建并初始化一个IJ矩阵: #incl…