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

RAG与GraphRAG的区别

文章目录

  • 前言
  • RAG 的特点
    • 核心思想
    • 数据结构
    • 优势
    • 局限性
    • 应用场景
  • GraphRAG 的特点
    • 核心思想
    • 数据结构
    • 优势
    • 局限性
    • 应用场景
  • 如何选型
  • 示例场景
    • 多跳推理问题
    • 推荐系统中的复杂关系
    • 社交网络中的影响力分析
  • 总结


前言

RAG (Retrieval-Augmented Generation) 和 GraphRAG (Graph-Based Retrieval-Augmented Generation) 是两种用于生成增强型问答的技术,但它们的核心数据结构和适用场景有所不同。


RAG 的特点

核心思想

RAG结合了信息检索和生成模型:

  • 首先通过检索模块(如向量数据库、全文检索系统等)从外部知识库中检索相关文档。
  • 然后将检索到的文档作为上下文输入到生成模型(如GPT)中生成答案。

数据结构

使用向量数据库(如Pinecone、Milvus、Elasticsearch)来存储知识点,检索方式通常基于语义搜索。

优势

  • 适合非结构化文本数据(如文章、网页、PDF等)的问答。
  • 适配复杂的语言生成任务,依赖强大的生成模型。
  • 实现相对简单,扩展性高。

局限性

  • 无法处理深度关联性强的多跳推理问题。
  • 检索结果依赖于向量召回质量,关系链较弱。

应用场景

  • 文档问答系统、搜索引擎增强回答。
  • FAQ 问答、知识库整合生成。

GraphRAG 的特点

核心思想

GraphRAG结合图数据库(如Neo4j、TigerGraph)与生成模型:

  • 首先通过图数据库从结构化数据中检索相关节点和路径。
  • 然后将这些结构化的知识路径作为生成模型的输入上下文,用于答案生成。

数据结构

使用图数据库,以节点和边的形式存储实体和关系,适合存储高度关联的数据。

优势

  • 擅长多跳推理关系型问答(e.g., “A和B通过什么关系相关?”)。
  • 可以轻松处理结构化和半结构化的数据,尤其是复杂的知识图谱。
  • 数据更新和查询效率高,适合实时推理。

局限性

  • 对于非结构化文档支持较弱,依赖预先构建的图谱。
  • 需要额外的工作将非结构化数据转化为结构化知识图谱。

应用场景

  • 知识图谱问答系统、企业内部知识库。
  • 生物医药(如蛋白质-基因关系)、社交网络分析、推荐系统。

如何选型

RAG 更适合的场景

  1. 数据类型:主要是非结构化文本(如大规模文档、文章等)。
  2. 目标:希望快速构建问答系统,专注于生成的语言质量。
  3. 复杂度 :问题逻辑简单,主要依赖检索到的上下文生成答案。
  4. 实现成本:向量数据库和生成模型的集成成本较低。

GraphRAG 更适合的场景

  1. 数据类型:具有明确的实体和关系(如知识图谱)。
  2. 目标:需要多跳推理、复杂关系挖掘或动态关联查询。
  3. 复杂度:问题涉及深度关联性或推理,生成答案前需要多步检索。
  4. 实现成本:已构建图数据库,或者需要系统性利用图谱存储数据。

示例场景

多跳推理问题

问题:
“哪位作家通过《某本书》间接影响了现代科技的创新?”

  • 数据类型:
    • 作家、书籍、领域、人物、贡献等以结构化形式存储。
    • 图数据库中可能包含如下关系:
      • 作家 → 写作 → 书籍
      • 书籍 → 主题 → 科技领域
      • 科技领域 → 影响 → 科学家
  • RAG 的处理流程:
    1. 检索模块从语料库中召回相关文档,如:
      • 文档 A:“作家 X 写了《某本书》。”
      • 文档 B:“《某本书》探讨了科技的可能性。”
      • 文档 C:“某科学家基于该书的理论做了创新工作。”
    2. 生成模块将这些文档拼接并尝试生成答案。

RAG 的问题:

  • 无法显式建立跨文档的逻辑链条。生成的答案可能笼统(如缺乏具体的推理逻辑)。
  • 如果检索到的文档不完整,答案会有信息缺失。

GraphRAG 的处理流程:

  1. 使用图数据库查询构建显式路径:

    • 查询:“找到作家与现代科技领域的影响路径。”
    • 图数据库返回的路径可能是:
      作家 X → 写作 → 《某本书》 → 主题 → 科技领域 → 影响 → 某科学家
      
  2. 将路径结果传递给生成模块,模型基于显式逻辑链生成答案,如:

    • “作家 X 写作的《某本书》探讨了科技领域,该领域后来影响了某科学家的创新工作。”

GraphRAG 的优势:

  • 数据库显式建立了从作家到科技领域的推理路径,无需依赖生成模型推理多跳关系。
  • 答案更具逻辑性和准确性。

推荐系统中的复杂关系

问题:
“推荐一个和用户兴趣相关、同时朋友也喜欢的电影。”

  • 数据类型:
    • 图数据库中包含:
      • 用户 → 兴趣 → 类型
      • 类型 → 电影
      • 用户 → 朋友 → 喜欢的电影
  • RAG 的处理流程:
    1. 检索模块召回与“用户兴趣相关的电影”或“朋友喜欢的电影”的文档。
    2. 生成模块拼接检索结果后生成答案。

RAG 的问题:

  • 难以同时满足“用户兴趣相关”和“朋友喜欢”的双重条件,可能生成偏颇或不相关的推荐结果。
  • 无法直接处理“朋友关系”这种多跳关联性。

GraphRAG 的处理流程:

  1. 使用图数据库查询构建显式路径:

    • 查询:“找到用户兴趣和朋友喜欢的电影交集。”
    • 图数据库返回路径:
      用户 A → 兴趣 → 动作类型 → 电影《X》  
      用户 A → 朋友 → 喜欢 → 电影《X
  2. 将查询结果传递给生成模块,生成答案:

    • “推荐电影《X》,它既符合您的兴趣(动作类型),也是您朋友喜欢的作品。”

GraphRAG 的优势:

  • 精准找到满足多条件(兴趣和朋友喜欢)交集的答案。
  • 图数据库高效处理复杂关联,比语义检索更可靠。

社交网络中的影响力分析

问题:
“用户 A 和用户 B 之间通过哪些共同兴趣或朋友相连?”

  • 数据类型:
    • 用户、兴趣、好友关系等以图形式存储:
      • 用户 → 兴趣 → 兴趣节点
      • 用户 → 朋友 → 用户
  • RAG 的处理流程:
    1. 检索相关文档,可能返回:
      • 文档 A:“用户 A 对兴趣 X 感兴趣。”
      • 文档 B:“用户 B 也喜欢兴趣 X。”
      • 文档 C:“用户 A 和用户 C 是朋友。”
      • 文档 D:“用户 C 和用户 B 是朋友。”

RAG 的问题:

  • 无法直观地构建用户 A 和用户 B 的多跳关系链。
  • 生成答案依赖于召回文档的完整性,容易遗漏信息。

GraphRAG 的处理流程:

  1. 图数据库执行路径查询:

    • 查询:“用户 A 和用户 B 的所有可能连接路径。”
    • 图数据库返回的路径可能是:
      用户 A → 兴趣 → X → 兴趣 → 用户 B  
      用户 A → 朋友 → 用户 C → 朋友 → 用户 B
      
  2. 生成模块基于路径生成答案:

    • “用户 A 和用户 B 通过共同兴趣 X 和朋友 C 相关联。”

GraphRAG 的优势:

  • 显式路径构建,保证答案的准确性和可解释性。
  • 数据库查询效率高,无需担心遗漏信息。

总结

  1. GraphRAG 的适用性强于 RAG 的场景
  • 多跳推理:涉及多个实体和关系时(如知识图谱、社交网络)。
  • 多条件约束:需要同时满足多个条件或属性筛选(如推荐系统)。
  • 复杂关系查询:需要显式路径推理的场景,避免生成模型逻辑混乱。
  1. 建议
  • 如果你的任务有明确的结构化数据和复杂关系,可以优先选择 GraphRAG
  • 如果数据是非结构化文档,RAG 更适合处理直接检索的问答场景。
  • 如果数据来源是文档和语料库,且追求简单易用和广泛适配性,选择 RAG
  • 如果已有知识图谱或需要构建基于关系的复杂问答系统,选择 GraphRAG
  • 在实际项目中,还可以结合两者:
    • RAG for initial context retrieval(从文本中检索知识)。
    • GraphRAG for reasoning(补充多跳推理的能力)。

相关文章:

RAG与GraphRAG的区别

文章目录 前言RAG 的特点核心思想数据结构优势局限性应用场景 GraphRAG 的特点核心思想数据结构优势局限性应用场景 如何选型示例场景多跳推理问题推荐系统中的复杂关系社交网络中的影响力分析 总结 前言 RAG (Retrieval-Augmented Generation) 和 GraphRAG (Graph-Based Retr…...

Ubuntu环境通过Ollama部署DeepSeek-R1模型教程

Ollama 是一个专注于简化模型部署和推理的工具,特别适合在生产环境中快速部署和运行模型。 以下是如何使用 Ollama 来安装、部署和使用模型的步骤: 一. 安装 Ollama 首先,你需要安装 Ollama。Ollama 通常支持多种平台(如 Linux、…...

使用Ollama 在Ubuntu运行deepseek大模型:以deepseek-r1为例

deepseek大模型上热搜啦! 咱们来亲身感受下DeepSeek模型的魅力吧! 整个操作流程非常简单方便,只需要2步,先安装Ollama,然后执行大模型即可。 支持的deepseek-r1模型 deepseek-r1 DeepSeek-R1-Distill-Qwen-1.5B …...

【中间件快速入门】什么是Redis

现在后端开发会用到各种中间件,一不留神项目可能在哪天就要用到一个我们之前可能听过但是从来没接触过的中间件,这个时候对于开发人员来说,如果你不知道这个中间件的设计逻辑和使用方法,那在后面的开发和维护工作中可能就会比较吃…...

poi在word中打开本地文件

poi版本 5.2.0 方法1:使用XWPFFieldRun(推荐) 比如打开当前相对路径的aaaaa.docx XWPFFieldRun run paragraph.createFieldRun();CTRPr ctrPr run.getCTR().addNewRPr();CTFonts font ctrPr.addNewRFonts();// 设置字体font.setAscii(&quo…...

27. C语言 强制类型转换详解

本章目录: 前言强制类型转换(Type Casting)强制类型转换的语法示例1:将整数转换为浮点数输出结果: 代码解析: 整数提升(Integer Promotion)示例2:整数提升输出结果: 代码…...

【1】阿里面试题整理

[1]. Kafka如何保证数据一致性? Kafka主要通过副本机制、ISR机制、持久化机制以及事务机制等多种方式共同保证了数据的一致性。副本机制是Kafka确保数据一致性的基础,使用ISR(In-Sync Replica)机制来处理副本之间的同步,将消息持久化到硬盘中…...

MySQL知识点总结(十三)

执行逻辑备份要具备哪些条件,其优缺点在哪。 逻辑备份是温备,创建逻辑备份文件时,MySQL服务器必须处于运行状态,其他应用程序在逻辑备份期间不能修改但可以执行读取操作。逻辑备份会把表结构和数据转换为SQL语句保存。 逻辑备份…...

linux 环境安装 dlib 的 gpu 版本

默认使用 pip 安装的 dlib 是不使用 gpu 的 在国内社区用百度查如何安装 gpu 版本的 dlib 感觉信息都不太对,都是说要源码编译还有点复杂 还需要自己安装 cuda 相关的包啥的,看着就头大 于是想到这个因该 conda 自己就支持了吧,然后查了一下…...

Meta 计划 2025 年投资 650 亿美元推动 AI 发展

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

第05章 12 可视化热量流线图一例

下面是一个使用VTK(Visualization Toolkit)和C编写的示例代码,展示如何在一个厨房模型中可视化热量流线图,并按照热量传递速度着色显示。这个示例假设你已经安装了VTK库,并且你的开发环境已经配置好来编译和运行VTK程序…...

微信小程序压缩图片

由于wx.compressImage(Object object) iOS 仅支持压缩 JPG 格式图片。所以我们需要做一下特殊的处理: 1.获取文件,判断文件是否大于设定的大小 2.如果大于则使用canvas进行绘制,并生成新的图片路径 3.上传图片 async chooseImage() {let …...

2025_1_27 C语言内存,递归,汉诺塔问题

1.c程序在内存中的布局 代码段(Code Segment) 位置:通常位于内存的最低地址。 用途:存储程序的可执行指令。 特点:只读,防止程序运行时被修改。数据段(Data Segment) 位置&#xf…...

K8s运维管理平台 - xkube体验:功能较多

目录 简介Lic安装1、需要手动安装MySQL,**建库**2、启动命令3、[ERROR] GetNodeMetric Fail:the server is currently unable to handle the request (get nodes.metrics.k8s.io qfusion-1) 使用总结优点优化 补充1:layui、layuimini和beego的详细介绍1.…...

舆情系统的情报搜索功能

引言 随着信息技术的发展和网络媒体的快速发展,舆情监测已成为各行各业不可或缺的工具。舆情系统中的情报搜索功能,作为其核心组成部分,能够帮助用户迅速、全面地捕捉互联网、社交平台、新闻媒体等渠道中的各类信息和舆论动态。情报搜索不仅提…...

简易CPU设计入门:控制总线的剩余信号(二)

项目代码下载 请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 CSDN文章:下载本项目代码 上述链接为本项目…...

[创业之路-270]:《向流程设计要效率》-2-企业流程架构模式 POS架构(规划、业务运营、支撑)、OES架构(业务运营、使能、支撑)

目录 一、POS架构 二、OES架构 三、POS架构与OES架构的差异 四、各自的典型示例 POS架构典型示例 OES架构典型示例 示例分析 五、各自的典型企业 POS架构典型企业 OES架构典型企业 分析 六、各自典型的流程 POS架构的典型流程 OES架构的典型流程 企业流程架构模式…...

9【如何面对他人学习和生活中的刁难】

我们在学习的过程中,会遇到很多来自于他人的刁难与嘲讽,如果处理不好,这会大大影响我们的心情,从而影响学习的效率 我建议,如果你学习或生活中也遇到了类似的问题,不要去生气,更不要发生冲突&a…...

脚本/编译安装nginx1.11.10

1、通过脚本安装nginx1.11.10 在保证yum源正常(国内源)的情况下,这个脚本是可以正常安装的–with-pcre/usr/src/pcre-8.12/ # 如果自带的pcre无效就使用这个自定义pcre的路径(pcre安装在第3步骤) #!/bin/bash#安装nginx所需依赖包 yum -y install pcre* pcre-dev…...

基于迁移学习的ResNet50模型实现石榴病害数据集多分类图片预测

完整源码项目包获取→点击文章末尾名片! 番石榴病害数据集 背景描述 番石榴 (Psidium guajava) 是南亚的主要作物,尤其是在孟加拉国。它富含维生素 C 和纤维,支持区域经济和营养。不幸的是,番石榴生产受到降…...

基于PostgreSQL的自然语义解析电子病历编程实践与探索(上)

一、引言 1.1研究目标与内容 本研究旨在构建一个基于 PostgreSQL 的自然语义解析电子病历编程体系,实现从电子病历文本中提取结构化信息,并将其存储于 PostgreSQL 数据库中,以支持高效的查询和分析。具体研究内容包括: 电子病历的预处理与自然语言处理:对电子病历文本进…...

5.1.3 软件过程评估

文章目录 软件能力成熟度模型CMM能力成熟度模型集成 软件能力成熟度模型CMM 软件能力成熟度模型是用于评价软件承接方能力的方法,通过评价,也可以让承接方看到自身缺陷,不断改进和提升软件过程能力。分为5个成熟度等级,初始级、可…...

【JavaEE】Spring(5):Mybatis(上)

一、什么是Mybatis Mybatis是一个持久层的框架,它用来更简单的完成程序和数据库之间的交互,也就是更简单的操作和读取数据库中的数据 在讲解Mybatis之前,先要进行一些准备工作: 1. 为项目添加 Mybatis 相关依赖 2. 创建用户表以…...

记录 | MaxKB创建本地AI智能问答系统

目录 前言一、重建MaxKBStep1 复制路径Step2 删除MaxKBStep3 创建数据存储文件夹Step4 重建 二、创建知识库Step1 新建知识库Step2 下载测试所用的txtStep3 上传本地文档Step4 选择模型补充智谱的API Key如何获取 Step5 查看是否成功 三、创建应用Step1 新建应用Step2 配置AI助…...

【Spring】Spring启示录

目录 前言 一、示例程序 二、OCP开闭原则 三、依赖倒置原则DIP 四、控制反转IOC 总结 前言 在软件开发的世界里,随着项目的增长和需求的变化,如何保持代码的灵活性、可维护性和扩展性成为了每个开发者必须面对的问题。传统的面向过程或基于类的设计…...

八股——Java基础(四)

目录 一、泛型 1. Java中的泛型是什么 ? 2. 使用泛型的好处是什么? 3. Java泛型的原理是什么 ? 什么是类型擦除 ? 4.什么是泛型中的限定通配符和非限定通配符 ? 5. List和List 之间有什么区别 ? 6. 可以把List传递给一个接受List参数的方法吗? 7. Arra…...

游戏策划的分类

游戏策划是一个复杂而多面的领域,涉及游戏设计、玩法创新、故事叙述等多个方面。根据不同的职责和工作内容,游戏策划可以分为以下几类: 1. 系统策划 • 职责:负责游戏的整体系统设计,包括角色系统、技能系统、装备系统…...

面试场景问题集合

文章目录 项目地址一、1. 电商平台中订单未支付过期如何实现自动关单?2. 如果你的系统的 QPS 突然提升 10 倍你会怎么设计? 项目地址 教程作者:教程地址: 代码仓库地址: 所用到的框架和插件: dbt airflo…...

观察者模式 - 观察者模式的应用场景

引言 观察者模式(Observer Pattern)是设计模式中行为型模式的一种,它定义了对象之间的一对多依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会自动收到通知并更新。观察者模式广泛应用于事件处理系统…...

基于STM32的循迹小车设计与实现

1 系统方案设计 根据系统设计功能,展开基于STM32的循迹小车设计,整体设计框图如图2.1所示。系统采用STM32单片机作为控制器,通过L298驱动器控制两个直流电机实现对小车的运动控制,两路红外模块实现黑线的检测,HC-SR04超声波模块实…...