CogMG:用大模型解决知识图谱覆盖不足的问题

CogMG:用大模型解决知识图谱覆盖不足的问题

    • 提出背景
      • 知识图谱的作用
        • 知识覆盖不完整
        • 知识更新不对齐
      • 显式分解知识三元组和补全
      • 检索增强生成(RAG)和知识更新
    • 框架设计
      • 1. 查询知识图谱
      • 2. 处理结果
      • 3. 知识图谱演化
    • CogMG 实现
      • 3.1 模型和组件
          • 问题分解
          • 正式查询生成
          • 查询知识图谱
          • 答案整合
          • 知识分解
          • 知识补全
          • 检索增强生成验证
        • 3.2 系统和用例
          • 知识增强生成
          • 知识管理
        • 3.3 实验
    • 总结
      • CogMG 框架拆解

 


提出背景

论文:https://arxiv.org/pdf/2406.17231

代码:https://github.com/tongzhou21/CogMG

视频:https://www.youtube.com/watch?v=WnkS0Qk_0OM&feature=youtu.be

大型语言模型(LLM)在问答(QA)应用中的使用越来越多。

这些模型能够生成引人入胜和连贯的回答,但它们也容易产生虚构的内容和事实错误。

这些问题可能来源于模型使用的数据、训练和推理阶段。

幸运的是,LLMs可以通过参考外部的知识源(如文档和知识图谱)来减轻这些虚构内容的产生。

知识图谱的作用

本文集中讨论如何利用知识图谱(KG),通过其结构化的数据和精确的事实信息,为大型语言模型(LLM)提供补充。

然而,在QA场景中,知识图谱的效用面临两大挑战:知识覆盖不完整和知识更新不对齐。

知识覆盖不完整

知识图谱虽然能涵盖大量信息,但在实践中,它们存储的知识并不总是全面的。

现有的方法主要集中在改进解析语言或在检索知识三元组时提高语义相关性,这些方法在知识图谱中预存了一些特定问题的知识。

但对于处理那些知识图谱中没有覆盖的查询,现有方法关注较少。

知识更新不对齐

目前更新知识图谱的方法主要有两种:从非结构化文本中提取知识三元组和通过分析现有节点之间的连接推断未见的链接。

这些方法虽然不断更新知识图谱,但由于缺乏目标和策略,未能完全解决新知识与实际用户需求之间的不对齐问题。

因此,知识图谱的更新没有充分考虑用户的实际需求。

为了解决上述两个挑战,本文提出了一个称为CogMG的框架,用于LLM和KG之间的协同增强。

当查询超出当前KG的知识范围时,鼓励LLM显式分解所需的知识三元组。

然后,基于LLM参数中编码的广泛知识进行补全,作为最终答案的参考。

显式识别必要的知识三元组有助于减轻虚构内容并突出知识图谱的不足。

此外,通过检索增强生成(RAG)与外部文档自动验证这些三元组,这些相关文档也可作为手动审查的参考。

在将三元组合并到知识图谱之前,持续且主动的知识更新过程使知识图谱逐步满足实际知识需求,从而提高LLM回答问题的事实性。

显式分解知识三元组和补全

在这里插入图片描述

当查询超出当前KG的知识范围时,鼓励LLM显式分解所需的知识三元组。

然后,基于LLM参数中编码的广泛知识进行补全,作为最终答案的参考。

显式识别必要的知识三元组有助于减轻虚构内容并突出知识图谱的不足。

假设一个用户查询“糖尿病患者如何调整饮食以控制血糖水平?”当前的知识图谱(KG)中没有最新的饮食调整建议。

  1. 查询问题:用户问“糖尿病患者如何调整饮食以控制血糖水平?”

假设知识图谱中缺乏最新的饮食调整建议,那么LLM会将查询问题分解成以下几个三元组,以便更好地理解和处理。

  1. 显式分解知识三元组
    • (糖尿病, 关联, 饮食调整)
    • (饮食调整, 类型, 控制血糖)
    • (控制血糖, 包括, 食物类型A)
    • (控制血糖, 包括, 食物类型B)

由于知识图谱中缺乏相关信息,LLM将利用其内部编码的广泛知识来补全这些三元组。

这意味着LLM会根据其训练过程中学到的知识,生成一些可能的答案。

  1. 补全:基于LLM参数中的广泛知识,生成以下补全三元组:
    • (糖尿病, 饮食调整, 低GI食品)
    • (低GI食品, 包括, 全谷物)
    • (低GI食品, 包括, 蔬菜)
    • (低GI食品, 包括, 水果)

最终答案会参考这些补全后的知识三元组,回答:“根据最新的研究,糖尿病患者可以通过摄入低GI食品来调整饮食以控制血糖水平,这包括全谷物、蔬菜和水果。”

通过这种方式,LLM不仅能够回答用户的问题,还能在回答过程中识别和弥补知识图谱中的不足,提供更有价值的信息。

AI 搜索 + LLM 更适合处理最新疗法。
 

检索增强生成(RAG)和知识更新

此外,通过检索增强生成(RAG)与外部文档自动验证这些三元组,这些相关文档也可作为手动审查的参考。

在将三元组合并到知识图谱之前,持续且主动的知识更新过程使知识图谱逐步满足实际知识需求,从而提高LLM回答问题的事实性。

框架设计


左图部分:展示了协同增强框架的整体设计,包括LLM和知识图谱(KG)的协同工作。

  1. 知识增强

    • 问题分解:将用户问题分解成子问题。
    • 正式查询生成:生成查询知识图谱的正式语言。
    • 查询知识图谱:使用生成的正式语言查询知识图谱。
    • 答案整合:将知识图谱查询结果整合成最终答案。
  2. 主动知识提取

    • 知识分解:将知识图谱查询结果分解成具体的知识单元。
    • 知识补全:利用LLM进行知识补全。
    • RAG验证:通过检索增强生成(RAG)技术验证补全的知识。
    • 知识图谱更新:将验证后的知识更新到知识图谱中。

右图部分:展示了CogMG使用的代理框架,包括LLM的规划和调用工具的过程,每个模块设计为可插拔以确保通用性。

 

CogMG框架的单次迭代包括三个步骤:

(1)查询知识图谱:大型模型利用推理和规划能力分解查询,生成正式的查询语句以查询知识图谱。

(2)处理结果:如果成功返回结果,则整合人类偏好的详细答案。如果不成功,则明确识别和分解所需的三元组,然后将其整合到答案中。

(3)图谱演化:利用外部知识验证和修改,纳入未命中的三元组到知识图谱中。

1. 查询知识图谱

对于一个知识密集型的问题,我们首先通过将相应的正式查询分解为自然语言中的子步骤来启动方法。

这种分解有助于阐明查询知识图谱所需的必要且普遍的逻辑,确保我们的方法在各种KG架构中的通用性。

然后,LLM调用一个正式语言解析工具来执行查询。

该工具接收逻辑上分解的步骤(以自然语言为输入),将其翻译成针对目标知识图谱的正式查询语言,并返回查询结果。

2. 处理结果

在接收到来自KG的查询结果后,LLM利用其理解和推理能力来组织最终答案。

如果查询执行遇到错误,LLM会根据分解的步骤划分出未知组件的必要知识三元组。

假设这些三元组的补全能够提供回答问题所需的知识。

随后,利用模型参数中编码的知识来完成这些三元组。然后,模型根据这些事实生成最终答案。

需要注意的是,这个补全步骤适用于任何级别的LLM能力。

显式的必要知识不仅可以减轻当前输出中由于累积效应而产生的幻觉效果,还可以识别图谱中的知识空白,从而促进图谱知识覆盖的增强。

记录下这些不完整的知识三元组及其补全,以便将其纳入图谱或进一步验证。

3. 知识图谱演化

LLM内部编码的参数知识的高通用性和广泛覆盖可以补充KG中更为专业的知识。

LLM补全的这些三元组可以直接添加到KG中。

然而,LLM在处理罕见的、长尾的和领域特定的知识时存在困难,其知识陈述缺乏鲁棒性。

我们提供了手动干预的选项,管理员可以选择(1)将补全的三元组直接纳入知识图谱,(2)在添加之前手动调整它们,或(3)根据外部知识源自动验证它们。

为了自动验证和修正这些三元组,CogMG在非结构化语料库中搜索相关文档,并在文档与三元组之间进行事实比较。

这些文档可以来自领域特定的文本、通用百科全书或快速更新的搜索引擎,不仅增强了知识的事实准确性,还为手动审查提供了可解释的参考。

基于这些外部来源的见解,模型调整提议的知识三元组,使其适合手动纳入知识图谱。

  1. 查询知识图谱

    • 用户问:“最近有什么新药物可以治疗糖尿病?”
    • LLM将查询分解为知识三元组:
      • (糖尿病, 最新治疗方法, 新药物)
      • (新药物, 名称, 药物C)
      • (药物C, 功效, 降糖)
    • 调用正式语言解析工具,查询知识图谱。如果KG中没有相关信息,则进入下一步。
  2. 处理结果

    • 如果查询不成功,LLM明确识别所需的知识三元组并进行补全:
      • (糖尿病, 最新治疗方法, 药物C)
      • (药物C, 功效, 降糖)
      • (药物C, 临床试验, 通过)
    • 根据这些补全三元组,生成最终答案。
  3. 知识图谱演化

    • 使用RAG技术检索外部文档,验证和修正这些三元组。
    • 比较文档与三元组之间的事实,根据外部来源调整知识三元组。
    • 管理员可以选择直接添加、手动调整或进一步验证这些三元组。

经过验证和补全,最终答案为:

“最近的新药物C已经被批准用于治疗糖尿病,并在临床试验中显示出显著的降糖效果。”

CogMG 实现

我们微调了一个开源的LLM来实现CogMG,并开发了一个在线系统来展示和评估我们提出的协同增强框架。

3.1 模型和组件

LLM能够独立计划和调用工具。我们采用了ReAct的代理框架来适应CogMG模块化和通用化的理念。

我们使用了Wikidata的一个子集作为知识图谱,KoPL作为查询引擎,KQA-Pro数据集作为微调数据集的骨干。

KQA-Pro包含自然语言问题及其对应的KoPL查询、SPARQL查询和黄金答案。

为了确保代理在各种场景中表现出预期行为,我们构建了定制的SFT数据集进行微调或利用上下文学习来提示模型。

Qwen-14B-Chat 负责所有SFT数据生成和代理骨干。

值得注意的是,我们的框架适用于各种知识图谱和LLM。接下来我们将逐个场景介绍我们的解决方案。

问题分解

利用分解步骤作为问题和正式语言之间的中介,明确问题解决逻辑并增强对不同问题表达的鲁棒性。

我们手动编写了几个查询步骤的自然语言解释,根据相应的KoPL函数调用获得问题和自然语言解释之间的并行数据案例。

通过这些并行示例,我们提示LLM在整个数据集中生成子步骤,并获得50k对数据。

这些数据被保留用于构建代理行为SFT数据集。

正式查询生成

使用并行数据可以快速训练一个解析查询步骤自然语言解释到KoPL正式程序的模型。

由于解析过程对模型能力要求相对较低,我们微调了一个7B模型来创建一个专用的知识图谱查询工具模型。

查询知识图谱

我们包装了KoPL引擎的执行,在出错时统一返回“失败”,以便于模型的决策和识别。

查询工具通过解析模型处理分解步骤输入,预测KoPL查询程序,并返回知识图谱查询结果。

答案整合

KQA Pro提供的黄金答案在词级别上简洁精准,但与人类偏好的详细解释存在差距。

因此,我们为推理模型提供了来自知识图谱执行的问答对,指导它为数据集中的每个问题生成更全面的解释性回答。答案整合场景是代理行为的一部分。

知识分解

我们显式地分解正式查询的目标三元组,以明确回答问题所需的事实。

这一步对于手动注释一些查询语句为不完整三元组是必不可少的,未知事实部分用问号表示,然后使用这些样本作为示例,让模型推断所有数据的三元组分解。

由于KoPL程序中的标签名精确,我们在三元组推理期间添加了标签名约束,如果生成了非标准标签名,则重新生成三元组。

所有的知识分解数据用于模拟处理知识图谱未涵盖的问题。

知识补全

我们直接指导模型执行知识补全任务,参考手动编写的示例。

为了适应整个ReAct代理框架并确保模块化,我们将知识补全部分封装为一个工具,输入问题和相应的不完整知识三元组,输出这些三元组与参数知识的映射。

检索增强生成验证

由于经过一般指令调优和偏好对齐的LLM熟悉RAG,我们利用提示工程请求模型基于检索到的相关文档、不完整三元组以及相应的参数知识补全生成知识三元组的修正。

我们采用Wikipedia作为检索语料库,每256个标记分成一个块。

我们通过BM25构建文档索引,通过拼接的知识三元组和原始问题进行搜索,并选择前十个块作为外部知识参考。

对于整个ReAct代理框架,我们构建了两条代理计划和调用工具的路线,区分是否知识图谱中包含必要的知识。

利用构建的并行训练数据,我们构建了SFT数据的两个思考-行动-观察执行路线,考虑到上述每个场景。

代理使用总共100k行为SFT数据进行调优。

3.2 系统和用例
知识增强生成

用户可以在底部的对话框中输入并提交知识密集型问题。

代理LLM负责处理这些问题,并按预定义路线进行处理。

思考-行动-观察模式将在相应的下拉标签中实时显示。

当知识图谱无法支持问答过程时,模型将分解知识并调用自身进行知识补全,然后提供最终答案,如图2左侧所示。

同时,这些知识三元组将记录在数据库中。

知识管理

在我们的系统的知识管理部分,我们设计了一个交互界面来显示知识图谱尚未涵盖的所有待处理实例。

界面展示了查询的来源、突显的知识缺口、模型基于内部参数完成这些知识的结果。

管理员可以选择(1)直接将新完成的知识整合到知识图谱中,或者(2)通过RAG进一步验证。

在界面中的下拉标签中可以访问相关文档和修改结果,便于进行严格的验证过程。

一旦验证完成并进行必要的调整,管理员可以将精炼的知识无缝添加到图谱中。

这个过程不仅确保了知识图谱的持续扩展和完善,还利用了管理员的专业知识来验证模型生成的知识。

通过集成这些人机协作的验证步骤,我们的系统增强了知识图谱的可靠性和准确性,使其成为回答实际问题的更强大资源。

3.3 实验

我们进一步设计并进行了实验,以证明CogMG框架的有效性。

从KQA Pro数据集中抽取问题,我们测试了以下场景:

(1)直接回答:仅使用骨干LLM回答,不利用知识图谱;

(2)CogMG不使用知识:删除图谱中的相关知识,使用参数补全知识回答;

(3)CogMG更新:更新所有相关知识,利用图谱查询结果回答。

由于准确匹配难以反映实际答案的正确性,我们手动评估了50个问题的正确性。

表1显示了这三种场景下的准确性。

实验结果表明,仅使用LLM直接回答问题由于缺乏精确的事实知识,准确性较低。

此外,利用模型的知识澄清和补全可以缓解一些幻觉并提高准确性。

最后,在利用协同增强框架更新知识图谱后,后续查询的准确性得到了提高。

总结

CogMG 框架拆解

解决知识覆盖不完整和知识更新不对齐的问题,以增强大型语言模型(LLM)和知识图谱(KG)的协同能力。

  1. 知识分解

    • 子解法:将查询分解为知识三元组
    • 特征:因为可以明确识别和定位查询中所需的具体知识单元
    • 之所以用知识分解子解法,是因为
      • 这样可以有效地将复杂的查询简化为更易处理的部分
      • 有助于发现知识图谱中的知识缺口
  2. 知识补全

    • 子解法:利用LLM参数中的知识补全三元组
    • 特征:因为可以利用LLM的广泛知识库来填补知识图谱中的空白
    • 之所以用知识补全子解法,是因为
      • LLM可以根据其训练数据生成合理的知识补全
      • 提供了在知识图谱中不存在的最新信息
  3. 检索增强生成(RAG)

    • 子解法:通过检索外部文档来验证和补全知识
    • 特征:因为可以确保补全知识的准确性和可靠性
    • 之所以用检索增强生成子解法,是因为
      • 外部文档提供了额外的验证层
      • 增强了知识的事实性和权威性
  4. 知识图谱更新

    • 子解法:将验证后的知识三元组更新到知识图谱中
    • 特征:因为可以动态地扩展和更新知识图谱
    • 之所以用知识图谱更新子解法,是因为
      • 确保知识图谱始终包含最新和最相关的信息
      • 提高知识图谱的覆盖率和实用性

通过将查询分解为知识三元组、利用LLM补全知识、通过检索增强生成验证知识,并最终更新知识图谱,CogMG框架能够有效地回答用户的问题,并动态地增强知识图谱的内容和准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/362823.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET 漏洞分析 | 某ERP系统存在SQL注入

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

c++智能指针shared_ptr

文章目录 概念1.shared_ptr1.基本使用2.如何获取原始指针3. 指定删除器 2 使用shared_ptr要注意的问题2.1不要用一个原始指针初始化多个shared_ptr2.2. 避免循环引用 小结 概念 C程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。内存…

安装 Docker 环境(通过云平台创建一个实例实现)

目录 1. 删除原有 yum 2. 手动配置 yum 源 3. 删除防火墙规则 4. 保存防火墙配置 5. 修改系统内核。打开内核转发功能。 6. 安装 Docker 7. 设置本地镜像仓库 8.重启服务 1. 删除原有 yum rm -rfv /etc/yum.repos.d/* 2. 手动配置 yum 源 使用 centos7-1511.iso 和 Xi…

Python 语法基础二

7.常用内置函数 执行这个命令可以查看所有内置函数和内置对象(两个下划线) >>>dir(__builtins__) [__class__, __contains__, __delattr__, __delitem__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getitem__, __gt…

深入剖析 Android 网络开源库 Retrofit 的源码详解

文章目录 概述一、Retrofit 简介Android主流网络请求库 二、Retrofit 源码剖析1. Retrofit 网络请求过程2. Retrofit 实例构建2.1 Retrofit.java2.2 Retrofit.Builder()2.2.1 Platform.get()2.2.2 Android 平台 2.3 Retrofit.Builder().baseUrl()2.4 Retrofit.Builder.client()…

OpenAI穿着「皇帝的新衣」;扒了数万条帖子汇总100种AIGC玩法;北美出海的财务避坑指南;我创业「如」有CTO | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 1. 我扒了 Reddit 论坛数万条帖子,汇总了 GenAI 的 100 种玩法 ChatGPT 已经问世一年半了。这期间诞生了很多大语言模型和生成式人工智能…

备份和还原

stai和dnta snat:源地址转换 内网---外网 内网ip转换成可以访问外网的ip 内网的多个主机可以使用一个有效的公网ip地址访问外部网络 DNAT:目的地址转发 外部用户,可以通过一个公网地址访问服务内部的私网服务。 私网的ip和公网ip做一个…

【JavaEE进阶】Spring AOP使用篇

目录 1.AOP概述 2.SpringAOP快速入门 2.1 引入AOP依赖 2.2 编写AOP程序 3. Spring AOP详解 3.1 Spring AOP 核心概念 3.1.1切点(Pointcut) 3.1.2 连接点 (Join Point) 3.1.3 通知(Advice) 3.1.4 切面(Aspect) 3.2 通知类型 3.3PointCut 3.4 切面优先级 3.5 切点表…

「51媒体」政企活动媒体宣发如何做?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体宣传加速季,100万补贴享不停,一手媒体资源,全国100城线下落地执行。详情请联系胡老师。 政企活动媒体宣发是一个系统性的过程,需要明确…

使用Scala爬取安居客房产信息并存入CSV文件

使用Scala爬取安居客房产信息并存入CSV文件 本篇博客中,我们将介绍如何使用Scala语言编写一个简单的程序,来爬取安居客(Anjuke)网站上的房产信息,并将这些信息存储到CSV文件中。这个示例将涵盖HTTP请求、HTML解析、数…

麒麟系统安装MySQL

搞了一整天,终于搞定了,记录一下。 一、背景 项目的原因,基于JeecgBoot开发的系统需要国产化支持,这就需要在电脑上安装MySQL等支撑软件。 国产化项目的操作系统多是麒麟系统,我的系统如下: arm64架构。…

详细分析Oracle修改默认的时间格式(四种方式)

目录 前言1. 会话级别2. 系统级别3. 环境配置4. 函数格式化5. 总结 前言 默认的日期和时间格式由参数NLS_DATE_FORMAT控制 如果需要修改默认的时间格式,可以通过修改会话级别或系统级别的参数来实现 1. 会话级别 在当前会话中设置日期格式,这只会影响…

CCSP自考攻略+经验总结

备考攻略 备考攻略准备阶段通读阶段精度阶段总复习阶段刷题阶段命运审判 写到最后 备考攻略 趁着对ssp知识点的理解还在,开始ccsp的考证之路,文章结构还是按照cissp备考篇的结构梳理。本次备考和cissp的离职在家备考不同,ccsp是在职利用非工…

2018年全国大学生数学建模竞赛A题高温服装设计(含word论文和源代码资源)

文章目录 一、部分题目二、部分论文三、部分Matlab源代码问题11 求解h1h22 已知h1h2求解温度分布 问题21 求解第二层最佳厚度 四、完整word版论文和源代码(两种获取方式) 一、部分题目 2018 年高教社杯全国大学生数学建模竞赛题目 A 题 高温作业专用服…

【C语言】字符/字符串+内存函数

目录 Ⅰ、字符函数和字符串函数 1 .strlen 2.strcpy 3.strcat 4.strcmp 5.strncpy 6.strncat 7.strncmp 8.strstr 9.strtok 10.strerror 11.字符函数 12. 字符转换函数 Ⅱ、内存函数 1 .memcpy 2.memmove 3.memcmp 4.memset Ⅰ、字符函数和字符串函数 1 .strlen 函数原型&…

Vite: 关于Rollup打包

概述 Rollup 是一款基于 ES Module 模块规范实现的 JavaScript 打包工具,在前端社区中赫赫有名,同时也在 Vite 的架构体系中发挥着重要作用不仅是 Vite 生产环境下的打包工具,其插件机制也被 Vite 所兼容,可以说是 Vite 的构建基…

JavaScript--js基础(详细 全面)

目录 前言: JavaScript 是什么?JavaScript 简介 1.JavaScript历史 2.JavaScript 具有以下特点 第一个JavaScript程序 1.在脚本文件中编写JavaScript代码 2.JavaScript代码执行顺序 基本语法 1.变量 2.数据类型 3.算术运算符 4.赋值运算 5.字符串运算符 6…

微服务应用与开发知识点练习【Gateway,OpenFeign,Dubbo,RocketMQ和RabbitMQ,JPA,Redis,Mycat】

一、选择题 【Gateway】 1.Spring Cloud Gateway与Nacos整合实现负载均衡时,路由配置中的URI前缀应该是?(A ) A. lb:// B. nacos:// C. http:// D. discovery:// Spring Cloud Gateway与Nacos整合实现负载均衡时&#xff0c…

华为od 2024 | 什么是华为od,od 薪资待遇,od机试题清单

目录 专栏导读华为OD机试算法题太多了,知识点繁杂,如何刷题更有效率呢? 一、逻辑分析二、数据结构1、线性表① 数组② 双指针 2、map与list3、队列4、链表5、栈6、滑动窗口7、二叉树8、并查集9、矩阵 三、算法1、基础算法① 贪心思维② 二分查…

鸿蒙面试心得

自疫情过后,java和web前端都进入了冰河时代。年龄、薪资、学历都成了找工作路上躲不开的门槛。 年龄太大pass 薪资要高了pass 学历大专pass 好多好多pass 找工作的路上明明阳关普照,却有一种凄凄惨惨戚戚说不清道不明的“优雅”意境。 如何破局&am…