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.mfbz.cn/a/752057.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智能测流速仪

LS300-B随着科技的不断进步,智能设备在各个领域中扮演着越来越重要的角色。在水利、环保、农业等行业中,明渠流速流量的测量一直是一个关键环节。传统的测量方法虽然有其有效性,但在面对复杂多变的测量环境时,往往显得力不从心。而…

[CAN] 通讯协议手动解析与手动打包 [手撕编码格式]

手动解析与手动打包 一、Intel格式编码1.1 报文解析。1.2 报文打包二、Motorola格式通讯协议2.1 报文解析。2.2 报文打包🙋 前言 CAN有两种编码格式:Intel编码格式 和 Motorola编码格式,本教程将分别对两种格式进行手动解析与手动打包。 一、Intel格式编码 假设已知雷达CAN…

如何在MySQL中按字符串中的数字排序

在管理数据库时,我们经常遇到需要按嵌入在字符串中的数字进行排序的情况。这在实际应用中尤为常见,比如文件名、代码版本号等字段中通常包含数字,而这些数字往往是排序的关键。本文将详细介绍如何在MySQL中利用正则表达式提取字符串中的数字并…

GPT-5的到来:智能飞跃与未来畅想

IT之家6月22日消息,在美国达特茅斯工程学院的采访中,OpenAI首席技术官米拉穆拉蒂确认了GPT-5的发布计划,预计将在一年半后推出。穆拉蒂形象地将GPT-4到GPT-5的飞跃比作高中生到博士生的成长。这一飞跃将给我们带来哪些变化?GPT-5的…

贪吃蛇项目GameStart部分:对游戏的初始化

接上一篇文章介绍完需要使用到的WIN32API的相关知识,本篇文章让我们来开始使用他们来创建我们的贪吃蛇欢迎界面以及游戏所需要的地图。 准备工作: 为了后面我们构建贪吃蛇游戏所需要的各项函数便于观察,同时便于我们的函数声明,在…

docker mysql cpu100% cpu打满排查 mysql cpu爆了 mysql cpu 100%问题排查

1. docker 启动了一个mysql 实例,近期忽然发现cpu100% 如下图所示 命令: top 2.进入容器内排查: docker exec mysql(此处可以是docker ps -a 查找出来的image_id) -it /bin/bash cd /var/log cat mysqld.log 容器内m…

移远通信发布两款Wi-Fi 6模组新品:率先采用亚马逊ACK SDK for Matter方案实现互联互通

6月26日 ,在MWC上海展上,全球领先的物联网整体解决方案供应商移远通信联合亚马逊及上海博通现场宣布,推出支持亚马逊Alexa Connect Kit (ACK)SDK for Matter方案的MCU Wi-Fi 6模组FLM163D和FLM263D。 后续,…

完美解决ValueError: column index (256) not an int in range(256)的正确解决方法,亲测有效!!!

完美解决ValueError: column index (256) not an int in range(256)的正确解决方法,亲测有效!!! 亲测有效 完美解决ValueError: column index (256) not an int in range(256)的正确解决方法,亲测有效!&…

JavaWeb——MySQL

目录 2. 数据库设计 3. 表的关系 4. 表关系的实现 5. 多表查询 5.1 内连接 (1)隐式内连接 (2)显式内连接 ​5.2 外连接 (1)左外连接 (2)右外连接 2. 数据库设计 数据库设…

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

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

World of Warcraft T2.5

World of Warcraft T2.5 猎人和术士套装需要的材料,好多啊,废墟和神殿打材料 猎人: 术士:

物联网安全:万物互联背景下的隐私保护与数据安全策略

在这个万物互联的时代,物联网(IoT)技术以其独特的魅力,将无数的设备、传感器和系统连接起来,构建了一个前所未有的智能世界。然而,随着物联网设备的激增和数据的爆炸式增长和流动,隐私泄露和数据…

Python | Leetcode Python题解之第188题买卖股票的最佳时机IV

题目: 题解: class Solution:def maxProfit(self, k: int, prices: List[int]) -> int:if not prices:return 0n len(prices)k min(k, n // 2)buy [0] * (k 1)sell [0] * (k 1)buy[0], sell[0] -prices[0], 0for i in range(1, k 1):buy[i] …

程序员职业发展指南,如何选择适合自己的就业方向?

随着科技的发展和数字化时代的到来,程序员是IT行业中的热门职业。尤其是近几年移动互联网的迅速发展,IT人才更是紧缺,越来越多的人加入程序员这个行列。 从事程序员工作,如何接项目呢?YesPMP是一个专注于互联网外包的平…

由监官要求下架docker hub镜像导致无法正常拉取镜像

问题:下载docker镜像超时 error pulling image configuration: download failed after attempts6: dial tcp 202.160.128.205:443: i/o timeout解决办法:配置daemon.json [rootbogon aihuidi]# cat /etc/docker/daemon.json {"registry-mirrors&qu…

AI绘图软件:设计师的创意加速器

在人工智能的浪潮中,AI绘图软件工具已成为设计师和创意工作者的得力助手,它们不仅加速了复杂绘图任务的完成,还激发了无限创意。本文将为您介绍几款AI绘图软件工具,它如何成为提升工作效率和创意灵感的关键。 1. StartAI&#xf…

深化人才服务改革,优化发展环境,推动创新与创业

在创新驱动的新时代背景下,浙江浦江县正以前所未有的力度,深化人才服务改革,优化人才发展环境。这不仅是一次对人才的深情呼唤,更是一场城市与人才的双向奔赴。在这里,人才的价值被充分认可,创新的力量得到…

企业信息化涉及哪些B端系统?本文给出15个,欢迎补充。

一、什么是企业信息化 企业信息化是指将信息技术应用于企业的各个业务领域,以提高企业的管理效率、业务流程优化和决策支持能力的过程。通过引入和应用信息技术,企业可以实现信息的高效传递和共享,提高工作效率,降低成本&#xf…

代码随想录第36天|动态规划

62. 不同路径 补充: 对二维数组的操作 dp[j][i] 表示到 j,i 有多少种路径递推公式: dp[j][i] dp[j - 1][i] dp[j][i - 1]初始化: dp[0][i] 和 dp[j][0] 都只有1种情况遍历顺序: 由于dp[j][i] 由 上和左的元素推导, 所以采用从左到右、从上到下的遍历顺序 class Solution {…

Linux Static calls机制

文章目录 前言一、简介二、Background: indirect calls, Spectre, and retpolines2.1 Indirect calls2.2 Spectre (v2)2.3 RetpolinesConsequences 2.4 Static callsHow it works 三、其他参考资料 前言 Linux内核5.10内核版本引入新特性:Static calls。 Static c…