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

论文浅尝 | THINK-ON-GRAPH:基于知识图谱的深层次且可靠的大语言模型推理方法...

219919b8876112fa315e6006759a9edd.png

笔记整理:刘佳俊,东南大学硕士,研究方向为知识图谱

链接:https://arxiv.org/pdf/2307.07697.pdf

1. 动机

本文是IDEA研究院的工作,这篇工作将知识图谱的和大语言模型推理进行了结合,在每一步图推理中利用大语言模型检索图结构数据,实现了深层且可靠的推理。

1.1 大语言模型的问题

尽管大型语言模型(LLM)在各种任务中都取得了显著的表现,但在面临复杂的知识推理任务时有很大的局限性

(1)LLM通常无法准确回答需要预训练阶段以外的专业知识的问题或需要长逻辑链和多跳知识推理的问题

(2)LLM缺乏可靠性、可解释性和透明度,这引起了用户对“幻觉”和“有害文本”风险的担忧

(3)LLM的训练过程通常既昂贵又耗时,这使得它们很难保持最新的知识。

1.2 “LLM ⊕ KG”方法的局限性

一个自然而有潜力的解决方案是结合外部知识,如知识图谱(KGs),以帮助改进LLM推理。KGs提供结构化、明确和可编辑的知识表示,提供了一种互补的策略来减轻LLM的局限性。这些方法遵循一个范式:从KGs中检索信息,相应地增加提示,并将增加的提示输入LLM,这篇论文称为“LLM ⊕ KG”。

尽管LLM旨在整合LLM和KG的力量,但在这种范式中,LLM扮演着翻译器的角色,将输入问题转换为机器可理解的命令,用于KG的搜索和推理,但它并不直接参与图推理过程。不幸的是,这种低耦合度的范式有其自身的局限性,其成功在很大程度上取决于KG的完整性和高质量。

1.3 “LLM ⊗ KG”范式的提出

本文提出了一种新的高耦合“LLM ⊗ KG”范式,其中KG和LLM协同工作,在图推理的每一步中互补彼此的能力。这篇文章称为“Think-on-Graph”,ToG允许LLM动态探索KG中的许多推理路径,并相应地做出决策。其具有以下优点:

(1)深度推理

(2)可靠推理

(3)灵活高效

758cc185489e63ea5f04965afeee1767.png

图1  针对问题“堪培拉所在的国家现在的多数党是什么?”,三种LLM推理范式的典型工作流程:(a) 仅LLM(例如思想链提示),由于知识库时间落后答案错误(b) LLM⊕KG(例如,通过LLM生成的SPARQL查询进行KBQA),图谱查询失败(c)LLM⊗KG(如,ToG)深度推理成功得到答案。

2. 方法

6861ad565d9f0516c11fbc437ccdfe12.png

图2 ToG的推理过程,包含多个关系探索、实体探索过程并且包含搜索和修剪过程,最终生成多个推理路径,从中得到答案

2.1 ToG

ToG提示LLM迭代地探索KGs上的多个可能的推理路径,直到LLM确定可以根据当前推理路径回答问题。整个推理过程包括以下三个阶段:初始化、探索和推理。

(1)初始化

ToG首先提示LLM自动提取有问题的主题实体,并获得问题的前N个主题实体。请注意,主题实体的数量可能小于N。

(2)探索

第D次迭代中的探索阶段旨在利用LLM,根据问题x从当前前N个实体集  的相邻实体中识别出最相关的前N个实体  ,并用  扩展前N个推理路径P。为了解决LLM处理大量相邻实体的复杂性,ToG实施了两步探索策略:首先,探索出重要的关系,然后使用选定的关系来指导实体探索。

关系探索

关系探索是一个深度为1、宽度为N的集束搜索(beam search)过程,从  到  。整个过程可以分解为两个步骤: 搜索和修剪。LLM充当自动完成此过程的代理。

搜索:搜索在第D次迭代开始时,关系探索阶段首先为每个推理路径  搜索链接到尾部实体  的关系  。这些关系被聚合为  。

修剪:一旦我们从关系搜索中获得了候选关系集  和扩展的候选推理路径  ,我们就可以利用LLM基于问题x的文字信息和候选关系  ,从  中选择出以尾部关系  结尾的新的前N个推理路径P。

实体探索

与关系探索类似,实体探索也是LLM从  到  执行的波束搜索过程,由两个步骤组成:搜索和修剪。

搜索:一旦我们从关系探索中获得了新的前N个推理路径P和一组新的尾部关系  ,对于每个关系路径  ,我们可以通过查询  或  来探索候选实体集  ,其中  表示  的尾部实体和关系。我们可以将  聚合到  中,并将前N条推理路径P扩展到具有尾部实体  的  。

修剪:由于每个候选集合  中的实体是用自然语言表示的,因此我们可以利用LLM来选择新的前N个推理路径P,该路径P以  的尾部实体  结束。

在执行上述两个探索之后,我们重建新的前N个推理路径P,其中每个路径的长度增加1。每个修剪步骤最多需要N个LLM调用。

(3)推理

在通过探索过程获得当前推理路径P后,我们提示LLM评估当前推理路径是否足以生成答案。如果评估结果为肯定,我们将提示LLM使用推理路径生成答案,并将查询作为输入,如图2所示。相反,如果评估结果为否定,我们重复探索和推理步骤,直到评估结果为肯定或达到最大搜索深度  。如果算法尚未结束,则表明即使达到  ,ToG仍然无法探索解决问题的推理路径。在这种情况下,ToG仅基于LLM中的固有知识生成答案。

ToG的整个推理过程包括D个探索阶段和D个评估步骤以及一个生成步骤,该生成步骤最多需要对LLM进行2ND+D+1次调用。

2.2 ToG-R

以前的KBQA方法,特别是基于语义解析的方法,主要依赖于问题中的关系信息来生成正式查询。受此启发,本文提出了基于关系的ToG(ToG-R),它探索从主题实体开始的前N个关系链  ,而不是基于三元组的推理路径。ToG-R在每次迭代中依次执行关系搜索、关系修剪和实体搜索,与ToG相同。然后ToG-R基于通过实体搜索获得的以  结尾的所有候选推理路径来执行推理步骤。如果LLM确定检索到的候选推理路径不包含LLM回答问题的足够信息,则我们从候选实体  中随机抽取N个实体,并继续进行下一次迭代。

假设每个实体集  中的实体可能属于同一实体类并具有相似的相邻关系,则修剪实体集  的结果可能对后续的关系探索几乎没有影响。因此,我们在ToG中使用随机集束搜索而不是LLM约束的波束搜索来进行实体修剪,称为随机修剪。oG-R最多需要对LLM进行ND+D+1调用。

ToG-R对比ToG的优势

(1)它消除了使用LLM修剪实体的过程的需要,从而减少了总体成本和推理时间。

(2)ToG-R主要强调关系的字面信息,当中间实体的字面信息缺失或LLM不熟悉时,降低了错误推理的风险。

3. 实验

3.1 实验设计

数据集和评估采用最近常用的方法,如表1所示,共做了五个任务,包含九个数据集,使用了Freebase和Wikidata两个知识图谱用于推理。并且使用了多个大语言模型验证即插即用的便捷性,分别是ChatGPT, GPT4和Llama-2,其中。测试指标采用标准绝对匹配(exact match)准确率。因为基于特定数据集的大模型微调方法仅在特定相关领域有较好表现,所以不将微调方法的SOTA水平作为比较。

2ee4ab1ced6a1fde9ec576c65ff11346.png

表1 ToG在不同数据集上的结果

3.2 实验结果

(1)与其他方法对比的结果:如表1所示,使用ToG方法所有的任务上效果都优于CoT方法的SOTA水平,甚至部分超过了微调方法。在大部分场景下,ToG方法优于ToG-R方法,因为ToG按照三元组推理的方法比ToG-R关系推理能够获得更多中间实体的信息。

(2)不同基座模型的表现 :实验表明ToG的效果随着基座模型能力的提升而提升。并且即使使用最小的模型Llama-2(70B参数),ToG也优于GPT-4的CoT。小型LLM的ToG方案可能是替代昂贵大LLM的候选者,特别是在外部KG可以覆盖的垂直场景中。

(3)消融研究:针对搜索宽度和深度,实验表明宽度和深度设置为3是最合适的。针对知识图谱的选择,针对不同的任务越专业的知识图谱效果越好。针对提示的设计,使用ToG的三元组格式提示效果优于序列格式、句子格式以及ToG-R的格式。针对不同的修剪工具,直接让大模型做修剪效果最佳。

(4)知识的可追溯性和可纠正性:ToG的显式推理路径可以显示给用户,体现了知识的可追溯性。同时,根据ToG的提示,用户可以要求LLM更正KG出现的错误,并用正确的信息回答相同的问题。ToG不仅用KG增强LLM,而且用LLM提高KG的质量,称为知识灌输。

4. 总结

这篇文章介绍了LLM⊗KG范式,用于以紧密耦合的方式集成LLM和KG,并提出了图上思考(ToG)算法框架,该框架利用LLM作为参与KG推理的智能代理来实现更好的决策。实验结果表明,ToG在没有额外训练成本的情况下优于现有的部分基于微调的方法和基于提示的方法,并减轻了LLM的幻觉问题。


OpenKG

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

737d8b9647309d016b6a24eeda61a67c.png

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

相关文章:

论文浅尝 | THINK-ON-GRAPH:基于知识图谱的深层次且可靠的大语言模型推理方法...

笔记整理:刘佳俊,东南大学硕士,研究方向为知识图谱 链接:https://arxiv.org/pdf/2307.07697.pdf 1. 动机 本文是IDEA研究院的工作,这篇工作将知识图谱的和大语言模型推理进行了结合,在每一步图推理中利用大…...

前端科举八股文-VUE篇

前端科举八股文-VUE篇 Vue响应式的基本原理?computed和watch的区别computed和methods的区别Slot是什么 ? 作用域插槽是什么?组件缓冲keep-alive是什么? 讲讲原理v-if,v-show的区别v-modal如何实现双向绑定组件中的data属性为什么是一个函数而不是对象…...

Websocket服务端结合内网穿透发布公网实现远程访问发送信息

文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…...

GitHub 的底层数据库从 MySQL 5.7 无缝升级到 MySQL 8.0 的实践经验

提到 MySQL 这个数据库软件,相信大家再熟悉不过了,不论是市场流行度还是占有率一直一来都非常靠前。 那再提到 MySQL 5.7 这个具体的版本,大家是不是也同样感到非常熟悉? 相信不少个人或者团队的生产环境所用的 MySQL 数据库也曾…...

概率图模型在自然语言处理中的应用

概率图模型在自然语言处理(NLP)中的应用广泛且重要,它结合了概率论和图论,为处理复杂系统中变量之间的概率依赖关系提供了有效的建模方法。以下是概率图模型在NLP中的几个主要应用,结合参考文章中的相关信息进行详细说明: 核心概念与分类: 概率图模型的核心思想是利用图…...

AI网络爬虫:对网页指定区域批量截图

对网页指定区域批量截图,可以在deepseek的代码助手中输入提示词: 你是一个Python编程专家,一步一步的思考,完成一个对网页指定区域截图的python脚本的任务,具体步骤如下: 设置User-Agent: Mozilla/5.0 (…...

centos系统清理docker日志文件

centos系统清理docker日志文件 1.查看docker根目录位置2.清理日志 1.查看docker根目录位置 命令:docker info ,将Docker Root Dir 的值复制下来。如果目录中包含 等特殊符号的目录,需要转义 2.清理日志 创建文件:vim docker_logs_clean.…...

算法金 | Python 中有没有所谓的 main 函数?为什么?

​大侠幸会,在下全网同名[算法金] 0 基础转 AI 上岸,多个算法赛 Top [日更万日,让更多人享受智能乐趣] 定义和背景 在讨论Python为何没有像C或Java那样的明确的main函数之前,让我们先理解一下什么是main函数以及它在其他编程语言…...

RocketMQ相关知识知多少

一、RocketMQ的定义 官网网址:领域模型概述 | RocketMQ Apache RocketMQ 自诞生以来,因其架构简单、业务功能丰富、具备极强可扩展性等特点被众多企业开发者以及云厂商广泛采用。历经十余年的大规模场景打磨,RocketMQ 已经成为业内共识的金…...

C++vector部分实现及感悟

myvector.h #pragma once #include<assert.h> #include<iostream> #include<vector> using namespace std; namespace bit {template<class T>//必须使用typename场景\template<typename T>与template<class T>一般情况下这两个通用&#…...

MySql什么时候表锁or行锁?

文章目录 锁的基本概念共享锁&#xff08;读锁&#xff09;排他锁&#xff08;写锁&#xff09;锁的兼容性锁的升级和降级 全局锁、表锁、行锁全局锁表锁行锁 何时使用行锁何时使用表锁额外思考&#xff1a; 在数据库的世界里&#xff0c;性能优化是一个永恒的话题。MySQL作为广…...

Stable Diffusion WebUI详细使用指南

Stable Diffusion WebUI&#xff08;AUTOMATIC1111&#xff0c;简称A1111&#xff09;是一个为高级用户设计的图形用户界面&#xff08;GUI&#xff09;&#xff0c;它提供了丰富的功能和灵活性&#xff0c;以满足复杂和高级的图像生成需求。由于其强大的功能和社区的活跃参与&…...

Android中focusableInTouchMode会导致第一次点击事件失效

我们很多时候会对某些View设置点击事件&#xff0c;但是&#xff0c;当对这个View同时设置了focusableInTouchModetrue时&#xff0c;第一次点击事件会被消费为为此View获取焦点。 <Viewandroid:id"id/v_click"android:layout_width"match_parent"andr…...

C语言| 输出菱形*(梳理篇II)

C语言| 输出菱形*-CSDN博客 凡事还是得自己独立思考后&#xff0c;写一遍程序才能发现问题所在。 容易犯的错误&#xff1a; 【完整程序注释】 运行结果 /* 输出菱形 1 总行数 n为奇数&#xff0c;分上三角形下三角形&#xff0c;只考虑左边的空格和星号* 2 上三角形 行数…...

conda使用

因为时不时搜索conda操作&#xff0c;就想着逐步将先前的conda使用整理在一起&#xff0c;并添加新的内容。 目录 0.简介1.常用操作场景1.1 取消终端conda自动启动 0.简介 1.常用操作场景 1.1 取消终端conda自动启动 安装conda后取消命令行前出现的base&#xff0c;取消每次…...

适合小白学习的项目1949java图片管理系统 Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java图片管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助采用了java设计&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统采用web模式&#xff0c;系统主要采用B/S模式开发。开发 环境为TOMCAT7.0,Myeclipse8.5开发&…...

Jmeter实战教程入门讲解

前言 通过前面对Jmeter元件的讲解&#xff0c;大家应该都知道常用元件的作用和使用了。编写Jmeter脚本前我们需要知道Jmeter元件的执行顺序&#xff0c;可以看看我这篇性能测试学习之路&#xff08;三&#xff09;—初识Jmeter来了解下。下面我将以工作中的一个简单的实例带大…...

Flutter 中的 PrimaryScrollController 小部件:全面指南

Flutter 中的 PrimaryScrollController 小部件&#xff1a;全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架&#xff0c;它允许开发者使用 Dart 语言构建高性能、美观的移动、Web 和桌面应用。在 Flutter 的滚动机制中&#xff0c;PrimaryScrollController 起着至关重…...

Windows线程同步的四种方式和区别

1. Windows线程同步的四种方式 2. 区别 Critical Section更多强调的是保护&#xff0c;Event对象、Mutex对象与Semaphore对象更多的强调的是同步&#xff1b;Critical Section对象是无法设置等待超时的&#xff0c;而其他三个对象则可以设置等待超时&#xff0c;从这一点来讲…...

C++ 20新特性之Concepts

C20的新特性之一Concepts&#xff0c;为C的模板编程带来了重大的改进和便利。以下是关于C20中Concepts特性的详细介绍&#xff1a; 基本概念 定义&#xff1a;Concepts是C20中引入的一种新的语言特性&#xff0c;用于限制类和函数模板的模板类型和非类型参数。它允许你为模板编…...

MATLAB基础应用精讲-【数模应用】SPSSAU数据处理

目录 SPSSAU 标题修改 1、说明 2、举例 数据标签 1、说明 2、举例...

AI大模型探索之路-实战篇15: Agent智能数据分析平台之整合封装Tools和Memory功能代码

系列篇章&#x1f4a5; AI大模型探索之路-实战篇4&#xff1a;深入DB-GPT数据应用开发框架调研 AI大模型探索之路-实战篇5&#xff1a;探索Open Interpreter开放代码解释器调研 AI大模型探索之路-实战篇6&#xff1a;掌握Function Calling的详细流程 AI大模型探索之路-实战篇7…...

CV每日论文--2024.6.4

1、Mixed Diffusion for 3D Indoor Scene Synthesis 中文 标题&#xff1a;用于 3D 室内场景合成的混合扩散 简介&#xff1a;这篇论文提出了一种名为MiDiffusion的混合离散-连续扩散模型,用于从给定的房间类型、平面图和可能存在的物体中合成逼真的3D室内场景。 作者指出,该…...

Android bw_costly_<iface>链

测试时关注到bw_costly_链 因为和iface有关。猜测这个链是动态生成的。 开关数据业务测试&#xff0c;果然关闭数据业务后&#xff0c;bw_OUTPUT中不再会调用bw_costly_rmnet_data3&#xff0c;也没有bw_costly_rmnet_data3这个链了。 再次打开数据业务后出现了bw_costly_rmnet…...

TypeScript 项目,自身 package 是 A,它引用了 B package。项目编译时,选择依赖版本的机制是什么?

在 TypeScript 项目中&#xff0c;当 package A 引用了 package B&#xff0c;编译 A 的过程中&#xff0c;B package 将按照 B package 自身的 package.json 文件中指定的各个库的版本进行编译&#xff0c;而不是按照 A package 中的库版本。 每个 package 都有自己的依赖项和…...

【数据结构】链表----头结点的作用

链表是一种常见的数据结构&#xff0c;由一系列节点&#xff08;Node&#xff09;组成&#xff0c;每个节点包含数据和指向下一个节点的指针。链表的头结点&#xff08;Head Node&#xff09;也称为哨兵位&#xff0c;是链表的起点&#xff0c;通常有以下几个重要作用&#xff…...

(CVPRW,2024)可学习的提示:遥感领域小样本语义分割

文章目录 相关资料摘要引言方法训练基础类别新类别推理 相关资料 论文&#xff1a;Learnable Prompt for Few-Shot Semantic Segmentation in Remote Sensing Domain 代码&#xff1a;https://github.com/SteveImmanuel/OEM-Few-Shot-Learnable-Prompt 摘要 小样本分割是一项…...

tinyrenderer-切线空间法线贴图

法线贴图 法线贴图分两种&#xff0c;一种是模型空间中的&#xff0c;一种是切线空间中的 模型空间中的法线贴图的rgb代表着每个渲染像素法线的xyz&#xff0c;与顶点坐标处于一个空间&#xff0c;图片是五颜六色的。 切线空间中的法线贴图的rgb同样对应xyz&#xff0c;是切线…...

C++的vector使用优化

我们在上一章说了如何使用这个vector动态数组&#xff0c;这章我们说说如何更好的使用它以及它是如何工作的。当你创建一个vector&#xff0c;然后使用push_back添加元素&#xff0c;当当前的vector的内存不够时&#xff0c;会从内存中的旧位置复制到内存中的新位置&#xff0c…...

关于stm32的复用和重映射问题

目录 需求IO口的复用和重映射使用复用复用加重映射 总结参考资料 需求 一开始使用stm32c8t6&#xff0c;想实现pwm输出&#xff0c;但是原电路固定在芯片的引脚PB10和PB11上&#xff0c;查看了下引脚的功能&#xff0c;需要使用到复用功能。让改引脚作为定时器PWM的输出IO口。…...