最近爆火的GraphRAG是什么,真的能用于商业应用吗?

GraphRag解决了什么问题

在朴素的RAG(自我检索生成模型)中,我们使用一个向量库作为我们的知识库。当用户提出查询时,该系统从向量库中匹配顶部K个元素作为上下文,并将这个上下文与提示和查询一起交给大型语言模型(LLM)进行回答。

现在,让我们假设这个向量库是指向企业知识的。有两个示例查询:

  1. xx产品的价格是多少?

  2. 去年技术团队的成果有哪些?

对于第一个问题,由于它是非常具体的,知识库的搜索可能会找到相应的信息块或常见问题解答。对于这种类型的问题,朴素的RAG通常会表现得很好。

对于第二个问题,这是一个宏观层面的查询,需要将企业知识库中所有与技术团队相关的项目收集起来并进行总结。关键在于找到与技术团队成果相关的各类信息,然后以某种方式关联起来以得出答案。这种方法也被称为 “connecting the dots”。你可以参考这篇文章了解更多:https://blog.curiosity.ai/️-connecting-the-dots-how-to-improve-rag-with-knowledge-graphs-092c32024326

在这里,“dots”指的是分散在不同地方的关键信息。那么,朴素RAG能否有效解决这类问题?虽然我们可以强制使用朴素RAG来寻找答案,但其效果很可能不会十分理想。

对于这类问题,我们的一种解决策略是预先整理信息。例如,我们首先抽取与技术团队相关的所有信息。当我们提出相关问题时,可以基于这些已经抽取的信息进一步进行总结。这个过程实际上就是构建知识图谱的过程。

举个例子,假设我们有大量文本,其中包含了技术团队执行的各种项目的信息。在我们构建的知识图谱中,我们有多个节点,代表技术团队和项目,并通过关系将它们连接起来。这样,当我们想了解他们完成了哪些工作时,只需关注与这些节点相关的部分,便可获悉技术团队已完成的任务。

这个构建知识图谱的过程通常可以用大型模型来完成,这也是GraphRAG模型提出的一个重要思想:预先提取并整理好信息,然后基于这些整理后的信息进行回答。

进一步来说,对于第二个问题,相关的提问方式有很多。例如:

  • 张三的成果有哪些?我们可以找到与张三关联的节点,了解他相关的项目信息。

  • 张三所在的后端团队的工作成果是什么?我们需要整合这个团队所有人员的工作成果。

  • 进一步上升层次,整个技术团队的成果是什么?类似地,我们需要将各个技术团队的成果集中起来。

这里呈现的是一个层次结构,因此在GraphRAG模型中,做了进一步的操作: 创建这种层次结构。我们预先整理出相关的关键信息,这样的层次结构是基于知识图谱获取的。因此,我们对这个知识图进行了类似的聚类,然后将这些实体的信息合并在一起,再对这些合并后的信息进行整理。从知识图谱到这里,GraphRAG采用了一些社区挖掘算法,这是GraphRAG的第二个重要思想。

那么,这套方法能否在商业环境中实施呢?我认为目前来说更像是一个原型。

  1. 首先,构建知识图谱的过程会产生大量噪声,这需要大量的人工清洗和校正,成本高昂。

  2. 其次,在计算方面,聚类过程消耗资源较大。

  3. 再者,新数据的加入也是问题。当有关键信息加入时,我们可能需要从头开始重建整个结构,这会产生大量的计算。这在知识图谱领域实际上是一个比较难解决的问题。

尽管如此,GraphRag作为一个新的RAG流程还是有必要学习一下的。

GraphRAG入门

环境配置

名称安装目的
Python 3.10下载(opens in a new tab)该库基于 Python 开发。
Poetry使用说明(opens in a new tab)Poetry 用于 Python 代码库的包管理和虚拟环境管理。

下载源码,安装依赖

git clone https://github.com/microsoft/graphrag.git   cd graphrag   poetry install   

如果你本地poetry install比较慢,可以在项目的pyproject.toml文件末尾添加:

[[tool.poetry.source]]   name = "aliyun"   url = "https://mirrors.aliyun.com/pypi/simple/"   

并执行poetry lock重新生成poetry.lock, 再执行poetry install即可

对数据建索引

首先让我们准备一个示例数据集:

mkdir -p ./ragtest/input   

现在让我们从可靠的来源获取查尔斯·狄更斯的《圣诞颂歌》的副本

curl https://www.gutenberg.org/cache/epub/24022/pg24022.txt > ./ragtest/input/book.txt   

在当前目录准备初始化:

poetry run poe index --init --root ./ragtest   

它会在当前目录创建output、prompts目录,以及.env文件和settings.yaml配置文件。

  • output目录,存储生成的图、以及总结、日志等信息。

  • prompts目录,存储默认的4个提示词文件:claim_extraction.txt、community_report.txt、entity_extraction.txt、summarize_descriptions.txt。

  • .env文件中只包含一个GRAPHRAG_API_KEY,用于设置你的LLM API_KEY。

  • settings.yaml 文件较为复杂,配置项目也较多,运行本项目只需要修改两个llm和embeddings,我这里直接使用OpenAI, 没错,就是这么土豪!

接着我们执行一条命令会自动索引数据,构建知识图谱,只是过程比较慢,耐心等待即可:

poetry run poe index --root ./ragtest   

查询

GraphRag的查询分为两种类型:

  1. 全局检索:可以简单理解为 用于回答需要聚合信息的问题

  2. 本地检索/局部检索:可以简单理解为 用于回答特定实体的问题

全局查询

poetry run poe query --root ./ragtest --method global '这个故事的主题是什么?'   

输出结果如下:

SUCCESS: Global Search Response: ### 故事主题概述      本故事的核心主题围绕着**转变与救赎**,通过Ebenezer Scrooge从吝啬鬼到慷慨大方的典范的转变,展现了个人改变的可能性和重要性。Scroogts (12, 15, 16, 20)]。      ### 人物互动与社会关系      故事通过Scrooge与Cratchit家庭以及各种鬼魂的互动,强调了慈悲、善良以及个人改变的重要性。这些互动不仅展示了个人改变的可能性,还突出, 16, 18, 20)]。      ### 社会影响与个人行为      Scrooge的旅程揭示了个体通过善行和慷慨对社区产生的积极影响。故事探讨了希望、韧性和圣诞精神的主题,通过Tiny Tim和Cratchit家庭的形象,展示了即使在困难中也能体现出圣诞精神的典范 [Data: Reports (16, 18)]。      ### 超自然引导与反思      故事还探讨了超自然向导在促使反思和改变中的作用,通过圣诞节过去、现在和未来的鬼魂的访问,促使Scrooge反思自己的生活和行为。此外,故警告来体现 [Data: Reports (12, 21)]。      ### 社会正义与家庭社区的重要性      最后,故事还深入讨论了社会不公和家庭及社区的重要性。Scrooge与Bob Cratchit和Tiny Tim的互动,不仅揭示了社会不公的主题,也强调了家庭和社区在个人生活中的价值 [Data: Reports (12)]。      综上所述,本故事通过Scrooge的转变之旅,探讨了救赎、慈悲、社会责任和个人改变的重要性,以及这些主题如何在个人、家庭和更广泛社区中产生深远影响。   

局部检索

poetry run poe query --root ./ragtest --method local 'Scrooge 这个故事的主人公是谁,他的主要关系是什么?'   

输出结果如下:

SUCCESS: Local Search Response: # 主人公与主要关系      ## 主人公简介      故事的主人公是Ebenezer Scrooge,他是《A Christmas Carol》中的中心人物。Scrooge最初被描绘为一个贪婪、吝啬的老人,对圣诞节和周围人的苦难漠不关心。他的性格和态度通 (18, 23)]。      ## 主要关系      ### 与Bob Cratchit的关系   Bob Cratchit是Scrooge的职员,一个收入微薄但心地善良的人。Scrooge最初对Cratchit的待遇冷酷无情,但在故事的结尾,Scrooge提高了Cratchit的工资,并成为了他家庭的恩人 [Data: Relationships (14); Entities (9, 28)]。      ### 与Jacob Marley的关系   Jacob Marley是Scrooge已故的商业伙伴,他的鬼魂在圣诞夜访问Scrooge,警告他改变自己的生活方式,以免死后遭受同样的命运。Marley的访问为Scrooge的转变开启了序幕 [Data: Relationships (63, 41); Entities (50, 44)]。      ### 与三个圣诞鬼魂的关系   三个圣诞鬼魂(圣诞节的过去、现在和未来)分别访问Scrooge,展示了他的过去、现在和可能的未来。这些访问深刻影响了Scrooge,促使他反思自己的生活并最终改变了他的行为和态度 [Data: Relationships (72, 86); Entities (47)]。      ### 与Tiny Tim的关系   Tiny Tim是Bob Cratchit的儿子,他的健康状况和幸福成为Scrooge改变的一个重要动力。Scrooge从一个冷漠的旁观者变成了Tiny Tim的守护者和家庭的支持者 [Data: Relationships (86)]。      ### 与侄子Fred的关系   Scrooge的侄子Fred代表了圣诞节的精神和乐观态度,尽管Scrooge最初拒绝了Fred的圣诞邀请,但最终他接受了Fred的善意,并与他和其他家庭成员建立了积极的关系 [Data: Entitiationships (52)]。      ## 结论      Ebenezer Scrooge的故事是一个关于救赎和转变的经典故事。通过与Bob Cratchit、Jacob Marley、三个圣诞鬼魂、Tiny Tim和他的侄子Fred等关键角色的互动,Scrooge从一个孤独、间的联系、同情和理解的重要性。   

总结

本文首先介绍了GraphRAG相比传统的朴素RAG的优势以及其在商业落地上的局限性,然后讲解了GraphRAG的基本使用,在实际操作过程中发现还是比较耗费token的,那token到底耗费在哪,其内部运行的流程又是怎么样的呢?带着这些问题,接下来我会用两篇图文并茂的文章详细介绍一下:

  1. GraphRAG如何构造知识图谱

  2. 全局检索和局部检索的流程

如何学习大模型 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 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值