【知识图谱+大模型的紧耦合新范式】Think-on-Graph:解决大模型在医疗、法律、金融等垂直领域的幻觉

Think-on-Graph:解决大模型在医疗、法律、金融等垂直领域的幻觉

    • Think-on-Graph 原理
      • ToG 算法步骤:想想再查,查查再想
      • 实验结果

 


论文:https://arxiv.org/abs/2307.07697

代码:https://github.com/IDEA-FinAI/ToG

 

Think-on-Graph 原理

幻觉是什么:大模型的「幻觉」问题。

  • 多跳推理路径的探索算法,提高深度推理能力:ToG 通过在知识图谱中动态探索多个推理路径,并利用 beam search 算法挑选最有前景的路径,从而增强了LLMs的深度推理能力。

  • 显式、可编辑的推理路径,增强推理的责任感和可追溯性:通过提供明确的推理路径,ToG不仅增加了推理过程的可解释性,而且允许对模型输出的来源进行追踪和校正,从而提高了推理的责任感和可靠性。

  • 插件式框架,提高大模型的灵活性和效率:通过知识图谱而非LLMs更新知识,可以提高知识的更新频率,降低更新成本,同时增强小型LLMs的推理能力,使其能与大型模型(如GPT-4)竞争。

 
在这里插入图片描述

Think-on-Graph 新技术 对比 之前的技术:

(a) LLM-only(只有大模型的情况):

在这个例子中,LLM独立地尝试回答问题:“What is the majority party now in the country where Canberra is located?”。

LLM使用的是链式思考,首先确认堪培拉是澳大利亚的首都,然后基于2021年9月的信息,认为澳大利亚总理是斯科特·莫里森,属于自由党,所以答案应该是自由党。

然而,这个答案是错误的,因为LLM的知识是过时的。

 

(b) LLM ⊕ KG(例如,通过LLM生成的SPARQL查询):

在这种范式下,LLM首先生成一个SPARQL查询来检索知识图谱(KG)。

在这个例子中,查询是为了找到堪培拉的国家,并检索该国家的主要政党。

由于知识图谱中不存在“majority party”的相关信息,这种方法未能得出正确答案。

 

© LLM ⊗ KG(例如,Think-on-Graph):

这个范式展示了LLM与知识图谱紧密协作。

首先,LLM通过探索知识图谱中与堪培拉有关的三元组(triples)。

然后,通过“Think”步骤,它找到了最相关的三元组是(澳大利亚,首相,安东尼·阿尔巴尼斯)。

由于LLM知道安东尼·阿尔巴尼斯属于劳工党,并且自2019年以来一直是澳大利亚劳工党(ALP)的领导者,因此能够推断出正确答案是劳工党。

 

所以,Think-on-Graph 这种LLM与知识图谱的新技术,效果也是最好的。

  • LLM ⊗ KG (Think-on-Graph) 方法通过结合LLM的动态推理能力和KG的丰富、结构化知识
  • 显著提升了解答的准确性和可靠性
  • 解决了仅使用LLM时的知识过时问题 和 LLM与KG结合时的信息缺失问题

 

Think-on-Graph 工作流程:

工作流程分为三个深度搜索阶段(Depth 1、Depth 2、Depth 3),逐步深化搜索,每个阶段都深入探索与前一阶段发现的实体相关的更多信息。

  • 以回答问题:“堪培拉所在的国家目前的主要政党是什么?”
  1. Depth 1:识别问题中的关键实体(堪培拉)和与其直接相关的属性(它是哪个国家的首都)。

    • 搜索: 以堪培拉为中心,探索相关实体和关系。
    • 剪枝: 对探索结果进行评估,保留重要的实体和关系,淘汰评分低的部分。在这个阶段,确定堪培拉是一个地域,是澳大利亚的首都。
  2. Depth 2:以第一阶段确定的国家(澳大利亚)为中心,进一步探索与政府头目(首相)相关的信息。

    • 搜索: 以澳大利亚为中心,进一步探索与政府、首相等相关的实体和关系。
    • 剪枝: 继续评估和淘汰,确定了澳大利亚的首相是安东尼·阿尔巴尼斯。
  3. Depth 3:最后,确定首相(安东尼·阿尔巴尼斯)的政党隶属,从而得出国家的主要政党。

    • 搜索: 最后以安东尼·阿尔巴尼斯为中心,搜索与政党相关的实体和关系。
    • 剪枝: 最终找到安东尼·阿尔巴尼斯与劳工党的关系。

在每个深度的搜索和剪枝过程中,发光的实体代表中心实体,粗体实体代表被选中的中心实体。

图中的边缘的黑暗度代表了由LLM给出的评分,虚线表示由于评分低而被剪枝的关系(精准回答,避免模糊宽泛)。

最终,基于这些推理路径,生成的答案是“Labor Party”(劳工党)。

本质:ToG通过逐步深入的探索和剪枝过程,结合LLM的推理能力和KG的丰富数据,动态构建推理路径以提供精准且可追溯的答案。

 


ToG 算法步骤:想想再查,查查再想

ToG方法的主要问题是如何利用LLM进行深度推理以回答基于知识图谱的复杂问题。

ToG是通过 beam search 在知识图谱上执行搜索,以此来解决问题。

  1. 子问题1:初始化图搜索。

    • 子解法1:定位初始实体。
      之所以使用这个解法,是因为需要在知识图谱中确定起始点,这是构建推理路径的基础。
  2. 子问题2:探索。

    • 子解法2.1:关系探索。
      用于从当前已知实体探索可能的关系,因为这有助于确定接下来可能的推理方向。
    • 子解法2.2:实体探索。
      接着用于从已知关系探索相关实体,因为这可以进一步扩展推理路径。
  3. 子问题3:推理。

    • 子解法3:评估推理路径。
      之所以使用此解法,是因为需要评估当前推理路径是否足够回答问题,如果足够则生成答案,否则继续探索和推理过程。

 

还有 ToG-R(基于关系的Think-on-Graph 变种):

  1. 子问题1:减少LLM调用次数。

    • 子解法1:随机剪枝。
      之所以使用这个解法,是因为它减少了使用LLM进行实体剪枝的需要,这样可以降低总体成本和推理时间。
  2. 子问题2:强调关系文字信息。

    • 子解法2:关系链探索。
      选择这种解法是因为它强调了关系的文字信息,当中间实体的文字信息缺失或LLM不熟悉时,可以减少误导推理的风险。

ToG 方法的本质在于,通过LLM执行的知识图谱上的beam search,分阶段探索和评估推理路径,以便深度推理出复杂问题的精确答案,而 ToG-R 进一步减少了LLM调用,强调文字信息,提高了效率和鲁棒性。

  • 初始化图搜索的问题,通过定位初始实体的子解法来解决。
  • 探索问题,通过关系探索和实体探索两个子解法来解决。
  • 推理问题,通过评估推理路径的子解法来解决。
  • ToG-R 特有的问题,通过随机剪枝和关系链探索两个子解法来解决。

在这里插入图片描述

 
假设我们要回答的问题是:“谁是最近一次举办奥运会的国家的现任总统?”

  1. 初始化图搜索:

    • 我们首先利用LLM确定问题中的关键实体“最近一次举办奥运会的国家”,并将其作为搜索的起始点。
  2. 探索:

    • 关系探索:
      在知识图谱中搜索与“奥运会举办国”相关的实体关系,比如“举办年份”和“国家”。
    • 实体探索:
      接下来,我们基于“举办年份”这一关系,探索出最近一次举办奥运会的具体国家,例如“日本”。
  3. 推理:

    • 根据已经探索到的信息,评估是否有足够的数据来回答原问题。
    • 如果已知的国家“日本”和关系“现任总统”足够回答问题,我们就进行下一步;
    • 如果不足够,就需要进一步的探索和推理。

在ToG-R中,如果在实体探索阶段关系信息不够充分,我们可能会采用随机剪枝策略,选择一个可能的实体,例如随机选择一位政治人物,然后继续下一轮探索。

 


实验结果

ToG这个算法通过在各种不同的数据集上的测试显示出它很擅长处理需要多步逻辑推理的复杂问题,这得益于它能够在多个层面上全面理解和应用知识图谱中的信息。

  • 在和其他方法的比较中,ToG特别展现了它的泛化能力,即使在没有针对特定问题集进行训练的情况下,它也能提供准确的答案。

实验中还特别考察了不同大小的语言模型对ToG的影响。

  • 结果表明,更大的模型能够更好地发挥知识图谱的潜力,但即便是较小的模型,ToG也能超越只用最大模型的传统方法。
  • 这意味着使用ToG,我们可以用更经济的小模型来代替昂贵的大模型,特别是在那些外部知识图谱能提供帮助的特定场景中。

此外,ToG的性能也受到搜索深度和宽度的影响,通过调整这两个参数,ToG的表现有所提升,尽管提升的幅度在深度超过一定阈值后会减弱。

  • 在提高性能的同时也要考虑到计算成本。

不同知识图谱的选择也对ToG的表现有显著影响。

  • 例如,在构建于Freebase上的数据集中,ToG的表现更好,这显示了匹配度高的知识图谱对提升性能至关重要。

  • 而且,不同的提示设计,如三元组格式相比自然语言句子,对于ToG来说也有更好的效果。

在探索过程中使用不同的剪枝工具也会影响ToG的表现。

  • 实验表明,与BM25或SentenceBERT相比,使用LLM作为剪枝工具可以获得更好的结果,尽管后者在效率上有优势。

最后,ToG的一个独特之处在于它提供了知识的追溯性和可校正性。

  • 如果用户发现了推理过程中的错误,他们可以通过ToG回溯并纠正知识图谱中的错误信息。
  • 不仅增强了LLM使用知识图谱的能力,还提升了知识图谱本身的质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/671458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PYthon进阶--网页采集器(基于百度搜索的Python3爬虫程序)

简介:基于百度搜索引擎的PYthon3爬虫程序的网页采集器,小白和爬虫学习者都可以学会。运行爬虫程序,输入关键词,即可将所搜出来的网页内容保存在本地。 知识点:requests模块的get方法 一、此处需要安装第三方库reques…

dump分析方法

一、关于dump 1、什么是dump 在计算机领域中,术语“dump”通常用来指代将某种数据以某种格式进行转储或导出的过程。这个术语可以用于多种不同的上下文,下面是一些常见的情况: 内存转储(Memory Dump):在…

网络空间内生安全数学基础(2)——编码信道数学模型

目录 (零)这篇博客在干什么(一)内生安全与香农信道编码定理(二)基本定义(三)编码信道存在定理(三.壹)编码信道存在第一定理(三.贰)编码…

Micro micro controller一览

https://www.microchip.com.cn/, Microchip中文网站 https://www.microchip.com.cn/newcommunity/index.php?mSearch&adosearch&moduleDownload&keyworddsPIC33&p3 Microcontrollers and microProcessors dsPIC33 Digital Signal Controllers (D…

Leetcode第123场双周赛

Leetcode第123场双周赛 本人水平有限,只做前三道 一、三角形类型 给你一个下标从 0 开始长度为 3 的整数数组 nums ,需要用它们来构造三角形。 如果一个三角形的所有边长度相等,那么这个三角形称为 equilateral 。 如果一个三角形恰好有两…

大学生创新实践:班级管理系统全解析

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

Redis(十三)缓存双写一致性策略

文章目录 概述示例 缓存双写一致性缓存按照操作来分,细分2种读写缓存:同步直写策略读写缓存:异步缓写策略双检加锁策略 数据库和缓存一致性更新策略先更新数据库,再更新缓存先更新缓存,再更新数据库先删除缓存&#xf…

不懂快团团大团长对接?凭什么快团团的钱轮到你赚?

对接头部快团团大团长,让快团团大团长帮你卖货 分享几个推品的关键词: 1.推品的内容:产品实拍图核心卖点 不要上来就发笔记,你的产品图和文案还没吸引人,就发笔记没有人看。 可以先发你产品的简短卖点和图片&#xff…

ionic报错:Cannot read properties of undefined (reading ‘classList‘)

报错信息&#xff1a; [ionic/vue Warning]: The view you are trying to render for path /tabs/tab1 does not have the required <ion-page> component. Transitions and lifecycle methods may not work as expected.See https://ionicframework.com/docs/vue/navig…

Go语言每日一练链表篇(一)

题目传送门 牛客面试必刷101题 ----------反转链表 题目以及答案源码 反转链表 题目 解题方法 递归函数遍历链表并反转 package main import _"fmt" import . "nc_tools" /** type ListNode struct{* Val int* Next *ListNode* }*//*** 代码中的…

关于harbor做HA

我起初是用helm在k8s上装的harbor&#xff0c;最近遇到如下故障&#xff1a;就是服务器硬件设备故障突然死机&#xff0c;恰巧是harbor容器所在的服务器&#xff0c;其他在这个服务器上运行的容器&#xff0c;由kubelet调度到其他正常的服务器上重启去了&#xff0c;但harbkor并…

2024年陕西省安全员C证证考试题库及陕西省安全员C证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年陕西省安全员C证证考试题库及陕西省安全员C证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大…

【DC-9靶场渗透】

文章目录 前言 一、确定靶机地址 二、信息收集 三、寻找漏洞 四、进一步漏洞挖掘 五、关键文件 六、ssh爆破 七、提权 总结 前言 马上过年了&#xff0c;年前再做一下DC靶场最后一个靶机。 一、确定靶机地址 1、可使用arp-scan命令 靶机地址为&#xff1a;172.16.10…

python coding with ChatGPT 打卡第18天| 二叉树:从中序与后序遍历序列构造二叉树、最大二叉树

相关推荐 python coding with ChatGPT 打卡第12天| 二叉树&#xff1a;理论基础 python coding with ChatGPT 打卡第13天| 二叉树的深度优先遍历 python coding with ChatGPT 打卡第14天| 二叉树的广度优先遍历 python coding with ChatGPT 打卡第15天| 二叉树&#xff1a;翻转…

【Spring基础】从0开始学习Spring(2)

前言 在上篇文章&#xff0c;我已经讲了Spring中最核心的知识点&#xff1a;IoC&#xff08;控制反转&#xff09;以及DI&#xff08;依赖注入&#xff09;。这篇文章&#xff0c;我将讲一下关于Spring框架中的其它比较琐碎但是又还是挺重要的知识点&#xff0c;因此&#xff…

vue实现查询搜索框下拉字典

字典表 前端页面显示 依据这个字典表实现动态查询 初始化数组 首先先在全局变量里定义一个数据存放查询出来的数据 data() {return {dicts: []};},生命周期 查询的时候是声明周期开始的时候&#xff0c;原本增删改查页面在生命周期开始的时候就查询了页面的数据获得了列表值…

ElasticSearch-SpringBoot整合ElasticSearch

六、SpringBoot整合ElasticSearch 1、浏览官方文档 1、查找跟ES客户端相关的文档 使用Java REST Client 选择Java Hight Level REST Client 2、创建项目的准备 1.找到原生的依赖 2.找到对象 3.分析这个类里面的方法 3、正式创建项目 1.创建工程 2.导入依赖 注意依赖版本…

Python 函数式编程进阶:map、filter、reduce

Python 函数式编程进阶&#xff1a;map、filter、reduce 介绍map 函数作用和语法使用 map 函数Lambda 函数的配合应用 filter 函数作用和语法使用 filter 函数Lambda 函数的结合运用 reduce 函数作用和语法使用 reduce 函数典型应用场景 介绍 在函数式编程中&#xff0c;map、…

【QT】opcuaServer 的构建

【QT】opcuaServer 的构建 前言opcuaServer实现测试 前言 在博文【opcua】从编译文件到客户端的收发、断连、节点查询等实现 中&#xff0c;我们已经介绍了如何在QT 中创建opucaClient 。在本期的博文中&#xff0c;我们基于之前的部署环境&#xff0c;介绍一下如何构建opcuaS…

springboot与Elasticsearch版本兼容对比

首先 大家在下载 Elasticsearch 时 最好先弄清楚版本 因为 如果 Spring Boot 版本 不兼容 Elasticsearch 那就是到头一场空了 Elasticsearch 版本 6.x 可以兼容 Spring Boot 2.x Elasticsearch 版本 7.x 可以兼容 Spring Boot 2.x 3.x 4x Elasticsearch 版本 7.x 以及 8.x 可以…