论文浅尝 | Interactive-KBQA:基于大语言模型的多轮交互KBQA(ACL2024)

转载至:何骏昊 开放知识图谱

原文地址:论文浅尝 | Interactive-KBQA:基于大语言模型的多轮交互KBQA(ACL2024)

图片

笔记整理:何骏昊,东南大学硕士,研究方向为语义解析

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

发表会议:ACL 2024

1. 动机

知识库问答(KBQA)是一个日益重要的研究领域,它利用结构化知识库(KB)为自然语言(NL)问题提供精确答案。大语言模型(LLM)的出现为增强KBQA系统开辟了新途径。这些模型在KBQA领域中的推理和少样本学习方面显示出惊人的结果。该工作的动机主要源于解决KBQA领域中的以下关键挑战:

(1)复杂查询处理的局限性:现有基于信息检索(IR)的方法在处理涉及类型约束、数值比较或多跳推理的复杂查询时表现不足。例如,类似“身高超过2米的篮球运动员有多少人?”的问题需要更深入的语义理解,而传统方法难以有效捕捉此类复杂逻辑。

(2)语义解析(SP)方法的高标注成本:基于语义解析的方法依赖大量标注数据来生成可执行的逻辑形式(如SPARQL查询),但数据标注成本高昂,限制了方法的可扩展性。此外,这类方法的推理过程通常缺乏透明性,形成“黑箱”问题。

(3)大语言模型的潜力未充分释放:尽管LLMs在少样本学习和复杂推理任务中展现了强大能力,但现有KBQA系统主要将其用作分类器或简单生成器,未充分利用其交互式推理能力。例如,许多方法仅用LLMs生成逻辑形式的初稿,而非通过多轮交互动态优化结果。

基于这些挑战,论文提出Interactive-KBQA框架,核心思路是将LLM视为与知识库交互的“智能体”,通过多轮对话逐步生成逻辑形式。这种方法不仅降低了标注成本,还通过交互式工具(如搜索节点、图模式匹配)增强了复杂问题的处理能力,并通过人工干预机制提高了系统的灵活性和可解释性。最终目标是实现一个高效、透明且适应低资源场景的KBQA系统。

2. 贡献

该工作的主要贡献为以下四点:

(1)提出交互式KBQA框架(Interactive-KBQA),将LLM视为与KB交互的智能体,通过多轮对话逐步生成逻辑形式(如SPARQL查询)。  

(2)设计统一工具集与交互逻辑:开发了三个通用API,适配不同知识库(Freebase、Wikidata、Movie KB);通过标准化工具接口,实现了跨异构知识库的兼容性,简化了复杂查询(如多跳、数值约束、限定符)的处理流程。

(3)实现低资源场景下的高效性能。针对每类复杂问题(如多跳、CVT、限定符),仅需标注2个示例即可引导LLM完成推理。在三个数据集上,使用极少量标注达到或超越传统全监督方法的性能。

(4)发布高质量标注数据集,包含逐步推理过程的人工标注(如交互历史、错误修正记录),涵盖多种复杂问题类型。

3. 方法

3.1 问题定义 

KB定义为三元组集合K∈E×R×(E∪L∪C),其中E为实体集合,R为关系集合,C为类别集合,L为字面值。给定自然语言问题Q和知识库K,目标是通过语义解析生成可执行的SPARQL查询S,即建模为条件概率p(S|Q,K)。

3.框架设计

提出Interactive-KBQA框架(如图1所示),将LLM视为与知识库交互的智能体,通过多轮对话生成逻辑形式(SPARQL)。

交互范式:采用“思考-行动-观察”(Thought-Action-Observation)循环:1. 思考(Thought):LLM生成自然语言推理步骤(如问题分解、谓词选择);2. 行动(Action):调用预定义工具(如搜索节点、执行查询),生成Python风格的API调用指令。3. 观察(Observation):执行工具后返回结果(如实体列表、子图模式),作为下一轮输入。

终止条件:当LLM生成Action: Done时,输出最终SPARQL查询结果。

图片

图1 Interactive-KBQA框架的交互过程示例

3.知识库交互工具

框架基于三个通用工具(SearchNodes、SearchGraphPatterns、ExecuteSPARQL)引导LLM逐步推理复杂问题:

(1)SearchNodes(name):通过实体表面名称(如“Tom Hanks”)搜索知识库中的节点,返回节点的规范化名称、描述和类型(如“Barack Obama | 美国前总统”)。

(2)SearchGraphPatterns(sparql, semantic):输入需以“SELECT ?e WHERE”开头的SPARQL片段,返回以 ?e 为中心的一跳子图,并根据语义参数(如“play in film”)对谓词排序。特别优化了Freebase的复合值类型(CVT)结构,例如将“Tom Hanks参演电影”映射为两个单跳关系(film.actor.film → film.performance.film)。

(3)ExecuteSPARQL(sparql):直接执行任意SPARQL查询,支持灵活探索知识库。

3.交互流程

构建提示模板Prompt={Inst,E,Q},其中Inst为任务指令,E为示例集合,Q为当前问题。每轮交互中,LLM根据历史H={c0,a0,o0,……,ct-1,at-1,ot-1} 生成动作at=LLM{Prompt,H},其中ct为自然语言推理步骤(如“需查找Tom Hanks参演的电影”),at为工具调用(如SearchNodes、ExecuteSPARQL),ot为工具返回结果。若生成动作“Done”,则输出最终答案。

针对多跳查询,逐步解析谓词而非具体实体(例如“法国的总统是谁?”需先定位国家节点,再搜索“president”关系);针对Freebase的CVT结构,显式分解为多个单跳关系(如将“演员-角色-电影”拆分为两跳);针对Wikidata的限定符(如“纽约市2010年人口”),设计专用SPARQL模式,通过修饰符(如point_in_time)约束查询。每类问题提供2个标注示例,引导LLM遵循特定推理路径。

3.人机协同标注

允许人工在交互过程中修正LLM的错误动作(如生成不存在谓词),形成修正后的历史{c0,a0,o0,……,a't,o't},并继续生成后续步骤。标注数据集包含详细的逐步推理过程,用于微调开源LLM(如Mistral-7B),降低对商业API的依赖。

4. 实验

4.实验设置

本工作采用:WebQuestionsSP (WebQSP) 和 ComplexWebQuestions 1.1 (CWQ):基于Freebase,分别包含简单(1-hop)和复杂(多类型)问题,问题类型包括Conjunction (Conj)、Composition (Compo)、Comparative (Compa)、Superlative (Super);KQA Pro:基于Wikidata,覆盖9类复杂问题(如计数、属性限定符、关系查询);MetaQA:基于Movie KB,包含1-hop至3-hop问题。 

本工作从每个数据集均匀采样900个实例确保问题类型分布平衡。

4.2 基线方法

本工作采用以下基线方法:

(1)全数据微调方法:DeCAF(WebQSP)、BART-SPARQL(KQA Pro)、Edge-aware(MetaQA)。

(2)提示方法:KB-BINDER(少样本)、Chain-of-Thought (CoT) + Self-Consistency (SC)。

(3)低资源微调方法:在标注数据集上微调开源LLMs(Mistral-7B、Llama2-7B/13B)。

(4)对比方法:StructGPT、ToG(假设实体已链接)。

4.3 评估指标

本工作采用以下评估指标:

(1)F1分数:逻辑形式生成的匹配程度。

(2)RHits@1(随机命中率@1):答案实体排名第一的比例。

(3)EM(精确匹配):生成的SPARQL与标注完全一致的比例。

(4)准确率(KQA Pro):答案集合完全匹配的比例。

4.主要结果

如表1所示,该工作在WebQSP和KQA Pro上,由于训练数据量差异,GPT-4 Turbo的性能略低于全监督方法,但在CWQ和MetaQA(表2)上显著超越(如CWQ的总体F1为49.07%,MetaQA的Hits@1达99.67%)。 在复杂问题类型上表现突出,例如CWQ的“比较类”(Compa)和“最高级”(Super)问题分别提升29.85%和13.96%。  

Mistral-7B微调后在CWQ和KQA Pro上的F1分别达到39.90%和64.40%,优于同等规模的基准方法(如SFT-SPARQL的28.10%和57.78%)。 

Llama2-13B在部分任务(如CWQ的Compa问题)上表现接近GPT-4 Turbo(55.98% vs. 47.89%)。

表1 Interactive-KBQA在WebQSP 和 CWQ 上的结果

图片

表2 Interactive-KBQA在MetaQA上的结果

图片

4.实体链接的影响

通过对比ELQ工具与论文方法,发现实体链接是性能瓶颈之一。在WebQSP和CWQ上,论文方法的F1分别为80.00%和76.06%,而ELQ仅41.30%和43.81%。引入提及覆盖率(MCR)指标(黄金实体名称在问题中的出现比例)后发现,KQA Pro和MetaQA的MCR较高(80.80%和100%),而WebQSP和CWQ较低(67.42%和76.64%)。

表3 实体链接的结果

图片

4.消融实验

示例数量与覆盖率:如表4和表5所示,在CWQ(4类问题)和KQA Pro(9类问题)上,增加示例覆盖率可提升性能(如CWQ 4-shot比0-shot F1提升2.5%),但成本增加37.86%。

表4 问题类型分类器的性能

图片

表5 示例编号和平均价格的影响

图片

骨干模型对比:如表6所示,GPT-4 Turbo显著优于GPT-3.5(CWQ F1为49.07% vs. 13.42%),微调后的Mistral-7B优于未训练版本(CWQ 39.90% vs. 4.76%)。

表6不同骨干模型的性能

图片

4.错误分析

如表7所示,错误类型分为六类:实体链接(18%)、谓词搜索(6%)、推理(32%)、格式合规性(17%)、幻觉(19%)及其他(8%)。案例分析显示,人工干预可有效修正幻觉(如生成不存在谓词)和推理错误(如多跳路径遗漏)。例如,在问题“Justin Bieber的兄弟是谁?”中,LLM需通过性别约束修正初始错误答案,最终生成正确的SPARQL查询。

表7 错误类型的分布

图片

5. 总结

该工作提出了Interactive-KBQA框架,通过将大型语言模型(LLM)作为与知识库交互的智能体,以多轮对话形式逐步生成可执行的逻辑形式(如SPARQL查询),解决了传统KBQA方法在处理复杂查询、高标注成本及模型黑箱问题上的瓶颈。其核心创新在于交互式工具设计(如SearchNodes、SearchGraphPatterns)与“思考-行动”范式的结合,允许LLM动态探索知识库结构,并通过少量标注示例引导推理。此外,该方法支持人工干预,能够修正模型错误,形成迭代优化机制,显著提升了低资源场景下的性能与可解释性。 

该工作中实验设计覆盖了四个主流数据集,涵盖从简单到复杂的多类问题(如多跳、数值约束、限定符)。亮点在于:首先,该工作仅用2-4个标注示例即可达到或超越传统方法,凸显了框架的样本效率。其次,该工作通过分类错误类型(如实体链接、幻觉)和案例研究,揭示了模型瓶颈与改进方向。最后,该工作量化交互轮次与推理成本(如GPT-4 Turbo每轮$0.3–$0.5),为实际应用提供参考。 

尽管方法在低资源场景下表现突出,但仍存在明显局限:首先,框架性能高度受限于LLM的推理质量,例如GPT-4 Turbo在复杂问题上的成功率显著高于开源模型(如Mistral-7B)。若LLM生成错误推理步骤(如幻觉谓词),需依赖人工干预修正,这在实际应用中可能增加操作成本。其次,多轮对话导致推理时间与API调用成本上升,尤其对需要高频查询的场景(如实时问答)不够友好。最后,实验集中于特定领域(如电影、人物),未验证在开放域或动态更新知识库中的适应性,且人工标注数据集的规模较小,可能影响模型鲁棒性。 

未来工作需进一步优化工具自动化程度、降低对商业API的依赖,并探索更高效的交互策略(如压缩历史信息),以推动方法在实际系统中的落地。

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

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

相关文章

MySQL注入中user-agent和cookie存在的注入

uagent注入 1、漏洞成因: 当Web应用程序将用户提供的User-Agent值未经处理直接拼接到SQL查询语句时,攻击者可以通过构造恶意User-Agent值闭合原有SQL语句并注入任意SQL代码。 2、以less-18为例: 相比前几关,第18关对于uname和pa…

【算法数学篇】试除法求约数

题解:试除法求约数 题目传送门 869. 试除法求约数 一、题目描述 给定 n 个正整数 aᵢ,对于每个整数 aᵢ,按照从小到大的顺序输出它的所有约数。 输入格式: 第一行包含整数 n接下来 n 行,每行包含一个整数 aᵢ 输…

《UNIX网络编程卷1:套接字联网API》第5章 TCP客户服务器程序示例

《UNIX网络编程卷1:套接字联网API》第5章 TCP客户/服务器程序示例 5.1 本章目标与示例程序概述 本章通过一个完整的TCP回射(Echo)客户/服务器程序,深入解析TCP套接字编程的核心流程与关键问题。示例程序的功能为:客户…

封装可拖动弹窗(vue jquery引入到html的版本)

vue cli上简单的功能&#xff0c;在js上太难弄了&#xff0c;这个弹窗功能时常用到&#xff0c;保存起来备用吧 备注&#xff1a;deepseek这个人工智障写一堆有问题的我&#xff0c;还老服务器繁忙 效果图&#xff1a; html代码&#xff1a; <div class"modal-mask&qu…

编译器工具链是什么?

编译器工具链&#xff08;Compiler Toolchain&#xff09; 是一组用于将源代码转换为可执行程序的工具和库的集合。它涵盖了从源代码编写到程序运行的整个构建过程&#xff0c;包括编译、汇编、链接等多个阶段。以下是关于编译器工具链的详细解释&#xff1a; 一、编译器工具链…

Spring Boot 集成Redis中 RedisTemplate 及相关操作接口对比与方法说明

RedisTemplate 及相关操作接口对比与方法说明 1. RedisTemplate 核心接口与实现类 RedisTemplate 是 Spring Data Redis 的核心模板类&#xff0c;通过 opsFor... 方法返回不同数据类型的操作接口&#xff0c;每个接口对应 Redis 的一种数据结构。以下是主要接口及其实现类&am…

linux内核漏洞检测利用exp提权

案例一dirtycow&#xff08;CVE-2016-5159&#xff09; 有个前置知识就是 获取liunx的内核 hostnamectl uname -a 然后这个内核漏洞进行提权的步骤也是和手工win进行提权差不多 也是需要使用辅助工具在本地进行辅助检测 然后去nomi-sec/PoC-in-GitHub&#xff1a; &#…

重磅 | CertiK《Hack3d:2025第一季度安全报告》(附报告全文链接)

CertiK《Hack3d&#xff1a;2025年第一季度安全报告》现已发布&#xff0c;本次报告深入分析了2025年1至3月Web3.0领域的安全状况。2025年第一季度共发生197起安全事件&#xff0c;总损失约为16.7亿美元&#xff0c;环比激增303.4%。其中Bybit事件导致约14.5亿美元的损失&#…

经典卷积神经网络LeNet实现(pytorch版)

LeNet卷积神经网络 一、理论部分1.1 核心理论1.2 LeNet-5 网络结构1.3 关键细节1.4 后期改进1.6 意义与局限性二、代码实现2.1 导包2.1 数据加载和处理2.3 网络构建2.4 训练和测试函数2.4.1 训练函数2.4.2 测试函数2.5 训练和保存模型2.6 模型加载和预测一、理论部分 LeNet是一…

二维码扫不出?用QR Research工具

一.简介 简单来说QR Research就是用来扫二维码的工具 当二维码模糊不清&#xff0c;无法用普通方式扫时&#xff0c;就可以用QR Research轻松扫描。QR Research还可以分析变形/破损二维码&#xff08;修复或提取有效部分&#xff09; 二.下载安装 QR Research 三.例题 这…

02_使用Docker在服务器上部署Jekins实现项目的自动化部署

02_使用Docker在服务器上部署jenkins实现项目的自动化部署 一、使用docker拉取阿里云容器私有镜像仓库内的jenkins镜像 登录阿里云Docker Registry $ sudo docker login --usernamewxxxo1xxx registry.cn-shanghai.aliyuncs.com用于登录的用户名为阿里云账号全名&#xff0c…

微服务组件——Eureka组件的安装与使用指南

文章目录 一、Eureka Server的安装与配置1、创建Spring Boot项目2、添加依赖3、配置Eureka Server4、启用Eureka Server5、启动并访问Dashboard 二、Eureka Client的配置&#xff08;服务注册&#xff09;1、添加客户端依赖2、配置客户端3、启用服务发现4、启动服务 三、服务发…

探索Doris:日志分析的新宠,是否能取代老牌ES?

在大数据时代&#xff0c;日志存储与分析对于企业的运营和决策起着至关重要的作用。Elasticsearch&#xff08;简称 ES&#xff09;作为一款广泛应用的开源分布式搜索和分析引擎&#xff0c;长期以来在日志管理领域占据着举足轻重的地位。然而&#xff0c;随着技术的不断发展&a…

学习threejs,使用Texture纹理贴图,测试repeat重复纹理贴图

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️Texture 纹理贴图1.1.1 ☘️…

图像配准及识别

一、图像配准基础 图像配准&#xff0c;听起来很高大上&#xff0c;其实用大白话来说&#xff0c;就是“让两张照片对齐”的技术。想象一下&#xff0c;你有两张拍得不完全一样的照片&#xff0c;比如一张是你从正面拍的风景&#xff0c;另一张是从侧面拍的同一个地方&#xff…

QT之QML(简单示例)

需求一&#xff1a;点击按钮弹出菜单&#xff0c;并且自定义菜单弹出位置。 mouse.x 和 mouse.y 获取的是相对于 MouseArea&#xff08;在这个例子中是 Button&#xff09;左上角的局部坐标。如果你想要在鼠标点击位置显示 Menu&#xff0c;你需要将这个局部坐标转换为相对于应…

如何编写单元测试

一、前言知识 1.开发过程 需求分析->设计->开发->测试->上线 2.测试种类 单元测试(测试模块编码)、黑盒测试(测试功能是否满足需求)、白盒测试(测试程序内部的逻辑结构)、回归测试(提出的缺陷进行二次验证)、集成测试(测试主要的业务功能及模块间的整合性)、系…

LeetCode 解题思路 30(Hot 100)

解题思路&#xff1a; 递归参数&#xff1a; 生成括号的对数 n、结果集 result、当前路径 path、左括号数 open、右括号数 close。递归过程&#xff1a; 当当前路径 path 的长度等于 n * 2 时&#xff0c;说明已经生成有效括号&#xff0c;加入结果集。若左括号数小于 n&…

【Golang】Windows系统键鼠空闲监测练习

在本文中&#xff0c;我们将练习如何使用Golang编写一个简单的Windows系统空闲时间监测工具。该工具能够检测系统的空闲时间&#xff0c;并在达到一定阈值时计数。 功能概述 监控鼠标和键盘的空闲事件&#xff0c;每空闲超过50s&#xff0c;触发次数加一。 该工具具有以下功…

关于React Redux

官网&#xff1a;&#x1f449;详情一 &#x1f449;详情二 &#x1f449;关于redux 使用原因&#xff1a;&#x1f449;详情 /** 2-1、随着javascript单页应用程序的发展&#xff0c;需要在代码中管理更多的状态&#xff08;包括服务器响应数据、缓存数据、本地创建还未发送…