Generate-on-Graph
目录
- 摘要
- 1 引言
- 2 相关工作
- 4 不完整知识图谱问答(IKGQA)
- 4.1 任务介绍
- 4.2 数据集构建
- 5 Generate-on-Graph (GoG)
摘要
为了解决大型语言模型(LLMs)在知识不足和幻觉问题上的困扰,众多研究探索了将LLMs与知识图谱(KGs)结合的方法。然而,这些方法通常在完整的知识图谱问答(KGQA)上进行评估,其中每个问题所需的所有事实三元组都被给定的知识图谱完全覆盖。在这种情况下,LLMs主要作为代理在知识图谱中找到答案实体,而不是有效地整合LLMs的内部知识和外部知识源,例如知识图谱。实际上,知识图谱常常是不完整的,无法涵盖回答问题所需的所有知识。为了模拟这些现实世界的场景并评估LLMs整合内部和外部知识的能力,我们提出利用LLMs进行不完整知识图谱(IKGQA)下的问答,其中提供的知识图谱缺少每个问题所需的一些事实三元组,并构建相应的数据集。为了处理IKGQA,我们提出了一种无需训练的方法,称为生成于图(GoG),它可以在探索知识图谱的同时生成新的事实三元组。具体来说,GoG通过一个思考-搜索-生成框架进行推理,该框架将LLM视为IKGQA中的代理和知识图谱。实验结果在两个数据集上表明,我们的GoG优于所有先前的方法。
1 引言
大型语言模型(LLMs)在各种自然语言处理(NLP)任务中取得了巨大成功。得益于广泛的模型参数和大量的预训练语料库,LLMs可以通过提示学习工程师和上下文学习(Dong et al., 2023)来解决复杂的推理任务,而无需针对特定任务的微调。然而,LLMs仍然存在知识不足和幻觉问题(Huang et al., 2023; Li et al., 2023a),如图1(a)所示。
为了减轻这些问题,许多将LLM与知识图谱(KGs)结合起来的方法被提出(Ji et al., 2021)(Pan et al., 2023),其中知识图谱以三元组格式提供准确的事实知识,而LLMs提供强大的语言处理和知识整合能力。这些工作大致可分为两类,如图2所示:(1)语义解析(SP)方法(Li et al., 2023c; Luo et al., 2024),它们使用LLMs将自然语言问题转换为逻辑查询,然后通过在知识图谱上执行这些逻辑查询来获得答案。(2)检索增强(RA)方法(Li et al., 2023d),从知识图谱中检索与问题相关的信息作为外部知识,以指导LLMs生成答案。
语义解析方法将LLMs专门视为解析器,这严重依赖于知识图谱的质量和完整性(Sun et al., 2023)。尽管检索增强方法声称解决了语义解析方法的缺点,并在传统的知识图谱问答(KGQA)上取得了良好的性能(Yih et al., 2016a),但仍然很难验证它们是否真的整合了来自知识图谱和LLMs的知识。一个关键原因是,在传统的KGQA任务中,每个问题所需的事实三元组都被知识图谱完全覆盖。例如,在图1(b)中的问题是“苹果总部所在地区是什么时区?”LLMs只需要从“苹果总部”开始,依次选择关系谓词“位于”和“时区”来找到答案。这意味着,在这种情况下,LLMs只需要将问题中提到的关系锚定到知识图谱中的具体关系谓词上,就可以找到答案实体“太平洋标准时间”,而不需要真正整合内部和外部知识。然而,一方面,知识图谱常常是不完整的,无法涵盖现实世界场景中回答问题所需的所有知识。例如,在图1(c)中的同样问题,关键的三元组(库比蒂诺,时区,太平洋标准时间)在知识图谱中不存在。另一方面,LLMs包含丰富的知识内容,并具有强大的推理能力。例如,LLMs通常知道一个城市的时区。这引发了研究问题:LLMs能否与不完整的知识图谱结合以回答复杂问题?为了回答这个问题,本文首先提出了一个新的基准,利用LLMs在不完整的知识图谱下进行问答(IKGQA),以模拟现实场景。我们基于现有的公共KGQA数据集构建IKGQA数据集,并通过不同概率随机删除三元组来模拟不同程度不完整的知识图谱。与常规的KGQA不同,IKGQA中相应的知识图谱没有包含每个问题所需的所有事实三元组。这意味着语义解析方法可能无法检索到最终答案,即使生成了正确的SPARQL查询1。此外,以前的检索增强方法在不完整的知识图谱下也无法很好地执行,因为它们仍然严重依赖于检索到的路径,更多细节在附录B中。与KGQA相比,IKGQA具有更大的研究意义,原因如下:(1)它更接近于给定知识图谱不完整,无法回答用户问题的现实世界场景。(2)它可以更好地评估LLMs整合内部和外部知识的能力。我们还提出了一种名为生成于图(GoG)的新方法来处理IKGQA,如图2(c)所示,它不仅将LLM视为探索给定知识图谱以检索相关三元组的代理,而且还作为知识图谱生成额外的事实三元组以回答这个问题。
具体来说,GoG采用了一个思考-搜索-生成框架,包括三个主要步骤:(1)思考:LLMs分解问题,并根据当前状态决定是否进行进一步搜索或生成相关三元组。(2)搜索:LLMs使用预定义的工具,例如执行SPARQL查询的知识图谱工程师,来探索知识图谱并过滤掉不相关的三元组。(3)生成:LLMs利用其内部知识和推理能力,根据探索的子图和验证它们来生成所需的新事实三元组。GoG将重复这些步骤,直到获得足够的信息来回答这个问题。代码和数据可在https://github.com/YaooXu/GoG找到。本文的主要贡献可以总结如下:
我们提出利用LLMs在不完整的知识图谱(IKGQA)下进行问答以更好地评估LLMs的能力,并基于现有的KGQA数据集构建相应的IKGQA数据集。
我们提出了生成于图(GoG),它使用思考-搜索-生成框架来解决IKGQA。
实验结果在两个数据集上显示了GoG的优越性,并证明了LLMs可以与不完整的知识图谱结合以回答复杂问题。
2 相关工作
在不完整知识图谱下的问题回答。一些先前的工作[20][21][22][23]尝试训练知识图谱嵌入,以预测在不完整知识图谱下通过相似性分数得到的答案。与这些基于知识图谱嵌入(KGE)的先前工作相比,我们提出利用LLMs在不完整的知识图谱下进行问答,以研究LLMs是否能够很好地整合内部和外部知识。
统一知识图谱和LLMs进行知识图谱问答。已经提出了各种方法将知识图谱和LLMs统一起来解决知识图谱问答,这些方法可以分为两类:语义解析(SP)方法和检索增强(RA)方法。SP方法使用LLMs将问题转换为结构化查询。然后,这些查询可以由知识图谱引擎执行,以基于知识图谱得出答案。这些方法首先生成初步的逻辑形式作为草稿,然后使用实体和关系绑定器,例如KB-BINDER[24]和ChatKBQA[25],将草稿绑定到可执行的查询上。然而,这些方法的有效性在很大程度上依赖于生成的查询的质量和知识图谱的完整性。RA方法从知识图谱中检索相关信息以提高推理性能[26]。ToG[27]将LLM视为一个代理,逐步交互式地探索知识图谱上的关系路径,并基于检索到的路径进行推理。RoG[28]首先生成关系路径作为忠实的计划,然后使用它们来从知识图谱中检索有效的推理路径,供LLMs进行推理。Readi[29]生成一个推理路径,并且仅在必要时编辑该路径。Salnikov等人提出了一种“生成然后选择”的方法,首先使用LLMs直接生成答案,然后构建子图,并选择最有可能包含正确答案的子图[30]。我们的GoG属于检索增强方法,我们也利用了LLMs的知识建模能力,这与GAG[31]也相似。
通过提示激发LLMs的推理。许多工作已经提出,通过提示激发LLMs的推理能力,以解决复杂任务[32][33]。Complex CoT[34]创建并提炼具有更多推理步骤的推理示例,以激发LLMs更好的推理能力。Self-Consistency[35]充分探索各种推理方式,以提高它们在推理任务上的性能。DecompP[36]通过将复杂任务分解为更简单的子任务,并将这些子任务委托给特定子任务的LLMs来解决复杂任务。ReAct[37]将LLM视为代理,与环境互动并做出决策,以从外部源检索信息。GoG可以被视为ReAct和DecompP的融合,从而实现更全面地利用LLMs内部的多样化能力来解决复杂问题。
4 不完整知识图谱问答(IKGQA)
4.1 任务介绍
4.2 数据集构建
目前,尚无现成的IKGQA数据集。在本文中,为了促进相关研究,我们基于两个广泛使用的知识图谱问答数据集:WebQuestionSP(WebQSP)(Yih et al., 2016b)和Complex WebQuestion(CWQ)(Talmor and Berant, 2018),构建了两个IKGQA数据集。这两个数据集都使用Freebase作为它们的背景知识图谱。为了模拟不完整的知识图谱,我们从原始知识图谱中随机删除了一些关键三元组,这些三元组出现在每个问题的黄金关系路径中。通过这样做,简单的语义解析方法几乎无法获得正确的答案。为了节省计算成本,我们从这两个数据集中随机选取了1,000个样本来构建IKGQA问题。生成问题的关键三元组的过程如图1所示。
5 Generate-on-Graph (GoG)
在本节中,我们介绍我们的方法Generate-on-Graph(GoG),它可以整合知识图谱和LLMs的知识,并利用LLMs的推理能力。GoG的工作流程如图3©所示。GoG采用了思考-搜索-生成框架,由三个主要步骤组成:思考、搜索和生成。
相关文章:

Generate-on-Graph
目录 摘要1 引言2 相关工作4 不完整知识图谱问答(IKGQA)4.1 任务介绍4.2 数据集构建 5 Generate-on-Graph (GoG) 摘要 为了解决大型语言模型(LLMs)在知识不足和幻觉问题上的困扰,众多研究探索了将LLMs与知识图谱&…...

学习笔记——交换——STP(生成树)简介
一、技术背景 1、生成树技术背景 交换机单线路组网,存在单点故障(上左图),上行线路及设备都不具备冗余性,一旦链路或上行设备发生故障,业务将会中断。 为了使得网络更加健壮、更具有冗余性,将拓扑修改为(上右图)接入…...

【Linux从入门到精通一】操作系统概述与Linux初识
个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] 📱…...
Git 深度解析 —— 从基础到进阶
目录 1. Git 基础概念 1.1 版本控制 (Version Control) 1.2 分布式版本控制 (Distributed Version Control) 1.3 核心概念 1.4 Git 工作流程 2. Git 常用命令 2.1 初始化仓库 2.2 添加文件 2.3 提交修改 2.4 查看状态 2.5 查看历史记录 2.6 切换分支 2.7 创建分支…...
PCIE-变量总结
1.changed_speed_recovery: 表示链路双方已经将链路速率协商为更高的速率。 在configuration.complete状态下此变量会reset成0; 当前状态在recovery.rcvrlock状态: 在经过24ms的timeout之后,任何一个已经configured的lane&…...
【iOS】AFNetworing初步学习
文章目录 前言OC的网络请求步骤单例封装网络请求使用AFNetworking进行网络请求 前言 在暑假,学习了一些简单的网络请求的内容,本周学习了AFNetworking的基本使用,通过本篇博客进行一个简单的介绍。 OC的网络请求步骤 简单的网络请求主要有…...
【数据结构】堆的创建
Heap.h #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<assert.h>//创建堆结构体 typedef int HPDateType; typedef struct Heap {HPDateType* a;int size;int capacity; }HP;//堆的初始化 void HPInit(HP* php);//堆的销毁 voi…...

Linux下Git操作
一、基本命令 1、创建 git 目录(工作区) mkdir gitcode 2、创建本地仓库,生成 .git 隐藏目录 git init 3、设置配置项 git config user.name "xxx" git config user.email "....." 4、查看配置项 git config -l …...

缺失d3dx9_42.dll如何修复,d3dx9_42.dll故障的6种修复方法分享
在电脑使用过程中,许多游戏玩家和软件用户可能都遇到过d3dx9_42.dll丢失的问题。这个问题会导致游戏或软件无法正常运行,给用户带来诸多不便。本文将详细解读d3dx9_42.dll丢失的原因、影响及解决方案,帮助大家顺利解决这个问题。 一、d3dx9_4…...

深入理解Android WebView的加载流程与事件回调
文章目录 一、WebView 加载流程时序图二、WebView 加载流程回调函数说明三、AwContents3.1 主要功能和职责3.2 架构和实现3.3 使用场景 四、利用WebView回调函数检测白屏4.1 使用onPageStarted和onPageFinished检测加载时间4.2 利用onReceivedError和onReceivedHttpError检测加…...
机器视觉相机自动对焦算法
第一,Brenner梯度法、 第二,Tenegrad梯度法、 第三,laplace梯度法、 第四,方差法、 第五,能量梯度法。 此实例通过使用Halcon实现5种清晰度算法函数: 1. 方差算法函数; 2. 拉普拉斯能量函数…...

StarTowerChain:开启去中心化创新篇章
官网: www.startower.fr 在当今创新驱动的时代,StarTowerChain 以其独特的去中心化创新模式,为我们带来了新的希望和机遇。去中心化,这个充满活力与创造力的理念,正引领着我们走向未来的创新之路。 StarTowerChain …...

SpringCloudStream使用StreamBridge实现延时队列
利用RabbitMQ实现消息的延迟队列 一、安装RabbitMQ 1、安装rabbitmq 安装可以看https://blog.csdn.net/qq_38618691/article/details/118223851,进行安装。 2、安装插件 安装完毕后,exchange是不支持延迟类型的,需要手动安装插件,需要和安装的rabbitmq版本一致 https:…...
MATLAB中head函数用法
目录 语法 说明 示例 显示矩阵的前八行 显示表的前三行 返回表的前八行 head函数的功能是获取数组或表的顶行。 语法 head(A) head(A,k) B head(___) 说明 head(A) 在命令行窗口中显示数组、表或时间表 A 的前八行,但不存储值。 head(A,k) 显示 A 的前 k …...
golang 基本数据类型
1. go语言的数据类型简介 golang的数据类型分为两大类,一类是基本数据类型和符合数据类型; 按照传递的内容分:传递本身数据和传递地址; golang和java很相似,都是值传递,不过分为传递的值和传递的地址&a…...

各种查询sql介绍
1. 关联查询(JOIN) 关联查询用于从多个表中检索数据。它基于两个或多个表之间的共同字段(通常是主键和外键)来组合数据。 内连接(INNER JOIN): sql SELECT a.name, b.order_date FROM custome…...
Guava防击穿回源-异步防击穿
异步防击穿策略 在高并发环境下,缓存击穿(Cache Stampede)是一种常见的问题。当缓存中的热点数据失效或未命中时,大量并发请求同时访问后端数据源(如数据库),可能导致后端系统压力骤增,甚至出现崩溃。为了有效防止这种情况,可以利用Guava提供的异步缓存加载机制(类似…...

人工智能正在扼杀云计算的可持续性
可持续性曾是公共云计算中备受推崇的优势。企业和云提供商大肆宣扬他们的绿色计划,推广采用可再生能源的数据中心,以减少碳足迹。 近几个月来,这个话题已悄然淡出人们的视线。罪魁祸首是什么?对人工智能功能的无限需求正在推动云…...

C# 条形码、二维码标签打印程序
1、条码标答打印主界面 2、打印设置 3、生成QR代码 private void GetBarcode_T(string lr) { QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();//创建一个对象 qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //设置编码测量…...

嵌入式入门学习——6Protues点亮数码管,认识位码和段码,分辨共阴还是共阳(数字时钟第一步)
0 系列文章入口 嵌入式入门学习——0快速入门,Let‘s Do It! 首先新建基于Arduino UNO的protues工程,见本系列第3篇文章 1 点“P”按钮找器件 2 输入“seg”或“digit”查找数码管器件 3 找到我们想要的6位7段数码管 4如图A、B…DP都是段码…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

Mac flutter环境搭建
一、下载flutter sdk 制作 Android 应用 | Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 1、查看mac电脑处理器选择sdk 2、解压 unzip ~/Downloads/flutter_macos_arm64_3.32.2-stable.zip \ -d ~/development/ 3、添加环境变量 命令行打开配置环境变量文件 ope…...
在Spring Boot中集成RabbitMQ的完整指南
前言 在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...
ffmpeg(三):处理原始数据命令
FFmpeg 可以直接处理原始音频和视频数据(Raw PCM、YUV 等),常见场景包括: 将原始 YUV 图像编码为 H.264 视频将 PCM 音频编码为 AAC 或 MP3对原始音视频数据进行封装(如封装为 MP4、TS) 处理原始 YUV 视频…...

免费批量Markdown转Word工具
免费批量Markdown转Word工具 一款简单易用的批量Markdown文档转换工具,支持将多个Markdown文件一键转换为Word文档。完全免费,无需安装,解压即用! 官方网站 访问官方展示页面了解更多信息:http://mutou888.com/pro…...