【大模型 知识图谱】ChatKBQA:KBQA知识图谱问答 + 大模型

ChatKBQA:KBQA知识图谱问答 + 大模型

    • 提出背景
      • 传统方法处理流程
      • ChatKBQA处理流程
      • 对比优势
    • 总结
      • ChatKBQA框架概览
      • 特征1:逻辑形式生成
      • 特征2:无监督实体和关系检索
      • 特征3:参数高效的微调
      • 特征4:GQoT 可解释的查询执行
      • 特征5:错误减少和避免

 


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

代码:https://github.com/LHRLAB/ChatKBQA

 

提出背景

用生成再检索代替检索再生成。

传统的KBQA方法是先检索相关信息,然后基于这些信息生成回答。

这种方法效率低下,因为它需要在大量的数据中进行检索。

ChatKBQA改变了这个流程,先通过大型语言模型(LLM)生成一个问题的逻辑形式,再去检索与逻辑形式匹配的具体实体和关系。

这样做提高了检索效率,因为直接生成的逻辑形式更准确地指向了需要检索的信息。

假设用户想知道:“阿司匹林用于治疗哪种疾病?”这是一个典型的知识库问答(KBQA)任务,需要准确地从医学知识库中检索信息。

传统方法处理流程

  1. 实体识别和链接:首先,系统需要识别“阿司匹林”为药物实体,并尝试将其链接到知识库中的对应实体。
  2. 关系识别:然后,系统需要理解用户询问的是关于“治疗”这一动作的信息,这需要复杂的自然语言处理技术来识别“治疗”为关系。
  3. 检索和答案生成:最后,系统根据识别的实体和关系,在知识库中检索相关信息,并生成答案。

ChatKBQA处理流程

  1. 逻辑形式生成:ChatKBQA利用fine-tuned的LLM直接将问题“阿司匹林用于治疗哪种疾病?”转换为准确的逻辑形式,如“(treats ‘Aspirin’ ?disease)”。

    能够精确匹配到问题中的关键实体和时间,提高了检索的准确性和相关知识的覆盖范围。

    这个步骤快速准确地缩小了搜索范围。

    避免了在庞大的知识库中进行广泛的搜索,直接锁定相关的实体和关系,显著提高了检索效率。

  2. 无监督检索:然后,ChatKBQA使用先进的无监督检索技术,如SimCSE,直接在知识库中寻找符合逻辑形式的实体和关系,无需复杂的实体和关系识别步骤。

  3. 答案生成:最后,基于检索到的准确信息,ChatKBQA生成答案,如“心脏病”。

生成的SPARQL查询不仅精确反映了用户的查询需求,还能通过知识图谱的查询路径提供清晰的解释性,如通过查询路径展示两者的直接关联。

用户不仅得到了准确的答案,还能理解答案的来源和逻辑,减少了对答案的疑惑,提高了用户的信任度。

对比优势

  • 效率:ChatKBQA通过直接生成逻辑形式和利用无监督检索技术,大大简化了查询过程,提高了检索效率,而传统方法需要经过多步骤的实体和关系识别,效率较低。
  • 准确性:ChatKBQA利用LLMs的强大语义理解能力,能更准确地理解用户的查询意图,并通过无监督检索精确地匹配知识库中的信息,减少了因实体和关系识别错误导致的误检。
  • 可解释性:ChatKBQA生成的答案是基于明确的逻辑形式和知识库查询路径的,这为用户提供了答案来源的透明度和可解释性,而传统方法可能因复杂的中间处理步骤而难以追踪答案来源。

ChatKBQA在处理效率、准确性和可解释性方面相较于传统KBQA方法的显著优势。

ChatKBQA能够更直接、准确地理解和回答复杂的医学查询,是利用最新NLP技术优化知识库问答系统的一个典范。

在这里插入图片描述
这图展示了传统的“检索-然后-生成”知识库问答(KBQA)框架与ChatKBQA的“生成-然后-检索”框架之间的对比。

左侧:传统的检索-然后-生成框架

  • 展示了处理一个问题(例如,Benjamin Netanyahu在哪个国家担任政府职位的宗教信仰是什么?)的传统步骤:
    • 实体检索:首先尝试找到与问题相关的实体标识符(如Benjamin Netanyahu)。
    • 关系检索:接着检索与问题相关的关系(如政府职位或宗教信仰)。
    • 三元组/子图检索:然后检索相关的三元组或子图。
    • 逻辑形式生成:最后根据检索结果生成逻辑形式,这可能会包含错误,因为是基于不完全准确的检索结果。

右侧:ChatKBQA的生成-然后-检索框架

  • 显示了ChatKBQA框架的步骤:
    • 生成:首先,使用fine-tuned的LLM根据问题直接生成逻辑形式。
    • 直观计算图:然后构建一个直观的计算图表示,这有助于理解如何从问题到逻辑形式的转换过程。
    • 无监督匹配模型检索:使用无监督的方法检索与生成的逻辑形式相匹配的实体和关系。
    • 最终逻辑形式:基于检索到的信息更新逻辑形式,并转换为SPARQL查询以获取答案。

这两个框架的主要区别在于处理的顺序和方法。

ChatKBQA采用先生成逻辑形式再进行检索的方法,而传统方法是先检索实体和关系再生成逻辑形式。

ChatKBQA的方法可以减少因错误检索信息而导致的逻辑形式生成错误的可能性,并且能够更直接地利用LLMs的强大语义理解能力。
 


总结

ChatKBQA 为什么被拆解成这些特定的子解法?

整个解题步骤是:从理解问题到找到答案,再到解释答案的过程。

  1. 逻辑形式生成(直接语义映射):首先,我们需要理解用户的问题。

    这就像是读懂一个复杂问题的第一步,把它翻译成一种计算机能理解的“逻辑形式”。

    这一步骤跳过了传统的实体和关系识别过程,直接利用大型语言模型的能力将问题转化为结构化的查询,就像是用直接的方式把问题翻译成计算机语言。

  2. 无监督实体和关系检索(无监督语义检索):有了这个“逻辑形式”,我们接下来要在知识库中找到匹配的信息。

    这一步就像是在图书馆里根据索引卡找到你需要的书一样,但是更高级,因为它用的是无监督学习的技术,可以在没有明确指导的情况下找到正确的信息。

  3. 参数高效的微调(精细化参数调优):为了确保这个过程既准确又高效,我们还需要确保我们的工具(即大型语言模型)针对这个特定任务是最佳状态。

    这就像是调整你的搜索工具,确保它既不会错过重要信息,也不会浪费时间在不相关的信息上。

  4. GQoT 可解释的查询执行:最后,当我们找到了答案,我们还需要能够解释我们是怎么得到这个答案的。

    这就像是不仅给你答案,还要告诉你答案的来源,让整个过程对用户来说是透明的,增加了用户对答案的信任。

ChatKBQA框架概览

在这里插入图片描述

生成阶段

  • 说明了ChatKBQA如何使用训练数据(自然语言问题与对应的逻辑形式)通过指令调优来fine-tune开源LLMs。
  • 展示了输入的自然语言问题是如何经过fine-tuned的LLM和beam search来生成候选的逻辑形式。

检索阶段

  • 展示了如何从知识库中检索与候选逻辑形式相匹配的实体和关系。
  • 介绍了无监督检索的使用,如SimCSE、Contriever和BM25,来优化逻辑形式,并最终生成可以执行的SPARQL查询。

这张图提供了一个整体的流程图,说明了从用户输入问题到获取答案的整个过程,包括使用LLMs生成逻辑形式,以及后续的无监督检索步骤,最后形成可执行的查询以提供答案。

特征1:逻辑形式生成

  • 描述:使用大型语言模型(LLM)将自然语言问题转换成逻辑形式。这个过程利用了LLM的语义理解能力,通过指令调优(Instruction Tuning),训练模型能够理解问题并生成一个精确的逻辑形式表达,如S-expression或其他结构化表示。
  • 方法名称:语义解析优化(Semantic Parsing Optimization)
  • 新方法:如果传统方法主要依赖手工规则或复杂的算法转换,ChatKBQA则使用直接的语言模型生成,我们可以称之为“直接语义映射(Direct Semantic Mapping)”。

特征2:无监督实体和关系检索

  • 描述:在生成逻辑形式后,ChatKBQA采用无监督方法进行实体和关系的检索。这一步骤不依赖于大量标注数据,而是利用现有的知识库结构和内容,通过语义相似性匹配来查找和逻辑形式中相对应的实体和关系。
  • 方法名称:高效知识检索(Efficient Knowledge Retrieval)
  • 新方法:相较于传统的基于规则或监督学习的检索,这里的“无监督语义检索(Unsupervised Semantic Retrieval)”方法更加灵活和准确。

特征3:参数高效的微调

  • 描述:为了适应特定的KBQA任务,ChatKBQA在大型语言模型上进行参数高效的微调。通过技术如LoRA、QLoRA、P-Tuning v2等,只微调模型的一小部分参数,既保持了模型性能,又大幅减少了计算资源的消耗。
  • 方法名称:参数高效微调(Parameter-Efficient Fine-Tuning)
  • 新方法:这种微调方法比全模型微调(Full Model Fine-Tuning)更加资源高效,可以称为“精细化参数调优(Fine-grained Parameter Optimization)”。

特征4:GQoT 可解释的查询执行

  • 描述:将生成的逻辑形式转换成可执行的SPARQL查询,并在知识库上执行,获取答案。这个过程不仅提供了准确的答案,还能通过查询的结构和逻辑提供答案的解释,增加了用户对结果的信任。
  • 方法名称:可解释性增强(Enhanced Interpretability)
  • 新方法:如果传统KBQA系统往往难以提供答案的详细解释,ChatKBQA的“查询路径可视化(Query Path Visualization)”提供了一种新的可解释性增强方法。

GQoT(Graph Query of Thoughts)是一个新概念,将知识图谱查询看作是大型语言模型思考的过程。

这意味着模型生成的查询不仅仅是用于检索数据,而是反映了模型对问题的理解和解答思路。

通过这种方式,结合LLM和知识图谱(KG)的优势,实现了一种新的协同推理问答模式,不仅能给出答案,还能提供推理路径,增强了答案的可解释性。

特征5:错误减少和避免

  • 描述:利用LLM生成的逻辑形式和无监督检索减少了因实体识别错误或关系映射不准确导致的错误。此外,通过可解释的查询执行,用户可以更容易地验证答案的正确性。
  • 方法名称:错误减少机制(Error Reduction Mechanism)
  • 新方法:与传统方法相比,这里的“动态错误校正(Dynamic Error Correction)”为ChatKBQA特有,强调在整个KBQA流程中动态减少和校正潜在的错误。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初识ONLYOFFICE 8.0:办公软件的革命性升级

引言 随着数字化时代的到来,办公软件已经成为我们日常生活和工作的重要组成部分。在这个充满竞争的市场中,ONLYOFFICE凭借其卓越的性能和功能,脱颖而出,成为许多企业和个人用户的优选。近期,ONLYOFFICE推出了全新的8.…

Jdbc概述和基本使用

一、什么是JDBC呢? 目前市面上存在很多的数据库,比如Oracle、Mysql、SqlServer等…每一种数据库都有着自己的独特的实现原理。 那么我们在使用java链接这些数据库的时候就会出现一个问题,我们需要为每一种数据库开发一套专属于该数据库的链接…

通俗易懂地解释OpenAI Sora视频生成的特点有哪些?与Runway Gen2、Pika有什么区别?缺点是什么?

OpenAI的Sora模型是最近两天最火热的模型。它生成的视频无论是清晰度、连贯性和时间上都有非常好的结果。在Sora之前,业界已经有了很多视频生成工具和平台。但为什么Sora可以引起如此大的关注?Sora生成的视频与此前其它平台生成的视频到底有哪些区别&…

自媒体达人都在用的写作工具:6款ai写作实用工具推荐! #科技#学习方法#AI写作

这些宝藏AI 写作神器,我不允许你还不知道~国内外免费付费都有,还有AI写作小程序分享,大幅度提高写文章、写报告的效率,快来一起试试吧! 1.元芳写作 这是一个微信公众号 面向专业写作领域的ai写作工具,写作…

IDEA插件推荐:免费好用!

IDEA是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作,一般需要打开额外的调试工具。 今天给大家介绍一款IDEA插件:Api…

C#泛型及其应用:获取并显示员工信信息

目录 一、关于泛型 1.泛型定义 2.泛型与非泛型的区别 3.泛型的应用 (1)泛型类: (2)泛型方法: (3)泛型委托: (4)泛型接口: &a…

智慧公厕:让智慧城市的公共厕所焕发“智慧活力”

智慧城市的建设已经进入了一个新的阶段,不仅仅是智慧交通、智慧环保,如今甚至连公厕都开始迎来智慧化时代。智慧公厕作为智慧城市的神经末梢,正在通过信息化、数字化和智慧化的方式,实现全方位的精细化管理。本文以智慧公厕源头专…

代码随想录刷题笔记-Day21

1. 二叉搜索树中的插入操作 701. 二叉搜索树中的插入操作https://leetcode.cn/problems/insert-into-a-binary-search-tree/给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。…

我为什么不喜欢关电脑?

程序员为什么不喜欢关电脑? 你是否注意到,程序员们似乎从不关电脑?别以为他们是电脑上瘾,实则是有他们自己的原因!让我们一起揭秘背后的原因,看看程序员们真正的“英雄”本色! 一、上大学时。 …

Vue3引用第三方模块报错Could not find a declaration file for module ***.

在引用第三方的组件时候报错如下 原因是:该组件可能不是.ts文件而是.js文件 解决方案: 1.在Src的目录下面新建一个文件为shims-vue.d.ts的文件 2.文件内容为 declare module xxx,xxx就是你报错的模块 例如我这样 declare module vue3-pu…

代码随想录day26--贪心基础

什么是贪心 贪心的本质是选择每一阶段的局部最优,从而达到全局最优 举个例子: 有一堆钞票,可以拿走十张,如果想要达到最大的金额,应该怎么拿? 指定每次拿最大的,最终结果就是拿走最大数额的…

TypeScript(一):TypeScript基本理解

TypeScript基本理解 为什么使用TS JavaScript发展至今,没有进行数据类型的验证而我们知道,在编程阶段,错误发现的越早越好而TS就解决了JS的这个问题 认识TypeScript TypeScript是拥有类型的JavaScript超级,它可以编译成普通、…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之LoadingProgress组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之LoadingProgress组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、LoadingProgress组件 用于显示加载动效的组件。 子组件 无 接口 L…

Docker详解及使用

文章目录 为什么要用docker为什么会出现容器Docker 是什么容器是什么虚拟化是什么Docker 和 虚拟化的区别Docker 容器有几种在状态什么是仓库什么是镜像什么是容器仓库、镜像、容器的关系常用的 Docker 命令如何把主机的东西拷贝到容器内部如何让容器随着 Docker 服务启动而自动…

双缸黑白箭来袭,3月5日亮相,胡斯瓦纳发布全新车系。

根据国外最新消息,Husqvarna准备在下个月就是3月5日发布全新车系,前段时间刚曝光的新款的401,这突然就来了双缸版本的黑白箭了,之前的401/701全部都是单缸,这也是首台胡斯瓦纳黑白箭的双缸车型。 外观方面仍然采用现代…

自学嵌入式困难吗?

自学嵌入式困难吗? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!&#xff01…

阿里云服务器租用价格,2024年新版活动报价明细表

2024年阿里云服务器租用价格表更新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服…

产品经理学习-产品运营《社群搭建》

什么是社群 有主题:成员有共同的需求,目标或价值观有组织:有文档的群体结构,是有一群人协作而成的有规则:有门槛和规则玩法 社交、社区、社群的区别 社交: 多数的社交是单点对单点的社交以沉淀关系为目的…

代码随想录算法训练营DAY21 | 二叉树 (9)

一、LeetCode 669 修建二叉搜索树 题目链接:669.修建二叉搜索树https://leetcode.cn/problems/trim-a-binary-search-tree/description/ 思路:递归三部曲-定参数、返回值-定终止条件-定单层递归逻辑 class Solution {public TreeNode trimBST(TreeNode …

沁恒CH32V30X学习笔记09---使用TIM 外部时钟1模式实现硬件计数

TIM 外部时钟1使用 定时器时钟 通过框图可知;外部时钟1模式下仅仅只有通道1 和通道2 可以输入脉冲 简单示例教程 void TIM1_ETRClockMode1_Init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);TIM_CounterModeConfig(TIM1, TIM_CounterMode_Up)