前言
传统的 RAG 方法在处理针对整个文本语料库的全局性问题时存在不足,例如查询:“数据中的前 5 个主题是什么?”
对于此类问题,是因为这类问题本质上是查询聚焦的摘要(Query-Focused Summarization, QFS)任务,而不是传统的显式检索任务。
Graph RAG 通过使用 LLM 构建基于图的文本索引,从源文档构建知识图谱。通过构建知识图谱,能够将复杂的、大规模文本数据集转化为易于理解和操作的知识结构,以便更好地理解实体(如人物、地点、机构等)之间的相互关系。
一、方法
1.1 源文档分块
该步骤是 Graph RAG 流程的基础,它决定了后续构建知识图谱和生成摘要的质量。主要需要考虑的就是源文档的分割粒度,需要决定输入文本从源文档中提取出来后,应该以何种粒度分割成文本块以供处理。这个决策会影响到后续步骤中 LLM 提取图索引元素的效率和效果。块大小的主要影响如下:
-
LLM 上下文窗口:文本块的长度会影响 LLM 调用的次数以及上下文窗口的召回率(recall)。较长的文本块可以减少对 LLM 的调用次数,但可能会因为更长的上下文而导致信息提取的召回率下降。
-
召回率与精度的平衡:在提取过程中,需要平衡召回率和精度。较长的文本块可能提高召回率,但可能会牺牲精度。
块大小的影响
上图展示了在 HotPotQA 数据集上,使用不同大小的文本块(600、1200、2400 tokens)和 通用实体提取提示(entity extraction prompt)与 gpt-4-turbo 进行单次提取时,检测到的实体引用数量的变化。结果表明,使用较小的文本块(600 tokens)能够提取出几乎是使用较大文本块(2400 tokens)两倍的实体引用。
1.2 信息抽取(实例提取)
该步骤是构建图索引的关键环节,它确保了从文本数据中提取出有用的结构化信息(KG)(识别并提取源文本中每个文本块的图节点和边的实例),为后续的社区检测和摘要生成打下了基础。
方法:
-
KG构建:使用 LLM + prompt 来识别上一步得到的文本块中的所有实体,包括它们的名称、类型和描述。然后,识别实体之间的关系,包括源实体、目标实体以及关系的描述。
-
附加协变量提取:除了实体和关系之外,还可以使用次级提取提示来提取与提取的节点实例相关的附加协变量(covariates)。默认的协变量提示旨在提取与检测到的实体相关的声明,包括主题、对象、类型、描述、源文本跨度以及开始和结束日期。
-
漏提取兜底:为了平衡效率和质量的需要,使用多轮“gleanings”来鼓励 LLM 检测在先前提取轮次中可能遗漏的任何实体。这是一个多阶段过程,首先要求 LLM 评估是否所有实体都已被提取,如果 LLM 响应有遗漏,则使用一个提示来鼓励 LLM 提取这些遗漏的实体。
使用 GPT-4 Turbo 从私有数据集构建的 LLM 生成的知识图谱。
上图中每个圆圈代表一个实体(例如,一个人、一个地点或一个组织),实体大小表示该实体具有的关系数量,颜色表示相似实体的分组。颜色分区是一种建立在图形结构之上的自下而上的聚类方法,它使我们能够回答不同抽象层次的问题。
1.3 实例提取->实例摘要
使用 LLM 提取实体、关系和声明的描述,这本身就是一种抽象摘要的形式。LLM 需要能够创建独立有意义的摘要,这些摘要可能暗示了文本中未明确陈述的概念(例如,隐含的关系)。通过摘要化过程,能够将大量文本信息浓缩成更加简洁、易于处理的格式,这有助于提高后续处理步骤的效率。并且,在处理长文本时,实例摘要有助于避免信息在大型语言模型的长上下文中被忽略或丢失的问题。
1.4 实例摘要->图社区
图模型构建-同质无向加权图:将实例摘要阶段得到的信息构建成一个同质无向加权图。在这个图中,实体作为节点,它们之间的关系作为边。边的权重可以表示为检测到的关系实例的归一化计数,这有助于反映关系的强度或频率。
社区检测算法:
-
社区划分:使用社区检测算法将图划分为多个社区(communities)。这些社区由彼此之间联系更紧密的节点组成,相对于图中的其他节点,社区内部的节点之间的连接更为频繁。
-
Leiden算法:文章中特别提到了使用 Leiden 算法进行社区检测,因为该算法能够有效地恢复大规模图的层次社区结构。Leiden 算法考虑了社区的模块化,能够提供不同层次的社区划分。
1.5 图社区到社区摘要
为每个社区创建报告式的摘要,这些摘要独立于其他社区,但共同构成了对整个数据集全局结构和语义的理解。社区摘要本身对于理解数据集的全局结构和语义非常有用,可以作为在没有具体问题时对整个语料库进行探索和理解的工具。
1.6 社区摘要到社区答案再到全局答案
-
准备社区摘要 随机分配:社区摘要被随机打乱并分成预定大小的块。这样做是为了保证相关信息分散在不同的上下文窗口中,而不是集中在一个窗口中,从而避免了信息的潜在丢失。
-
生成中间答案(Map社区答案)
-
并行生成:对于每个社区摘要块,LLM 被用来并行生成中间答案。同时,LLM 还被要求为生成的答案生成一个0到100之间的有用性得分,以指示生成的答案对目标问题的有用程度。
-
过滤:得分为0的答案将被过滤掉,因为它们对回答问题没有帮助。
-
汇总成全局答案(Reduce到全局答案)
-
排序和汇总:根据有用性得分,将中间社区答案按降序排序,并将它们逐步添加到一个新的上下文窗口中,直到达到令牌限制。
-
生成最终答案:当所有相关的部分答案都被考虑后,最终的上下文窗口被用来生成返回给用户的全局答案。
二、实验
原文使用了两个大规模数据集来验证Graph RAG方法的有效性:一个包含1669个文本块的播客转录数据集(约100万个token)和一个包含3197个文本块的新闻文章数据集(约170万个token)。相当于10本小说。
通过与naive RAG和全局文本摘要方法的比较,GraphRAG在全面性和多样性上优势明显,尤其是在使用8k tokens上下文窗口时,测试的最小上下文窗口大小(8k)在所有比较中普遍表现更好,尤其是在全面性上(平均胜率为58.1%),同时在多样性(平均胜率=52.4%)和授权性(平均胜率=51.3%)上与更大的上下文尺寸表现相当。
还有一个私有数据集上的实验,链接如下:https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
如何学习大模型 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 的正确特征了。