【论文速读】| TCSR-SQL:面向表内容感知的自检索文本到SQL方法

本次分享论文:TCSR-SQL: Towards Table Content-aware Text-to-SQL with Self-retrieval

基本信息

**原文作者:**Wenbo Xu, Liang Yan, Peiyi Han, Haifeng Zhu, Chuanyi Liu, Shaoming Duan, Cuiyun Gao, Yingwei Liang

**作者单位:**哈尔滨工业大学(深圳)、鹏城实验室、广东电网公司

**关键词:**Text-to-SQL,表内容感知,自检索,LLM

**原文链接:**https://arxiv.org/pdf/2407.01183

开源代码:

https://github.com/TCSR-SQL/TCSR-SQL

论文要点

**论文简介:**大语言模型(LLM)在文本到SQL(Text-to-SQL)方法中取得了重要进展,但在面对真实世界场景中的表内容感知问题时,现有方法在处理问题中模糊数据内容关键词和不存在的数据库模式列名时表现不佳。

为了解决这一问题,本文提出了一种面向表内容感知的自检索文本到SQL(TCSR-SQL)方法。该方法利用LLM的上下文学习能力,从问题中提取数据内容关键词并推断可能相关的数据库模式,通过模糊搜索数据库生成初始SQL,并在多轮生成-执行-修正过程中不断优化,最终生成精确的SQL。本文还引入了一个包含1692个问题-SQL对的数据集,以验证该方法的有效性。实验结果表明,TCSR-SQL在执行准确率上相比现有方法至少提高了13.7%。

**研究目的:**本文的研究目的是解决当前LLM在生成对应于表内容感知的自然语言问题的SQL查询时面临的两个主要困难:一是如何识别自然语言问题中的数据内容关键词所对应的数据库模式列名;二是如何在自然语言问题中的不精确数据内容关键词的基础上,识别数据库中存储的精确内容值。通过引入自检索技术,本文提出了一个创新的方法来处理这一问题,旨在提高生成SQL查询的准确性。

研究贡献:

  • 提出了一种新颖的TCSR-SQL方法,利用自检索技术解决了生成对应表内容感知自然语言问题的SQL查询问题。

  • 创建了一个包含1692个问题-SQL对的新数据集,用于评估该方法的有效性。

  • 实验结果表明,TCSR-SQL在执行准确率上相比现有最先进的方法提高了13.7%。

引言

随着大语言模型(LLM)技术的快速发展,基于LLM的文本到SQL(Text-to-SQL)方法在生成SQL查询方面取得了重要进展。然而,现有方法在处理真实世界中的表内容感知问题时,仍然面临一些挑战。例如,当问题中包含模糊的数据内容关键词和不存在的数据库模式列名时,现有方法的表现往往不尽如人意。

为了解决这些问题,本文提出了一种面向表内容感知的自检索文本到SQL(TCSR-SQL)方法。该方法利用LLM的上下文学习能力,从问题中提取数据内容关键词并推断可能相关的数据库模式,通过模糊搜索数据库生成初始SQL,并在多轮生成-执行-修正过程中不断优化,最终生成精确的SQL。

具体来说,TCSR-SQL包括三个主要模块:关键词提取与模糊检测、知识检索与对齐、SQL生成与修正 **。**关键词提取与模糊检测模块从自然语言问题中提取数据内容关键词,并通过模糊检测技术搜索数据库中的相关内容值。知识检索与对齐模块则利用检索到的编码知识确认SQL查询中的列名和条件值。最后,SQL生成与修正模块生成初步的SQL查询,并根据执行结果进行修正,直至生成最终的精确SQL。

相关工作

目前,最新的Text-to-SQL研究主要关注如何利用大语言模型(LLM)来完成这一任务。基于LLM的Text-to-SQL方法大致可以分为两类:基于数据库模式的方法和基于数据内容的方法。

1. 基于数据库模式的方法

**·**提示工程方法:例如,C3-SQL设计了一种零样本提示技术,通过将Text-to-SQL任务分解为两个子任务:模式链接和SQL生成。DIN-SQL设计了多轮少样本提示策略,将Text-to-SQL任务分解为四个子任务:模式链接、分类与分解、SQL生成和自我修正。

**·**微调方法:随着LLM技术的快速迭代和开源LLM模型的大规模出现,一些研究致力于通过微调技术将通用LLM训练为Text-to-SQL领域的特定LLM。

2. 基于数据内容的方法

**·**仅使用LLM的方法:一些方法直接在提示工程和微调方法的基础上增加了几个数据内容样本。例如,SQLPrompt在输入提示中增加了相关的数据库内容值。CodeS在设计的数据库提示构建会话中引入了数据内容样本,以微调开源LLM模型StarCoder。

**·**基于代理的方法:一些研究探索了代理方法在Text-to-SQL领域的可能性。例如,SQL-CRAFT引入了SQL查询执行的反馈信息,以指导LLM修正其生成的SQL查询。

尽管这些方法提供了数据内容样本,但它们仍然无法直接使用数据库中存储的精确内容值作为生成SQL查询的条件值。因此,本文提出了一种自检索技术,将数据库内容理解与SQL生成-执行-修正过程相结合,以解决这一问题。

TCSR-SQL

如引言部分所述,现有的基于LLM的Text-to-SQL方法在根据大数据库的表内容感知自然语言问题生成SQL查询时面临两大困难:一是识别自然语言问题中的数据内容关键词所对应的数据库模式列名,二是识别数据库中存储的精确内容值。

为了解决这些问题,本文提出了TCSR-SQL方法,包含三个模块:

**1. 关键词提取与模糊检测模块:**从自然语言问题中提取数据内容关键词,并通过模糊检测技术搜索数据库中的相关内容值。

**2. 知识检索与对齐模块:**利用模糊检测模块的搜索结果确认SQL查询中的列名和条件值。

**3. SQL生成与修正模块:**生成初步的SQL查询,并根据执行结果进行修正,直至生成最终的精确SQL。

研究评估

**实验设置:**为了评估TCSR-SQL方法的有效性,本文创建了一个包含1692个问题-SQL对的基准数据集(TCD)。该数据集从多个Spider变体数据集和实际数据库中提取,涵盖了真实世界中的表内容感知问题。评估指标包括执行准确率(EX)和精确匹配准确率(EM),前者比较预测SQL查询和金标准SQL查询的执行输出,后者比较预测SQL查询和金标准SQL查询的各个部分。实验使用GPT-3.5-turbo模型,并采用Dmeta-embedding算法进行相似度计算。

**整体结果:**实验结果表明,TCSR-SQL在执行准确率(EX)和精确匹配准确率(EM)方面均显著优于现有最先进的方法。具体而言,TCSR-SQL在EX和EM上分别达到了75.0%和48.2%,相比最佳现有方法至少提高了13.7%。这得益于关键词提取与模糊检测、知识检索与对齐、SQL生成与修正三个模块的协同工作。通过多轮生成-执行-修正过程,TCSR-SQL能够更准确地生成对应表内容感知的SQL查询,有效应对真实世界中的复杂查询任务。

**消融实验:**通过消融实验评估了TCSR-SQL各模块对整体性能的影响。结果显示,去除关键词提取与模糊检测模块后,执行准确率(EX)下降了7.6%;去除知识检索与对齐模块后,EX下降了9.3%;去除SQL修正模块后,EX下降了6.4%。这些结果表明,每个模块对提高SQL生成准确性都起到了重要作用。特别是知识检索与对齐模块,通过整合编码知识,显著提升了SQL查询条件的精确性,而SQL修正模块通过执行反馈进一步优化了最终的SQL查询。

**案例研究:**为了深入了解TCSR-SQL的工作原理,研究者进行了案例研究。研究表明,现有方法在生成SQL查询时常常无法正确识别数据内容关键词和条件值,导致查询结果为空或错误。相比之下,TCSR-SQL通过关键词提取与模糊检测模块有效地提取问题中的数据内容关键词,并利用知识检索与对齐模块确认数据库中的精确存储值。最终,SQL生成与修正模块生成准确的SQL查询,避免了常见错误。例如,在处理一个关于GDP增长率的问题时,TCSR-SQL成功生成了正确的SQL查询,而其他方法均未能正确执行。

论文结论

本文提出的TCSR-SQL方法,通过引入自检索技术,显著提升了生成对应表内容感知自然语言问题的SQL查询的准确性。实验结果表明,TCSR-SQL在执行准确率和精确匹配准确率方面均显著优于现有最先进的方法。具体来说,TCSR-SQL利用关键词提取与模糊检测、知识检索与对齐、SQL生成与修正三个模块,解决了在大数据库中生成准确SQL查询的关键挑战。通过创建一个包含1692个问题-SQL对的新数据集,研究者验证了该方法的有效性,证明了其在处理复杂查询任务中的优越性能。总之,TCSR-SQL为Text-to-SQL领域提供了一个创新且高效的解决方案。

原作者:论文解读智能体

校对:小椰风

相关推荐
diemeng111911 分钟前
AI前端开发技能变革时代:效率与创新的新范式
前端·人工智能
有Li15 分钟前
跨中心模型自适应牙齿分割|文献速递-医学影像人工智能进展
人工智能
qq_5298353518 分钟前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New3 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6753 小时前
数据库基础1
数据库
我爱松子鱼3 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo3 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser4 小时前
【SQL】多表查询案例
数据库·sql
Galeoto4 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)5 小时前
MySQL主从架构
服务器·数据库·mysql