论文浅尝 | CogMG:大语言模型与知识图谱的协同增强(ACL2024)

ops/2025/2/10 13:26:28/

771ecf297675842c20098042b564042b.png

笔记整理:杜超超,天津大学硕士,研究方向为自然语言处理、大语言模型

论文链接:https://aclanthology.org/2024.acl-demos.35.pdf

发表会议:ACL 2024

1. 动机

语言模型(LLMs)在问答任务中已经被广泛应用,然而LLMs容易出现幻觉和事实性错误。虽然可以通过查询知识图谱(KG)来减少这种幻觉,但是存在两个挑战:

(1)KG中的知识可能覆盖不完全:KG有能力涵盖大量信息,但在存储知识时也面临着实现全面覆盖的挑战。KG中明确编码的三元组不足以完全涵盖实际问答场景所需的知识。现有的用KG增强问答系统的方法主要集中在改进解析形式语言或检索知识三元组中的语义相关性,为预定义问题在KG中寻找相应的知识预存储。对于未命中KG的查询的后续处理关注相对较少;

(2)通过信息抽取和KG补全来更新KG的时候,面临着知识不一致的问题:当前更新KG的方法主要依赖于两种策略:从非结构化文本中提取知识三元组(信息提取)和通过分析节点之间的现有连接来推断未见链接(KG补全)。这些用于更新KG的范式具有无目的且看似无限的特点,因此不能完全解决新获取的知识与现实世界用户需求之间的不一致问题。这凸显了在更新KG以更好地与用户需求保持一致方面缺乏积极的考虑。

在本文中,作者引入了一个协同增强框架CogMG,利用KG来解决LLMs在问答场景中的局限性,明确针对知识覆盖不完整和知识更新不一致的问题。当查询超出当前KG的知识范围时,LLMs被鼓励明确分解所需的知识三元组。随后,基于LLMs参数中编码的广泛知识进行补全,作为最终答案的参考。明确识别必要的知识三元组是模型内省以减轻幻觉的一种手段,并主动突出KG在满足现实世界需求方面的不足。此外,识别这些三元组允许通过使用外部文档的检索增强生成(RAG)对其进行自动验证。检索到的相关文档也可以在将三元组纳入KG之前作为手动审查的参考。这种持续且主动的知识更新过程使KG能够逐渐满足实际知识需求。

2. 贡献

本文的主要贡献有:

(1)提出了LLMs和KG之间的协同增强框架CogMG,解决LLMs中的知识缺陷,并倡导根据用户需求主动更新KG中的知识

(2)微调一个开源LLMs以在智能体框架中适应协同增强范式CogMG,并通过实现一个网站系统来展示它,智能体框架是模块化和可插拔的,并且系统是交互式且用户友好的

(3)根据一个用例展示和在各种情况下的实验结果,展示了CogMG在主动更新知识和提高各种现实世界问答场景中的回复质量方面的有效性。

3. 方法

总体框架如图1所示,左侧部分是示意图,说明协作增强框架CogMG的总体设计,涉及LLMs和KG。右侧部分是使用基于代理的框架实现CogMG,每个模块都设计为即插即用,以确保通用性。

e57b96c0ec1ae4bc14f56f8f8e3a7cca.png

图1 总体框架图

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

(1)查询KG:LLMs利用推理和规划能力分解查询并生成用于查询KG的形式化查询语句。对于一个知识密集型问题,我们通过将相应的形式化查询分解为自然语言子步骤来启动我们的方法。这种分解有助于阐明查询KG所需的必要和通用逻辑,确保我们的方法在各种KG模式中的通用性。然后LLMs调用一个形式语言解析工具来执行查询。该工具接收自然语言中的逻辑分解步骤作为输入,将其翻译成适合目标KG的形式化查询语言,并返回查询结果。

(2)处理结果:如果成功返回结果,则整合人类偏好的详细答案。如果不成功,则在整合到答案之前明确识别并分解所需的三元组。在从KG接收到查询结果后,LLMs利用其理解和推理能力组织最终答案。如果查询执行遇到错误,LLMs根据分解步骤描绘出具有未知组件的必要知识三元组。假设这些三元组的补充可以提供回答问题所需的知识。随后,利用模型参数中编码的知识来补全这些三元组。然后,模型根据这些事实生成最终答案。在这里,补全步骤适用于任何能力水平的LLMs。明确必要的知识不仅减轻了当前输出中由于滚雪球效应导致的幻觉影响,还识别了KG中的知识差距,从而有助于提高图谱的知识覆盖率。不完整的知识三元组及其补全被记录下来,以便可能纳入图谱或进一步验证。

c5a5b191063f24768630e019bded2e9b.png

图2 处理KG中未找到的查询以及相关知识处理的完整示例

(3)图谱演化:利用外部知识验证和修改将未命中的三元组纳入KG。LLMs参数中编码的高度通用性和广泛覆盖的知识可以补充KG中更专业的知识。由LLMs补全的这些三元组可以直接添加到KG中。然而,LLMs在处理罕见、长尾和特定领域知识方面存在困难,并且其知识表述缺乏稳健性。因此作者提供手动干预选项,管理员可以选择(1)直接将补全的三元组纳入KG,(2)在添加之前手动调整它们,或(3)根据外部知识源自动验证它们。为了自动验证和纠正这些三元组,CogMG在非结构化语料库中搜索相关文档,并在文档和三元组之间进行事实比较。这些文档可以来自特定领域文本、通用百科全书或快速更新的搜索引擎,不仅提高了知识的事实准确性,还为手动审查提供了可解释的参考。基于这些外部来源的见解,模型调整提议的知识三元组,使其适合手动纳入KG。

4. 实现用例

模型与组件:采用 ReAct 的智能体框架来使LLMs适应CogMG理念中的模块化和泛化。作者使用维基数据的一个子集作为KG,KoPL作为查询引擎,KQA-Pro数据集作为微调数据集的骨干。KQA-Pro包含自然语言问题以及相应的KoPL查询、SPARQL查询和标准答案。为确保智能体在各种场景中表现出预期行为,作者构建定制的SFT数据集来微调或利用上下文学习来提示模型。Qwen-14B-Chat负责所有SFT数据生成和智能体骨干。作者提出,该框架适用于各种KG和LLMs并逐个场景介绍解决方案。

(1)问题分解:利用分解步骤作为问题和形式语言之间的中介,阐明了解决问题的逻辑,并增强了对问题不同表达方式的鲁棒性。作者手动编写几个查询步骤的自然语言解释,以根据相应的KoPL函数调用获得问题和自然语言解释之间的并行数据案例。利用这些并行示例,我们提示LLMs在整个数据集中生成子步骤,并获得5万对数据。这些数据被保留用于构建智能体行为SFT数据集。

(2)形式查询生成:一个将查询步骤的自然语言解释解析为KoPL形式程序的模型可以使用并行数据快速训练。由于解析过程对模型能力的要求相对较低,作者微调一个7B模型来在查询KG的工具中创建一个专用模型。

(3)查询KG:作者包装KoPL引擎的执行,以便在出错时统一返回 “失败”,便于模型决策和识别。查询工具通过解析模型处理分解步骤输入,预测KoPL查询程序并返回KG查询结果。

(4)知识补全:作者直接指示模型承担知识补全任务,参考图2手动编写的示例。为了适应整个ReAct智能体框架并确保模块化,作者将知识补全部分封装为一个工具,输入问题和相应的不完整知识三元组,输出参数知识与这些三元组的映射。

(5)答案整合:KQA Pro提供的标准答案在单词级别简洁精确,与人类偏好的更详细解释存在差距。因此,作者向推理模型提供来自KG执行的问题和标准答案,指示它为数据集中的每个问题生成更详尽、解释性更强的回复。答案整合场景是智能体行为的一部分。

(6)知识分解:作者明确分解形式查询的目标三元组,以阐明回答问题所需的事实。这一步对于手动注释一些查询语句为不完整三元组至关重要,将未知事实部分表示为问号,然后使用这些样本作为模型推断所有数据的三元组分解的示例。鉴于KoPL程序中的精确标签名称作为实体链接,作者在三元组推断期间添加标签名称约束,如果产生非标准标签名称则重新生成三元组。所有知识分解数据都用于模拟处理KG未涵盖的问题。

(7)RAG验证:由于经过通用指令调整和偏好对齐的LLMs熟悉RAG,作者利用提示工程要求模型根据检索到的相关文档、带问号的不完整三元组以及相应的参数知识补全三元组生成知识三元组的修正。作者采用维基百科作为检索语料库,每256个词元分割为一个块。作者通过BM25构建文档索引,通过连接知识三元组和原始问题进行搜索,并选择前十个块作为外部知识参考。对于整个ReAct智能体框架,作者为智能体的规划和调用工具构建了两条路线,区分必要知识是否包含在KG中。利用构建的并行训练数据,作者构建了考虑上述每个场景的两条Thought-Action-Observation 执行路线的SFT数据。智能体使用总共 10 万条行为 SFT 数据进行微调。

5. 实验

为了展示CogMG框架的有效性,作者从KQA Pro数据集中抽样问题并测试了以下场景:(1)直接回答:仅使用骨干LLMs回答,不利用KG;(2)CogMG无知识:从图谱中删除相关知识并使用知识的参数补全回答;(3)CogMG更新:更新所有相关知识,利用图谱查询结果回答。由于精确匹配难以反映真实答案的正确性,作者手动评估了50个问题的正确性。表1展示了这三种场景下的准确性。

ef5bb40a1cd6b9aecce6e0e28bd5fc6a.png

表1 三种不同场景下问答准确率对比结果

实验结果表明,由于缺乏精确的事实知识,直接使用LLMs回答问题的准确性较低。此外,利用模型的知识澄清和补全可以减轻一些幻觉并提高准确性。最后,在利用协同增强框架更新KG后,后续查询的准确性得到提高。

522e6da9d66d4941d6ab2da1d9adfce9.png

图3 系统界面

6. 总结

本文解决了在整合LLMs和KG时两个相对被忽视的问题:知识覆盖不完整和知识更新不一致。针对这些挑战,作者引入了CogMG,一个用于LLMs和KG协同增强的框架。CogMG通过明确定义和补全相关知识来解决使用KG未涵盖的知识回答问题的问题。此外,它积极收集和验证知识需求以更新KG。此外,作者基于智能体框架微调一个LLMs来实现CogMG,并开发一个用户友好的交互系统来可视化其能力。用例和实验结果展示了CogMG的有效性。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

cbbcfdec7a7a746d0180862ba4243593.png

点击阅读原文,进入 OpenKG 网站。


http://www.ppmy.cn/ops/157258.html

相关文章

Mac上本地部署DeepSeek并使用Ollama提供API与Chatbox交互

本指南将带你一步步完成 DeepSeek 本地模型的部署,同时结合 Ollama 提供 API 支持,并使用 Chatbox 作为 UI 界面,实现流畅的离线 AI 交互。 目标:简单易懂,让零基础用户也能顺利完成部署。 1. 安装 Ollama 并运行 Deep…

3. 【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--什么是微服务--微服务的核心特性与设计理念

微服务架构是一种将大型应用程序拆分为一组小型、自治服务的设计风格。每个服务围绕特定的业务功能构建,拥有独立的数据库和业务逻辑,并通过轻量级的通信机制相互协作。种架构模式强调服务的独立性、自治性和可独立部署性,旨在提高系统的可维…

物理服务器的硬件配置都是由哪些构成的?

物理服务器是有着实体的服务器,拥有着独立的硬件设备,能够为企业存储和处理数据信息,那么,物理服务器的硬件配置都是由哪些构成的呢?下面小编就来为大家具体介绍一下物理服务器的硬件配置吧! 首先&#xff…

Kotlin 的作用域函数:apply、let、also、run,以及 with、takeIf 和 takeUnless。函数的用法和使用场景

Kotlin中提供几个常用的作用域函数,如果能将它们熟练运用,那将会有效的提高开发效率,降低开发时间,同时保证程序的稳定。那分别是哪几个作用域函数? Kotlin 的作用域函数:apply、let、also、run,以及 with、takeIf 和 takeUnless。这些函数是编写简洁、富有表现力的 Ko…

PrimeFaces Poll组件实现周期性Ajax调用

在日常的Web开发中,我们常常需要实现一些周期性的功能,例如实时更新数据、轮询服务器状态等。PrimeFaces的Poll组件为我们提供了一种简单而强大的方式来实现这些功能。今天,我们就通过一个具体的例子来学习如何使用Poll组件来实现周期性的Aja…

CMake 小知识:CMAKE_INSTALL_PREFIX 与 option 变量的覆盖规则

1、CMAKE_INSTALL_PREFIX:安装路径的设置与使用 1.1、什么是CMAKE_INSTALL_PREFIX CMAKE_INSTALL_PREFIX 是 CMake 中用于指定项目安装路径的变量。当我们使用 make install 或 cmake --install 命令时,生成的文件(如可执行文件、库文件、头…

AIGC-辅助小说(斗破苍穹为例)创作智能体完整指令(DeepSeek,豆包,千问,Kimi,GPT)

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列AIGC(GPT、DeepSeek、豆包、千问、Kimi)👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资…

动手学图神经网络(10):利用 PyTorch Geometric 进行图分类

利用 PyTorch Geometric 进行图分类 本文将详细介绍如何使用 PyTorch Geometric 库进行图分类任务,同时结合 Weights & Biases(W&B)工具对实验进行跟踪和可视化。 环境设置 首先, 需要安装一些必要的库,包括 PyTorch Geometric 用于实现图神经网络,plotly 用于…