HybridRAG|传统RAG集成GraphRAG的初步方案

现有知识库属于传统意义上的RAG应用。近期领导和同事最常问的问题就是:"GraphRAG调研怎么样了?"、"什么时候应该使用 GraphRAG ?"、"什么场景下应该使用传统RAG?"、"知识库使用的是传统RAG,如何与GraphRAG相结合呢?"。为了系统地解答这些问题,我做了一些调研总结工作,对这些问题进一步的探讨。先从多个方面解释GraphRAG和传统RAG的区别,然后给出二者如何结合HybridRAG初步思路

一、GraphRAG 和 传统RAG 的区别

1.1 多角度分析GraphRAG 和 传统RAG 汇总表格-1
区别项目传统RAGGraphRAG
检索机制利用嵌入和向量数据库进行信息检索。采用图形结构和图形数据库来管理数据。
上下文理解缺乏对数据的全面理解,主要依赖于相似度得分。通过捕获相关信息和相关实体来增强整体数据理解。
应用最适合一般问答和简单的信息检索任务。对于涉及结构化知识和复杂关系的复杂用例更有效。
复杂性更易于实施和部署。更复杂,需要知识图维护和管理。
可扩展性高度可扩展和适应性。扩展更复杂,需要修改图形结构。
维护维护成本低,更新简单。由于图形结构的复杂性,维护需求更高。
集成更容易集成到现有系统中。更复杂的集成,涉及图形数据库的管理。
学习曲线有了向量和嵌入的基本知识,更容易掌握。需要图谱分析和算法方面的额外专业知识。
成本由于基础设施更简单,通常成本较低。知识图谱维护与计算要求增加相关的成本更高。
优点实施简单,检索时间更快。在捕获复杂关系方面更出色,有效利用数据连接。
局限性在捕获数据之间的复杂关系方面效率较低。计算密集型,需要持续的图形管理。
1.2 多角度分析GraphRAG 和 传统RAG 汇总表格-2
区别项GraphRAG传统RAG
1)数据结构图数据结构-四元组:
- 实体节点
- 实体关系
- 实体属性
- 关系属性文本块的形式:
- 基于语义匹配文本块
示例
产品:华为P50 Pro
摄像头:莱卡四摄
品牌:华为
类别:智能手机
用户兴趣:高清摄影、适合游戏、旗舰机型
产品 属于 品牌
产品 属于 类别
产品 包含 用户兴趣
华为 P50 Pro是一款具备徕卡四射的华为旗舰机,搭载有XD Fusion Pro原色引擎、XD Optics计算光学技术、XD Fusion Pro超级滤光系统等华为影像技术,可以提升手机在拍摄时的成像质量。主摄采用了5000万像素原色镜头,可以记录拍摄场景的肉眼色彩观感。
小结可以轻松寻找特定条件,如 "其他使用莱卡摄像头的手机"如果无明确匹配文本块,需要依赖逻辑代码处理查询
2)检索机制示例:
用户询问:“有哪些适合长时间佩戴且有降噪功能的耳机?”
- 从“耳机”节点开始,扩展到多个相关产品节点。
- 精准推荐既舒适又降噪的耳机。示例:用户询问:“有哪些适合长时间佩戴且有降噪功能的耳机?”
- 用关键词搜索匹配文本片段。
- 结果可能仅部分符合需求。
小结处理复杂查询和跨特性检索更具优势处理复杂查询时,结果可能不够精确
3)增量/海量数据- 添加新节点和关系,轻松整合新信息。
- 结构化和层级设计提高检索效率。
- 分层检索方式快速定位信息。
- 社区检测较为耗资源。- 存储数据可能需要重新整理文本块。
- 内容的多重版本存储。
- 增加检索性能压力。
- 复杂重排序算法增加复杂性。
4)全局性(QFS)任务- 使用社区检测算法识别不同社区。
- 使用大规模语言模型总结社区信息。
- 运用Map-Reduce算法整合信息。
- 更好理解隐性关系,准确理解上下文。- 找到包含关键词的文本片段。
- 难以将片段串联成连贯语义文本。
- 回答不够全面。
5)应用场景及问题复杂度适合场景:
- 社交网络、企业内部、医疗领域、法律数据、产品推荐。
查询需求:
- 多跳关系查询、语义关联查询、知识推理查询、时序关联查询。
- 提供更强的导航和综合分析功能。适合处理具体事实性问题,复杂关系处理能力较弱。
6)成本- 索引创建和查询处理复杂性大
- 需要更多时间和token数量
- 学习/构建图谱相关成本较高,适用于特定场景- 简单查询任务处理更经。
- 学习/构建时间成本和token数量较。
1.3 多角度分析GraphRAG 和 传统RAG 详解
1)数据结构
  • GraphRAG|图数据结构-四元组:实体节点、实体关系、实体属性、关系属性。
产品:华为P50 Pro   摄像头:莱卡四摄   品牌:华为   类别:智能手机   用户兴趣:高清摄影、适合游戏、旗舰机型      产品 属于 品牌   产品 属于 类别   产品 包含 用户兴趣   
  • 传统RAG|文本块的形式:基于语义匹配文本块。
华为 P50 Pro是一款具备徕卡四射的华为旗舰机,搭载有XD Fusion Pro原色引擎、XD Optics计算光学   技术、XD Fusion Pro超级滤光系统等华为影像技术,可以提升手机在拍摄时的成像质量。主摄采用了5000万   像素原色镜头,可以记录拍摄场景的肉眼色彩观感。   

小结:GraphRAG优势体现在,可以轻松地在图中寻找:"其他使用莱卡摄像头的手机"。相比较传统RAG如果没有明确符合这一需求的文本块,就需要依赖逻辑代码来进行查询分解与处理计划。

2)检索机制

以产品推荐系统为例,当用户询问:“有哪些适合长时间佩戴且有降噪功能的耳机?”

  • GraphRAG:查询从“耳机”节点开始,扩展到与耳机相关的多个产品节点。系统先查找与“佩戴舒适度”有关的特性,再筛选出具备“降噪功能”的耳机。通过这种多跳的关联查询方式,GraphRAG能精准推荐既舒适又降噪的耳机给用户。

  • 而在传统RAG系统中,系统会用“智能手机”、“高质量视频”、“良好口碑”等关键词来搜索匹配的文本片段。但如果存储的文本没有同时涵盖所有关键词,结果可能仅部分符合需求,比如:推荐一款视频质量高但用户评价一般的手机。

因此,可以看出 GraphRAG 在处理复杂查询和跨特性检索时更具优势。

3)增量/海量数据

随着数据的增长,GraphRAG 可以通过添加新节点和关系,轻松整合新信息到现有知识图谱中,无需大幅调整原有数据。其结构化和层级设计让数据检索更高效。利用图遍历算法和层级导航技术,GraphRAG 能迅速聚焦目标信息,加快查询速度。

例如,用户可以从广泛的“电子产品”类别入手,逐步细化至“智能手机”,再到“适合游戏的高性能智能手机”。即使面对海量数据,这种分层检索方式也能通过有效导航快速定位所需信息。此外,GraphRAG 还能根据社区反馈和用户行为优化检索路径,提升准确性。不过,每当加入新数据时,GraphRAG 需要重新进行社区检测,这一步骤较为耗资源。

相比之下,传统RAG系统主要通过非结构化或半结构化的文本块来存储数据。随着知识库扩大,新增数据可能要求重新整理文本块,甚至导致内容的多重版本存储,这不仅降低存储效率,还增加管理难度。数据量的增加也会拖累检索性能,在处理复杂或模糊查询时,更容易受到无关数据的影响。

例如,当用户搜索“高性能智能手机”和“游戏”时,若数据库中有许多不相关的文本块,系统可能会返回大量冗余结果。为了排除这些无关内容,传统RAG系统可能需要使用复杂的重排序算法,这不仅增加了复杂性,还降低了检索速度。

4)全局性(QFS)任务

GraphRAG 查询与传统方法相比,利用知识图谱的结构化特性来处理元信息问题,如“2023年市场上新发布的搭载 骁龙8Gen2 芯片的手机有多少款?”

  • GraphRAG:为非结构化文本设计了一套框架,旨在通过高层次的语义理解来解答总结性问题。它使用社区检测算法来识别知识图谱中的不同社区,并借助大规模语言模型对这些社区进行总结。GraphRAG还运用Map-Reduce算法,从不同年份的相关社区收集“高端智能手机”的信息,并整合这些信息以提供全面答案。

  • 传统的RAG:可以找到包含“高端智能手机”、“发展趋势”或“近几年”等关键词的文本片段,但难以把这些片段串联成连贯的语义文本,导致回答往往不够全面。

小结:相比之下,GraphRAG能更好地理解知识图谱中的隐性关系,从而更准确地理解上下文;而传统RAG主要依靠显性文本匹配,对于隐性关系的理解能力较弱。

  • 知识扩展:元数据信息(Metadata)是指描述其他数据属性的信息,比如创建日期、作者、位置和文件大小等,在数据管理中有重要作用。元信息问题则是指那些需要查询或处理元信息的问题,例如:“这张照片是谁拍摄的?”、“这份报告是什么时候编写的?”。在知识图谱中,元信息可能包括实体的类型、属性及其相互关系,因此解决元信息问题通常需要从图谱中提取或推导相关元信息。
5)应用场景及问题复杂度

选择传统RAG还是GraphRAG应基于数据特性和查询需求,具体区别如下:

适合GraphRAG的数据特性:

  • 社交网络:如用户间的朋友、家庭成员和同事关系。

  • 企业内部:如组织架构、供应链和客户关系。

  • 医疗领域:如疾病、症状、治疗方法及药品的关联。

  • 法律数据:如法律条文间的引用关系及案例分析。

  • 产品推荐:如产品、用户偏好、浏览记录之间的关联。

另外考虑因素还包括查询需求:

  • 多跳关系查询:例如:“某人的同事的朋友里谁在某公司工作?”

  • 语义关联查询:例如:“哪些公司生产某类产品且有官方认证?”

  • 知识推理查询:例如:“根据症状和病史推测可能的疾病并提供治疗建议?”

  • 时序关联查询:例如:“查询某公司近十年的投资和并购历史?”

对于上述复杂查询任务,GraphRAG提供了更强的概括综合分析功能。而传统RAG则更适合处理具体事实性的问题,在处理复杂关系方面的能力较弱。

6)成本

尽管GraphRAG在数据语义扩展性上表现优异,但在实际应用中,其索引创建和查询处理过程中的复杂性和计算开销较大。特别是在构建索引阶段,GraphRAG需要进行实体和关系的提取、生成描述信息、社区检测并生成摘要;而在查询处理时,则需检索更多的节点、关系和社区信息。这些额外子查询对于简单的查询任务来说,尤其当传统RAG也能有效处理时,可能显得不够经济。

虽然GraphRAG生成的结果更详尽,但它所需的时间成本token数量(即LLM调用次数)几乎是传统RAG的数倍。因此,在使用GraphRAG时,需要权衡其性能与成本,确保在适当的场景中发挥其优势。

二、HybridRAG:GraphRAG与传统RAG系统集成方案

评测:HybridRAG vs VectorRAGvs GraphRAG

从评测结果中我们可以看到:

  • HybridRAG在忠实度和答案相关性方面表现最好

  • GraphRAG在上下文精度方面表现最佳

  • VectorRAG和HybridRAG在上下文召回率方面达到了满分 这些结果表明,HybridRAG通过结合VectorRAG和GraphRAG的优点,实现了更平衡和有效的性能。

最佳案例分析

为了更好地理解HybridRAG的优势,让我们来看一个具体的例子: 假设关于某公司财务状况的问题:“公司2023年第二季度的净利润是多少?”

  • VectorRAG可能会检索到包含"2023年第二季度"和"净利润"这些关键词的文本段落;

  • GraphRAG可能会在知识图谱中找到"公司-财务指标-净利润"这样的路径,并提取相关数据;

  • HybridRAG则会同时利用这两种信息:从向量检索中获取更广泛的上下文,如公司整体财务状况的描述从知识图谱中获取精确的数值信息和相关实体间的关系。

最终,HybridRAG生成的答案可能会是:“根据公司2023年第二季度财报,净利润为1000万美元,较上年同期增长15%。这一增长主要得益于公司在新兴市场的扩张和成本控制措施的实施。”

HybridRAG生成的答案不仅提供了准确的数字信息,还包含了相关的背景和解释,展示了HybridRAG融合不同来源信息的能力。

总体而言,GraphRAG在处理复杂且高度关联的数据集及需要深度关联理解的查询时,展现了强大能力。它提高了信息查找的准确性和深度,尤其适用于多级分析和推导的场景。不过,这种性能提升也增加了系统的复杂度和资源消耗。因此,在决定是否采用GraphRAG前,必须仔细评估具体应用场景、数据结构及常见的查询模式。

在以下情况下,传统RAG仍是更优选择:

  • 简单且基于事实的查询:例如:“iPhone16的发布日期是什么?”,传统RAG能更快、更直接地给出答案。

  • 较低的实施难度:在数据集较小或应用场景简单时,传统RAG配置和维护更简便,易于快速部署和使用。

在实际应用中,单一的搜索策略往往难以满足所有需求。为了达到最佳效果和准确性,可以考虑建立一个智能路由,该系统根据问题类型和数据特点,动态选择最合适的多路召回策略。关键是构建一个强大的路由机制(借助LLM),以便智能地引导查询至最佳搜索路径。

三、总结

在GraphRAG与标准RAG之间查询性能的表现会根据具体的应用场景有所不同,整体来看,两者之间的结果并无显著差异。因此,在选择使用GraphRAG还是标准RAG时,应基于具体的使用案例来决定。鉴于标准RAG具有较低的复杂性和成本优势,建议在初期测试阶段优先考虑使用标准RAG。然而,对于需要处理大规模文本以及要求更为详尽答案的情形,GraphRAG可能会带来更概括、更全面的答案。

四、开源项目参考

Kotaemon,它是一个非常棒的开源RAG UI,允许你在其UI组件中实现传统RAG和Graph RAG。并且它还对 GraphRAG 支持了更多拓展,比如微软的GraphRAG只支持txt和csv的文件格式,但是Kotaemon支持的文件格式更丰富。并且对于传统RAG模式来说,使用了hybrid检索和rerank等常规的RAG优化策略

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

在这里插入图片描述

### RAGGraphRAG 的比较 #### 架构差异 Retrieval-Augmented Generation (RAG) 结合了检索模型和生成模型的优点,在处理自然语言理解和生成任务时表现出色[^1]。相比之下,GraphRAG不仅继承了RAG的特点,还引入了图结构数据的支持,使得该架构能够更好地捕捉实体之间的关系。 #### 数据表示形式的不同 对于传统文本输入,RAG依赖于预训练的语言模型来编码查询并从大规模文档集合中检索相关信息片段;而GraphRAG则进一步利用图形数据库中的节点和边作为额外的知识源,增强了对复杂关联的理解能力。 #### 应用场景对比 - **通用问答系统** 对于基于纯文本的简单问答回答,标准版RAG已经可以提供令人满意的性能表现。它能够在不牺牲太多效率的情况下实现高质量的回答生成。 - **领域特定应用** 当涉及到更复杂的行业知识或专业知识时,比如医疗保健、法律咨询等领域,则更适合采用GraphRAG方案。因为这类情况下往往存在大量相互联系的概念需要被有效建模,从而提高系统的准确度与可靠性。 ```python # 示例代码展示如何初始化两种不同类型的模型 from transformers import RagTokenizer, RagTokenForGeneration, AutoModelForSeq2SeqLM rag_model_name = "facebook/rag-token-nq" graph_rag_model_name = "custom/graph-rag" tokenizer = RagTokenizer.from_pretrained(rag_model_name) model = RagTokenForGeneration.from_pretrained(rag_model_name) graph_tokenizer = RagTokenizer.from_pretrained(graph_rag_model_name) graph_model = AutoModelForSeq2SeqLM.from_pretrained(graph_rag_model_name) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值