当前位置: 首页 > news >正文

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] &#x1f4f1…...

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 目录&#xff08;工作区&#xff09; mkdir gitcode 2、创建本地仓库&#xff0c;生成 .git 隐藏目录 git init 3、设置配置项 git config user.name "xxx" git config user.email "....." 4、查看配置项 git config -l …...

缺失d3dx9_42.dll如何修复,d3dx9_42.dll故障的6种修复方法分享

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

深入理解Android WebView的加载流程与事件回调

文章目录 一、WebView 加载流程时序图二、WebView 加载流程回调函数说明三、AwContents3.1 主要功能和职责3.2 架构和实现3.3 使用场景 四、利用WebView回调函数检测白屏4.1 使用onPageStarted和onPageFinished检测加载时间4.2 利用onReceivedError和onReceivedHttpError检测加…...

机器视觉相机自动对焦算法

第一&#xff0c;Brenner梯度法、 第二&#xff0c;Tenegrad梯度法、 第三&#xff0c;laplace梯度法、 第四&#xff0c;方差法、 第五&#xff0c;能量梯度法。 此实例通过使用Halcon实现5种清晰度算法函数&#xff1a; 1. 方差算法函数&#xff1b; 2. 拉普拉斯能量函数…...

StarTowerChain:开启去中心化创新篇章

官网&#xff1a; www.startower.fr 在当今创新驱动的时代&#xff0c;StarTowerChain 以其独特的去中心化创新模式&#xff0c;为我们带来了新的希望和机遇。去中心化&#xff0c;这个充满活力与创造力的理念&#xff0c;正引领着我们走向未来的创新之路。 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 的前八行&#xff0c;但不存储值。 head(A,k) 显示 A 的前 k …...

golang 基本数据类型

1. go语言的数据类型简介 golang的数据类型分为两大类&#xff0c;一类是基本数据类型和符合数据类型&#xff1b; 按照传递的内容分&#xff1a;传递本身数据和传递地址&#xff1b; golang和java很相似&#xff0c;都是值传递&#xff0c;不过分为传递的值和传递的地址&a…...

各种查询sql介绍

1. 关联查询&#xff08;JOIN&#xff09; 关联查询用于从多个表中检索数据。它基于两个或多个表之间的共同字段&#xff08;通常是主键和外键&#xff09;来组合数据。 内连接&#xff08;INNER JOIN&#xff09;&#xff1a; sql SELECT a.name, b.order_date FROM custome…...

Guava防击穿回源-异步防击穿

异步防击穿策略 在高并发环境下,缓存击穿(Cache Stampede)是一种常见的问题。当缓存中的热点数据失效或未命中时,大量并发请求同时访问后端数据源(如数据库),可能导致后端系统压力骤增,甚至出现崩溃。为了有效防止这种情况,可以利用Guava提供的异步缓存加载机制(类似…...

人工智能正在扼杀云计算的可持续性

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

C# 条形码、二维码标签打印程序

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

嵌入式入门学习——6Protues点亮数码管,认识位码和段码,分辨共阴还是共阳(数字时钟第一步)

0 系列文章入口 嵌入式入门学习——0快速入门&#xff0c;Let‘s Do It&#xff01; 首先新建基于Arduino UNO的protues工程&#xff0c;见本系列第3篇文章 1 点“P”按钮找器件 2 输入“seg”或“digit”查找数码管器件 3 找到我们想要的6位7段数码管 4如图A、B…DP都是段码…...

poisson过程——随机模拟(Python和R实现)

Python实现 exponential()使用&#xff0c;自动poisson过程实现。 import numpy as np import matplotlib.pyplot as plt# Parameters lambda_rate 5 # rate parameter (events per time unit) T 10 # total time# Generate Poisson process times np.random.exponential(…...

100 种下划线 / 覆盖层动画 | 终极 CSS(层叠样式表)集合

还在为你的菜单项和链接寻找动画效果而感到疲惫吗&#xff1f; 不用再找了&#xff01;这里列出了 100 多种不同的动画。从简单的到更复杂的&#xff0c;你肯定能找到自己想要的。 无需 SVG&#xff08;可缩放矢量图形&#xff09;&#xff0c;无需 JavaScript&#xff08;脚…...

华为ICT大赛2024-2025网络赛道考试分析

华为ICT大赛2024-2025正在报名中&#xff0c;网络赛道的同学如何备考&#xff0c;了解考试内容呢&#xff1f; 一、考试概况 华为ICT大赛分为4个赛段&#xff0c;分别为省赛初赛、省赛复赛、中国总决赛&#xff0c;全球总决赛。其中对应的能力级别分别如下&#xff1a; 省赛…...

linux 效率化 - 输入法 - fcitx5

安装 Fcitx5 1. 卸载 ibus 框架 由于 ibus 和 fcitx 可能会冲突&#xff0c;先卸载 ibus&#xff08;暂未确认原因&#xff09; sudo apt remove --purge ibus2. 安装 fcitx5 输入法框架 sudo apt update sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk…...

YOLOv11改进策略【卷积层】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构

一、本文介绍 本文记录的是基于RepVit的YOLOv11轻量化改进方法研究。RepVit的网络结构借鉴ViT的设计理念,通过分离的token mixe和channel mixer减少推理时的计算和内存成本,同时减少扩展比率并增加宽度,降低延迟,并通过加倍通道来弥补参数大幅减少的问题,提高了准确性。本…...

一天认识一个硬件之路由器

今天来给大家分享一下路由器的知识&#xff0c;先来说一下什么是路由器&#xff0c;路由器是一种计算机网络设备&#xff0c;它的主要作用是在不同的网络之间转发数据包&#xff0c;实现数据的传输和共享&#xff0c;介绍完了什么是路由器&#xff0c;再来介绍一下路由器的定义…...

【scene_manager】与 MoveIt 机器人的规划场景进行交互

scene_manager Scene Manager包是由 Robotnik 创建的 ROS 包&#xff0c;旨在帮助构建和与 MoveIt 机器人的规划场景进行交互。 背景信息 MoveIt 规划场景 是一个用于存储机器人周围世界的表示&#xff08;外部碰撞&#xff09;以及机器人自身状态&#xff08;内部碰撞和当…...

数据结构单向链表的插入和删除(一)

链表 一、链表结构&#xff1a; &#xff08;物理存储结构上不连续&#xff0c;逻辑上连续&#xff1b;大小不固定&#xff09;二、单链表&#xff1a;三、单项链表的代码实现&#xff1a;四、开发可用的链表&#xff1a;四、单链表的效率分析&#xff1a; 一、链表结构&#x…...

鸿蒙网络编程系列30-断点续传下载文件示例

1. 断点续传简介 在文件的下载中&#xff0c;特别是大文件的下载中&#xff0c;可能会出现各种原因导致的下载暂停情况&#xff0c;如果不做特殊处理&#xff0c;下次还需要从头开始下载&#xff0c;既浪费了时间&#xff0c;又浪费了流量。不过&#xff0c;HTTP协议通过Range…...

深入拆解TomcatJetty(二)

深入拆解Tomcat&Jetty&#xff08;二&#xff09; 专栏地址&#xff1a;https://time.geekbang.org/column/intro/100027701 1、Tomcat支持的IO模型和应用层协议 IO模型&#xff1a; NIO&#xff1a;非阻塞 I/O&#xff0c;采用 Java NIO 类库实现。NIO2&#xff1a;异…...