交互式知识库问答:一种结合大型语言模型的多轮交互方法

news2025/2/8 15:51:27

在当今信息爆炸的时代,人们每天都要处理海量的数据和信息。在这样的背景下,基于知识库的问答系统(KBQA)成为了一个重要的研究领域,它旨在使计算机能够理解自然语言提出的问题,并从结构化的知识库中检索出准确的答案。然而,KBQA面临着一系列挑战,尤其是如何将复杂的自然语言问题转化为可在知识库上执行的查询,以及如何在资源受限的情况下实现高效的问答。

传统的KBQA方法,如基于信息检索(IR)的方法和基于语义解析(SP)的方法,虽然在某些场景下取得了一定的成果,但它们通常需要大量的标注数据来训练模型,这不仅成本高昂,而且限制了方法的可扩展性和适应性。并且这些方法在处理复杂的多跳问题时也常常力不从心。随着大型语言模型(LLMs)的出现,研究者们开始探索利用这些模型的少样本学习能力和推理能力来提升KBQA系统的性能。但是,如何充分利用LLMs的潜力,尤其是在低资源情境下,仍然是一个开放的问题。

本文针对上述挑战,提出了一种名为Interactive-KBQA的新型框架。该框架通过设计一种多轮交互式的方法,将LLMs的推理能力与知识库交互工具结合起来,以实现对复杂问题的深入理解和精确回答。Interactive-KBQA通过直接与知识库进行交互,生成逻辑形式和SPARQL查询,从而克服了传统方法的局限,并在低资源情况下展现出卓越的性能。通过对交互过程的精心设计,Interactive-KBQA不仅提高了答案的准确性,还增强了模型的可解释性和适应性,为KBQA领域的研究和应用开辟了新的道路。

方法

交互式KBQA的流程

在Interactive-KBQA框架中,交互过程是实现知识库问答(KBQA)任务的核心机制。首先,用户提出一个问题,例如询问“有多少篮球运动员身高超过2米?”。这个问题将作为输入进入系统。LLM作为代理,首先需要进行“思考”(Thought),在这一阶段,LLM分析问题的语义,并决定需要执行的动作。例如,它可能需要搜索特定的实体或关系,或者构造一个SPARQL查询来从知识库中检索信息。

接下来是“行动”(Action)阶段,LLM根据思考的结果执行相应的操作。这可能包括调用SearchNodes工具来查找与问题相关的知识库节点,使用SearchGraphPatterns工具来识别关键的图模式谓词,或者执行一个SPARQL查询来直接从知识库中获取答案。

每个行动的执行都会产生“观察”(Observation)结果,这些结果反馈给LLM,为下一步的思考提供信息。例如,如果LLM执行了SearchNodes,它可能会观察到一系列与问题相关的实体列表。

随后,LLM再次进入“思考”阶段,根据新的观察结果调整其行动策略。这个过程是迭代的,LLM在每一轮中都会进行思考和行动,直到问题得到满意的解答。

为了引导LLM正确地进行思考和行动,研究者设计了一组示例(Exemplars),这些示例展示了如何将问题分解为子查询,并指导LLM如何使用不同的工具与知识库进行交互。

研究者还构建了“提示”(Prompt),这是一种包含工具描述、工具使用和交互格式的指导性文本,用于辅助LLM理解任务和执行交互。

当LLM执行“完成”(Done)动作时,最终的观察结果将作为问题的答案输出。整个过程是一个多轮的对话式交互,LLM通过连续的思考和行动,逐步深入理解问题并构建出正确的答案。

该研究首先定义了KBQA任务,即将自然语言问题转化为可在知识库上执行的SPARQL查询。知识库被形式化为一个包含实体、关系和类别的结构,研究的目标是生成一个与问题相对应的SPARQL表达式,这一过程可以视为条件概率模型 p(S∣Q,K) 的求解。

Interactive-KBQA框架将LLMs视为代理,知识库视为环境,通过直接与知识库的交互来引导LLMs进行语义解析和SPARQL生成。这种方法允许系统以对话的形式,逐步构建对问题的理解和回答。

为了实现与知识库的有效交互,研究者设计了三种工具:SearchNodes用于基于表面名称搜索实体;SearchGraphPatterns用于识别和排名与问题语义相关的图模式谓词;ExecuteSPARQL用于执行任意SPARQL查询。这些工具共同构成了交互逻辑的基础。

LLMs通过提示文本和交互历史生成动作。提示文本包括工具描述、使用说明和交互格式,而交互历史记录了整个对话过程中的思考、动作和观察结果。LLMs需要根据这些信息,决定下一步的行动,直至问题得到解答。

交互过程示例

研究者通过为不同类型复杂问题设计交互模式和标注高质量的示例,指导LLMs进行推理。这种方法允许系统处理多跳问题、涉及复杂结构的问题,以及需要特定推理步骤的问题。

为了克服现有LLMs在输出错误时难以纠正的问题,以及现有KBQA数据集缺乏详细推理步骤的局限,研究者提出了一种人机协作注释策略。通过手动标注包含详细推理过程的样本,并使用这些样本对开源LLMs进行微调,研究者提高了模型在低资源环境下的性能。

实验

研究者们选取了多个广泛使用的KBQA数据集,包括WebQuestionsSP、ComplexWebQuestions、KQA Pro和MetaQA,这些数据集覆盖了基于Freebase、Wikidata和特定领域知识库的问题。为了构建测试数据集,研究者们采用均匀采样方法从每个数据集中抽取样本,并手动标注部分样本以形成低资源数据集,从而评估模型在资源受限情况下的性能。

使用的数据集的统计信息,包括数据集类型、注释数量、原始数据量以及训练/测试数据的分布

为了全面评估Interactive-KBQA的性能,研究者们选择了多种先前最优的基线模型,这些模型包括了基于语义解析的方法和基于提示的方法。采用了F1分数、Random Hits@1和Exact Match等评估指标来衡量模型的性能。对于KQA Pro数据集,还特别报告了准确率指标。

实验结果显示,Interactive-KBQA在CWQ和MetaQA数据集上的性能超越了基线模型,特别是在处理比较性和最高级问题类型时,取得了显著的性能提升。此外,在低资源情境下,通过微调开源LLMs,Interactive-KBQA在特定问题类型上的性能甚至超过了GPT-4 Turbo。

Interactive-KBQA在WebQuestionsSP(WebQSP)和ComplexWebQuestions(CWQ)数据集上的结果

 表2中,对于WebQSP数据集,尽管Interactive-KBQA在1-hop和2-hop问题上的表现略低于使用完整数据训练的先前最优方法,但在整体性能上显示出了竞争力。特别是在CWQ数据集上。

Interactive-KBQA在MetaQA数据集上的结果

表3显示,Interactive-KBQA在所有问题类型上均优于基线模型,包括连接(Conjunction)、组合(Composition)、比较(Comparative)和最高级(Superlative)问题。特别是在比较性和最高级问题类型上,Interactive-KBQA实现了显著的性能提升,分别提高了29.85%和13.96%。

这些结果表明,Interactive-KBQA在处理复杂问题时的有效性,尤其是在资源受限的情况下,其性能优势更为明显。此外,通过使用少量示例进行微调的开源大型语言模型,Interactive-KBQA在低资源情境下的表现超越了商业化的LLMs,证明了其方法的实用性和可扩展性。

实体链接是KBQA中的一个关键步骤,研究者们评估了Interactive-KBQA在实体链接方面的表现,并引入了提及覆盖率(Mention Cover Rate, MCR)来量化实体链接的难度。实验结果指出,在KQA Pro和MetaQA数据集上,实体链接的表现对整体性能有显著影响。

实体链接的实验结果

在消融研究中,研究者们通过减少或增加某些组件(如示例数量、不同类型的问题示例),来观察这些变化对模型整体性能的影响。问题类型分类器的作用是根据问题的语义特征将其分类到预定义的问题类型中,从而为LLM提供正确的交互策略和示例。

问题类型分类器的性能

这些数据表明,分类器在识别1-hop问题时表现最佳,而在识别Conjunction类型的问题时表现相对较差。F1分数和准确率的高值表明分类器整体性能较好,但仍有改进空间,尤其是在处理某些特定类型的问题时。

研究者们对Interactive-KBQA在实验中出现的错误类型进行了系统性分析,包括实体链接错误、谓词搜索错误、推理错误、格式合规性错误和幻觉错误等。通过案例研究,研究者们展示了在人类辅助下纠正这些错误的流程,这为进一步优化模型提供了见解。

不同错误类型的分布

Interactive-KBQA框架通过结合大型语言模型的推理能力和与知识库的多轮交互,有效地提高了KBQA系统的准确性和可解释性。通过少量示例学习和手动干预,该框架在资源受限的情况下展现出了卓越的性能,为知识库问答领域提供了一种新的研究方向和工具。

论文链接:https://arxiv.org/abs/2402.15131.pdf

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

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

相关文章

以太坊==给合约转入/查询合约剩余/合约转给某账户/结构体/MAP

转入 必须要定义该函数,或者定义fallback // 接收以太币 receive() external payable {} // Corrected Line // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;contract SimpleStorage {uint256 private storedData;// 事件,用于通知数据变更e…

【Redis】黑马点评短信登录

https://blog.csdn.net/qq_33888850/article/details/129770077 https://blog.csdn.net/weixin_51515308/article/details/128010464 https://www.bilibili.com/video/BV1cr4y1671t?p24 导入数据库 https://github.com/MagicToDo/hm-dianping sql文件在 hm-dianping-init\src…

35.简易远程数据框架的实现

上一个内容:34.构建核心注入代码 34.构建核心注入代码它的调用LoadLibrary函数的代码写到游戏进程中之后无法调用,动态链接库的路径是一个内存地址,写到游戏进程中只把内存地址写过去了,内存地址里的内容没写过去,导致…

【Git】 -- Part2 -- 分支管理

1. 分支 在 Git 中,分支(Branch)是用于在项目中创建独立开发线路的机制。分支使得开发者可以在不影响主干(main 或 master)的情况下进行实验、开发新功能或修复 Bug。 举个例子: 分⽀就好像是科幻电影⾥⾯…

软件开发教学:在线教育系统源码解析及教育培训小程序搭建实战

本篇文章,笔者将以“从零开始的软件开发教学”为主题,详细解析在线教育系统的源码,并通过实际操作来搭建一个教育培训小程序。 一、在线教育系统概述 在线教育系统是一个综合性的网络平台,旨在通过互联网提供教育资源和服务。该系…

http和https的区别在哪

HTTP(超文本传输协议)和HTTPS(超文本传输安全协议)之间存在几个关键区别主要涉及安全性、端口、成本、加密方式、搜索引擎优化(SEO)、身份验证等方面 1、安全性:HTTP(超文本传输协议…

Day5(和为s的两个数字)双指针

输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 二、思路 1.首先,将不符合要求的值给排除,有以下三种: 数组元素个数不足两个…

ArrayList知识点(面试)

上一篇我们说了hashmap的相关知识点,这一篇我们再说一些ArrayList的相关知识,因为ArrayList也是我们项目中比较常用的。 ArrayList(底层是数组) 底层工作原理 首先,在构造ArrayList的时候会先看有没有指定容量,如果没有&#xf…

Flutter【组件】可折叠文本组件

简介 flutter 可折叠文本组件。 点击展开,收起折叠文本。支持样式自定义 github地址: github.com/ThinkerJack… pub地址:https://pub.dev/packages/jac_uikit 展开收起文本 使用方式: ExpandableText(content: 测试 * 50,ma…

一文搞懂Linux信号【下】

目录 🚩引言 🚩阻塞信号 🚩信号保存 🚩信号捕捉 🚩操作信号集 1.信号集操作函数 2.其它操作函数 🚩总结: 🚩引言 在观看本博客之前,建议大家先看一文搞懂Linux信…

JR-8000系列机架式多路4K超高清光端机

集中式 4K超高清光传输设备 1 产品特性 ⚫ 支持高达 8 通道 SMPTE 全格式 SDI 信号输入 ⚫ 发送端带有 LOOPOUT 环出端口,具备消抖动功能,可作为信号调理或级联信号源使用 ⚫ 接收端支持双输出端口 ⚫ 支持传输速率:143Mbps-11.88Gbps ⚫…

INVS利用gatearray实现post-mask的function ECO

随着现代IC的设计发展,设计的规模和复杂度逐步增加,对于验证完备性的挑战越来越大,加之TO的时间压力,芯片设计通常会出现下列的场景: 芯片回片一次点亮大部分的case都可以顺利通过小部分的功能需要修正 对于重要的特…

赵丽颖纯白茉莉绽放温柔之美

赵丽颖纯白茉莉,绽放温柔之美在这个繁忙喧嚣的娱乐圈,赵丽颖以其独特的魅力,成为了无数人心中的白月光。近日,赵丽颖工作室发布了一组live图,她身着一袭温柔白裙,宛如一朵盛开的纯白茉莉花,美得…

企业级WordPress开发 – 创建企业级网站的优秀技巧

目录 1 “企业级”一词是什么意思? 2 使用 WordPress 进行企业级 Web 开发有哪些好处? 3 使用 WordPress 进行企业级开发的主要好处 3.1 WordPress 可扩展、灵活且价格实惠 3.2 WordPress 提供响应式 Web 开发 3.3 WordPress 提供巨大的可扩展…

github-chinese,跟英文GitHub说拜拜

背景 对于我们程序员来说,Github是一个常逛的web网站,里面学习资源众多,不管是查问题还是查资料都离不开他。 但是Github作为一个国际化的网站,语言主要是英语,所以对于一些英语似懂非懂的同学来说还是有一些难处。 想过找一个国内中文的Github作为一个平替网站,但是资…

Linux基础指令(三)

目录 shell 权限指令: 文件的操作权限: 对文件进行操作的用户分类: 用户对文件进行的操作分类: 所有者、所属组、其他的访问权限: 创建用户 沾滞位 匹配查找指令: grep find shell shell&#x…

联想Y7000P 2023款拆机教程及升级内存教程

0.电脑参数介绍 联想Y7000P 2023电脑,笔者电脑CPU为i7-13700H,14核20线程;标配内存为三星的DDR5-5600MHz-8GB*2,由于电脑CPU限制,实际内存跑的频率为5200MHz; 2个内存插槽,2个固态硬盘插槽。每个内存插槽最…

Linux检查端口nmap

yum install -y nmap # 查看本机在运行的服务的端口号 nmap 127.0.0.1 补充:netstat netstat -tunlp | grep 3306

堆排序的实现原理

一、什么是堆排序? 堆排序就是将待排序元素以一种特定树的结构组合在一起,这种结构被称为堆。 堆又分为大根堆和小根堆,所谓大根堆即为所有的父节点均大于子节点,但兄弟节点之间却没有什么严格的限制,小根堆恰恰相反&a…

百度ai人脸识别项目C#

一、项目描述 本项目通过集成百度AI人脸识别API,实现了人脸检测和识别功能。用户可以上传图片,系统将自动识别人脸并返回识别结果。 二、开发环境 Visual Studio 2019或更高版本.NET Framework 4.7.2或更高版本AForge.NET库百度AI平台人脸识别API 三、…