AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


GraphRAG落地难,微软工业级RAG+Agent实施方案

发布日期:2025-03-14 21:01:26 浏览次数: 1527 来源:CourseAI
推荐语

微软GraphRAG技术如何突破工业级应用难题?

核心内容:
1. RAG系统面临的复杂数据和专业领域挑战
2. RAG系统能力解构:知识库、任务分类和系统开发
3. 知识库构建、任务难度分析和RAG任务分类实践

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家


一、RAG面临的问题

RAG系统需要处理来自不同领域的复杂数据,包括文本、表格、图表等,这些数据的格式多样,且包含大量非文本信息。

现有的RAG方法在处理这些复杂数据时,存在以下问题:

  • 知识源多样性复杂

    • RAG系统需要处理来自不同领域的多样化数据,这些数据不仅格式多样(如扫描图像、数字文本文件、网页数据等),还可能包含专业数据库。

    • 现有的RAG方法在处理这些复杂数据时,难以高效提取专业领域知识。

  • 领域专业性不足

    • 在专业领域中,知识往往以领域特定的术语、专业知识和独特的逻辑框架呈现。

    • 现有的RAG方法在处理这些领域特定知识时,表现出明显的不足,难以准确提取、理解和组织专业领域的知识和逻辑。

  • 一刀切的解决方案

    • 现有的RAG方法通常采用“一刀切”的策略,未能充分考虑不同任务的复杂性和多样性。

    • 这种策略在处理复杂任务时,往往无法满足实际应用的需求。


二、RAG系统能力的解构

为了能全面的解构RAG系统,可以从三个角度对 RAG 框架进行了概念化:

  • 知识库

  • 任务分类

  • 系统开发


2.1 知识库

  • 在工业应用中,专业知识主要源于特定领域(如制造、能源和物流)多年积累的数据。

  • 这些来源不仅文件格式多样,而且包含大量的多模态内容,例如表格、图表和图形,这些对于解决问题也至关重要。

  • 专业领域内的文件之间通常存在功能连接,例如:超链接、参考文献和关系数据库链接,这些连接明确或隐含地反映了专业领域内知识的逻辑组织。

那么,如何组织庞杂的知识库呢?

  • 由于知识库的架构和质量直接影响检索方法及其性能,将知识库构建为多层异构图,记为 ,其相应的节点和边由 表示。

  • 图节点可以包括:文档、章节、片段、图形、表格以及来自蒸馏知识的自定义节点。

  • 边表示这些节点之间的关系,封装了图中的相互连接和依赖关系。

  • 多层异构图包含三个不同的层:信息资源层 、语料库层和蒸馏知识层 。

  • 每层对应于不同的信息处理阶段,代表知识中不同粒度和抽象级别。


2.2 任务分类

当前的检索增强生成 (RAG) 框架经常忽略不同任务固有的复杂性和后勤需求,通常采用一种一刀切的方法。

然而,即使拥有全面的知识检索,目前的 RAG 系统也无法同样有效地处理难度不同的任务。

因此,对任务进行分类并分析克服每个类别固有挑战的典型策略至关重要。

可以将任务的难度划分为4个方面:

  • 知识的相关性和完整性:知识库中是否存在必要信息以及它对主题的覆盖程度。

  • 知识提取的复杂性:准确识别和检索所有相关知识的难度,尤其是在知识分散在多个来源或隐含地嵌入文本中的情况下。

  • 理解和推理的深度:理解检索到的信息、建立联系和执行多步推理所需的认知和推理处理水平。

  • 知识利用的有效性:应用提取的知识来制定回应所涉及的复杂性,包括综合、组织和生成见解或预测。

在对行业中真实的 RAG 任务进行分类时,通常需要关注知识提取、理解、组织和利用的过程,以提供结构化和有见地的回应。

因此, 大致可以分为四类问题:

  • 事实性问题(Factual Questions)
    • 这类问题,直接从语料库中提取具体的、明确的信息,依靠检索机制来识别相关事实。

    • 如果成功检索到相关事实,则可以有效地回答此类问题。

  • 可链接推理问题(Linkable-Reasoning Questions)
    • 桥接问题涉及顺序连接多个实体以得出答案

    • 定量问题:需要基于检索到的数据进行统计分析

    • 比较问题:侧重于比较两个实体的特定属性

    • 摘要总结类问题:需要将来自多个来源或大量文本的信息浓缩或综合成简洁连贯的摘要,并且通常涉及整合关键点、识别主题或根据汇总内容得出结论。

    • 需要从不同的来源收集相关信息或执行多步骤推理。

    • 由于链接和推理过程存在差异,可以将此类别进一步细分为四个子类别:桥接问题、定量问题、比较问题和摘要总结问题。

  • 预测类问题(Predictive Questions)
    • 这类问题,答案并非直接存在于原文中,也可能并非纯粹的事实性内容,需要基于现有事实进行归纳推理和预测。

    • 为了利用大型语言模型 (LLM) 或其他外部预测工具的预测能力,必须收集和组织相关知识以生成结构化数据,以便进一步分析。

    • 例如:检索具体批准日期的生物类产品,并计算每年批次的总数,将其组织成按年份索引的时间序列数据,用于预测。

  • 创意类问题(Creative Questions)
    • 从专业的知识库中挖掘有价值的特定领域逻辑,并引入新颖的视角,从而创新和改进现有的解决方案。

    • 解决创意类问题需要基于事实信息的可用性以及对基本原理和规则的理解进行创造性思考。


2.3 系统开发

  • 基于上述4类问题,可以将RAG系统分为四个不同级别,这种分层方法有助于RAG系统的分阶段开发,允许通过迭代模块改进和算法优化来逐步增强其能力。

  • 从简单的信息检索到高级预测和创造性问题解决的演变。

  • 每个级别都代表着与知识库进行更复杂交互的一步,要求RAG系统展现更高水平的理解、推理和创新能力。

  • 从L0到L4,高级系统可以继承来自低级系统的模块,并添加新模块以增强系统功能。

其中:“PA”代表文件解析,“KE”代表知识提取,“RT”代表知识检索,“KO”代表知识组织,“KR”代表知识中心推理。

  • 与L1相比,L2不仅引入了任务分解和协调模块以利用迭代检索-生成路由,还包含更高级的知识提取模块。其中,深绿色所示的蒸馏知识生成。

  • 在L3中,对预测性提问的日益重视需要加强对知识组织和推理的要求。 因此,知识组织模块引入了用于知识结构化和知识归纳的附加子模块,如图中深橙色所示。以知识为中心的推理模块已扩展到包括一个预测子模块,以深紫色突出显示。

  • 在L4中,从已建立的知识库中提取复杂的理由非常具有挑战性。 为了解决这个问题,引入了多代理规划模块来从不同的角度激活推理。


三、工业级RAG+Agent架构

这里介绍PIKE-RAG 框架,包括7个模块:

  • 文档解析

  • 知识提取

  • 知识存储

  • 知识检索

  • 知识组织

  • 以知识为中心的推理

  • 任务分解和协调

每个组件都可以根据系统能力水平的需求进行定制,以支持不同复杂度的任务。

后文,将根据上面提到的系统开发的4个级别,按照顺序来详细的阐述工业级RAG的构建流程与细节。


3.1 构建知识库:L0级的任务

  • L0 系统的主要目标:处理和构建特定领域的文档,将其转换为机器可读的格式,并将提取的知识组织到一个异构图中。

  • L0 系统包含几个关键模块:文件解析、知识提取和知识存储。


3.1.1 文档解析

  • 鉴于特定领域的文档通常包含复杂的表格、图表和图形,基于文本的转换可能会导致信息丢失并破坏固有的逻辑结构。

  • 建议对这些文件进行布局分析,并保留图表和图形等多模态元素。

  • 布局信息可以帮助分块操作,保持分块文本的完整性,而图形和图表可以通过视觉语言模型 (VLM) 来描述,以辅助知识检索。

  • 这种方法确保保留原始文档的完整性和丰富性,从而提高 RAG 系统的效率。


3.1.2 知识组织

将知识库解构为多层异构图,表示不同层次的信息粒度和抽象程度。

图能捕获数据各个组成部分(例如,文档、章节、片段、图表和表格)之间的关系,并将它们组织成节点和边,反映它们的相互连接和依赖关系。

这种多层结构包含:信息资源层、语料库层和蒸馏知识层,能够为下游任务提供语义理解和基于原理的检索。

  • 信息资源层

    • 该层主要建立所有文章(信息源)之间的关系。

    • 捕获各种信息源,将它们视为源节点,其边表示它们之间的参照关系(例如:论文之间的引用与被引用关系)。

    • 这有助于交叉引用和上下文化知识,为依赖多个来源的推理奠定基础。

  • 语料库层

    • 该层主要对单篇文章进行解析。

    • 将解析后的信息,组织成章节和片段,同时保留文档的原始层次结构。

    • 多模态内容(如表格和图表)由大型语言模型 (LLM) 总结并作为片段节点集成,确保多模态知识可供检索。

    • 此层能够进行不同粒度级别的知识提取,允许跨不同内容类型进行准确的语义分块和检索。

  • 蒸馏知识层

    • 对语料库进一步被提炼成结构化的知识形式(例如,知识图谱、原子知识和表格知识)。

    • 可以利用命名实体识别 (NER)和关系提取的技术,确保蒸馏后的知识捕获关键的逻辑关系和实体,从而支持高级推理过程。

    • 通过在蒸馏层中组织这些结构化知识,可以增强系统基于更深层次的特定领域知识进行推理和综合的能力。

蒸馏知识层,包含的知识有:

  • 知识图谱

    • 使用大语言模型 (LLM) 从语料库文本中提取实体及其关系,生成“节点-边-节点”结构形式的知识单元,其中节点表示实体,边表示它们之间的关系。

    • 然后将所有知识单元整合起来构建一个图。

  • 原子知识

    • 将语料库文本划分为一组原子语句,即:将单个句子视为一个原子知识单元。

    • 通过将这些原子语句与语料库节点之间的关系结合起来,生成原子知识。

  • 表格知识

    • 从语料库文本中提取具有指定类型和关系的实体对。

    • 这些实体对被视为知识单元,可以组合起来构建表格知识。


3.2 关注事实问题:L1级的任务

L1 系统在 L0 系统的基础上,引入了知识检索和知识组织,实现了其检索和生成能力。

  • 专业术语和别名的丰富性会影响分块检索的准确性,不合理的分块会破坏语义连贯性并引入噪声干扰。


3.2.1 分块增强模块

  1. 首先,根据全文头部的文本,生成一个初始摘要

  2. 然后,滑动一个窗口,取一个固定长度的文本块。将当前窗口的文本块与初始摘要,送入大模型中,进行分块。得到当前窗口真实chunk和该chunk的摘要,并保存起来。

  3. 接着,再滑动一个固定的窗口得到新的文本块,与2中生成的摘要一起,送入大模型中进行分块。得到当前窗口真实chunk和该chunk的摘要

  4. 重复第3步,直到整个文本被分割并总结。


3.2.2 自动标注

  • 在特定领域的 RAG 场景中,语料库通常以正式、专业和严谨的表达内容为特征,而提出的问题通常以简洁易懂的口语表达。

  • 这种差异引入了领域差距,不利地影响了片段检索的准确性,尤其是在用于此目的的嵌入模型的局限性方面。

  • 为了解决领域差距的问题:通过预处理语料库以提取全面的特定领域标签集合或建立标签映射规则。这种基于标签的领域自适应可用于查询重写或顺序信息检索框架内的关键字检索,从而提高检索过程的查全率和查准率。

  • 首先,在只有语料库可用的情况下,使用精心设计的提示来利用大型语言模型 (LLM) 从语料库中提取语义标签,从而形成一个全面的语料库标签集合。

  • 当有可用的实用问答样本时,对查询和相应的检索到的答案片段都进行语义标签提取。 利用从片段和查询中提取的标签集,利用大语言模型 (LLM) 来映射跨域语义标签并生成标签对集合。

  • 建立语料库标签集合和标签对集合后,可以从查询中提取标签,并在集合中识别相应的映射标签。

  • 然后,这些映射标签用于增强后续的信息检索过程,从而提高查全率和查准率。


3.2.3 多粒度检索

图的每一层(例如,信息源层、语料库层、蒸馏知识层)都代表不同抽象级别和粒度的知识,允许系统以各种规模探索和检索相关信息。

例如:查询可以映射到整个文档(信息源层)或特定的文本片段(语料库层),确保可以根据给定任务在适当的级别检索知识。

具体的做法如下:

  • 首先,计算查询和图节点之间的相似度分数,以衡量查询与检索到的知识之间的匹配程度。

  • 然后,将这些分数,通过图的各层传播,可以在广泛的上下文(例如,整个文档)上检索,也可以在更精细的细节(例如,特定片段或蒸馏知识)检索。同时计算检索块的相似度得分

  • 最终,通过聚合操作,聚合来自其他层和节点的得分,得到检索到的片段的相似度分数,确保知识提取和利用在事实问答中的精度和效率都得到优化。

  • 整个检索过程可以是迭代的,根据通过任务分解生成的子查询改进结果,进一步增强系统生成准确且与上下文相关的答案的能力。


3.3 可链接和推理问题聚焦:L2级的任务

  • L2系统的核心功能在于其能够高效地检索多个相关信息来源并基于这些信息进行复杂的推理。

  • 集成一个高级知识提取模块,该模块能够全面识别和提取相关信息。

  • 任务分解和协调模块,将复杂的任务分解成更小、更易管理的子任务,从而提高系统处理这些任务的效率。

  • 从分块文本中提取三元组知识单元并构建知识图谱,以促进高效的信息检索是普遍的做法

  • 知识图谱的构建成本高昂,并且固有的知识并不总是能够被充分挖掘。

  • 工业任务往往需要多块知识,隐含地要求能够将原始问题分解成几个连续或并行的原子问题。

  • 问题原子化,也就要求我们在知识提取阶段提出将原始文档进行原子化

  • 通过将问题进行任务分解,将提取的原子知识与原始分块组合,构建了一个原子化的分层知识库。

  • 每次分解任务时,分层知识库都会提供对可用知识的见解,从而实现知识感知的任务分解。


3.3.1 知识原子化

  • 利用LLM为原始片段、表格、图片、视频等片段生成若干原子问题,确保生成的问题可以从这些片段中得到答案

  • 将这些生成的原子问题与给定的片段一起保存为原子问题标签(Atomic question)

  • 由于每个片段都用多个原子问题进行了标记,因此可以使用原子查询来定位相关的原子问题,然后找到相关的参考片段。


3.3.2 基于知识的任务分解

  • 首先, 初始化一个空集作为存储上下文的空间,原始问题用表示

  • 最开始是空集,直接用原始问题q进行检索

  • 在第次迭代的时候,将上下文和问题送入LLM,生成可能对任务完成有用的原子问题, 其中,表示迭代次数,表示原子问题的数量。

  • 然后,根据生成的原子问题,从知识库中检索前k个原子问题候选及其源片段,

  • 接着,利用原始问题, 上面得到的k个原子片段,送入LLM,选择与原始问题最相关的原子问题以及对应的,将这个放到空集里面

  • 迭代N次之后,如果没有高质量的问题建议、没有检索到高度相关的原子候选、没有合适的原子知识选择,或者如果确定已获取的知识足以完成任务,则可以提前终止迭代过程。

  • 最后,根据积累的上下文,为给定的问题q ,生成答案a 。


3.3.3 知识任务分解的训练

主要包括4个部分:

  • a)从上下文采样池中采样数据片段作为问题分解的参考上下文;

  • b) 保存生成的原子查询;

  • c) 在检索和选择之后,将选择的原子查询保存为推理轨迹的一部分;

  • d) 评估答案以生成分数

具体做法如下:

收集训练数据.通过采样上下文并创建多样化的交互轨迹来收集关于每个步骤背后的基本原理的数据。

  • 字典 用于存储每个片段的分数

  • 字典用于存储每个片段的访问次数

  • 在初始化阶段,将所有片段的分数设置为0,访问计数器初始化为1,来建立基线值

具体流程如下:

  • 首先,随机抽取一个片段,然后基于原始问题q,利用LLM生成问题

  • 然后,利用生成的问题,去召回k个原子片段 记录到

  • 接着初始化一个集合,用于存储与原始问题高度相关的原子问题,即:基于原问题生成的新问题中原子片段中相关性高于一定阈值的原子问题,送入中去。

  • 对于那些没有进入前k选择的检索到的片段,我将它们纳入,并根据计算的相关性指标方法性地更新它们在中的分数。

  • 最后将原始问题q,当前的上下文,和中的原子问题集合,送入到LLM中去,得到与原始问题最相关的原子问题,以及对应的

  • 然后将原子问题与上下文,一起送入LLM生成答案

  • 此时,我们就得到了训练所需要的问题,答案, 在上述迭代交互过程中,生成一系列的的 就是交互轨迹

  • 最终得到 为一组的训练数据,用于SFT训练LLM。


3.4 预测性问题:L3级的任务

在 L3 中,越来越强调基于知识的预测能力,这需要有效地收集和组织知识,并构建预测基本原理。

利用任务分解和协调模块,基于从检索到的知识中收集和组织的知识来构建预测基本原理

举个例子:

  • 来自多个来源的数据,例如:药品标签、临床试验和申请表,被集成到多层知识库中

  • 知识结构化子模块遵循任务分解模块的指令,收集和组织从知识库中检索到的相关知识(例如,药品名称及其批准日期)

  • 知识归纳子模块进一步对这些结构化知识进行分类,例如按批准日期分类,以方便进一步的统计分析和预测。


3.5 创造性问题:L4级的任务

L4 主要实现特征在于集成了多代理系统以促进多角度思考。

主要包括:

  • 从检索到的知识中提取连贯的逻辑论证;

  • 在具有众多影响因素的复杂推理过程中进行导航;

  • 以及评估对创造性、开放式问题的回答质量。


PIKE-RAG的检索案例

PIKE-RAG通过利用简洁的原子问题列表进行目标选择,保留完整片段以获得丰富的上下文支持而获益。

在法律领域中比较PIKE-RAG与GraphRAG,简直是降维打击

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询