【text2sql】基于上下文文学习的MCS-SQL框架在Spider和BIRD取得了新SOTA

论文标题 "MCS-SQL: Leveraging Multiple Prompts and Multiple-Choice Selection For Text-to-SQL Generation" ,发表于2024.5的arXiv。

1.摘要解读

研究背景 :大型语言模型(LLMs)在文本到SQL(Text-to-SQL)任务中,通过上下文学习(ICL)方法取得了显著的性能提升,但与人类专家相比,性能仍有较大差距,尤其是在处理复杂数据库模式和查询的基准测试中。 研究方法 :本研究提出了一种新方法,利用多个提示(multiple prompts)来探索更广泛的可能答案空间,并有效聚合这些答案。通过多提示强化数据库模式链接,生成多样化的候选SQL查询,并基于置信度分数过滤这些查询,最后通过多项选择(multiple-choice selection)获取最优查询。研究成果:在BIRD和Spider基准测试中,该方法分别取得了65.5%和89.6%的执行准确率,显著优于以往的ICL方法,并在BIRD基准测试中建立了新的性能标准。

2.主要贡献

作者提出的 MCS-SQL 方法,该方法通过利用多个提示(Multiple Prompts)和多项选择(Multiple-Choice Selection)来增强文本到SQL生成的准确性和鲁棒性。在BIRD和Spider这两个包含复杂数据库模式和查询的基准测试中,该方法实现了显著的性能提升,特别是在BIRD基准测试中,该方法取得了65.5%的执行准确率,超过了之前的最佳方法,并在效率上也有所提高。

3. 方法论解读

3.1 Schema Linking

模式链接的目的是将自然语言问题中的实体与数据库模式中的表格和列关联起来。这个过程分为两步:

  1. 表格链接(Table Linking):确定与自然语言查询相关的数据库表。作者使用多个提示来增加召回率,即确保所有相关表格都被选中。为了减少表格顺序的影响,作者随机打乱表格顺序,生成多个不同的提示。对于每个提示,使用高采样温度从LLM获得多个响应,最终结果是所有响应的并集。

  2. 列链接(Column Linking):在确定了相关表格后,下一步是确定这些表格中需要的列。与表格链接类似,这个过程也使用多个提示,并且只包括在表格链接阶段选择的表格的模式。

3.2 Multiple SQL Generation

多SQL生成阶段的目标是生成多个候选SQL查询。作者通过以下步骤实现:

  1. 少量示例选择(Few-Shot Examples Selection):对于每个测试样本,从训练集中选择少量示例。作者使用了两种不同的选择策略:基于问题相似度的方法和基于掩蔽问题相似度的方法。掩蔽问题是指将问题中特定于数据库模式的标记(如表名、列名和值)替换为特殊标记。

  2. SQL生成:使用少量示例、数据库模式、样本表内容和自然语言问题构造提示。每个提示都旨在生成一个SQL查询,并要求LLM解释生成该查询的推理步骤。对于每个提示,使用高采样温度从LLM获得多个响应。

3.3 Selection

选择阶段的目标是从候选查询中选择最准确的一个。选择过程包括两个步骤:

  1. 候选过滤(Candidate Filtering):基于置信度分数过滤候选查询。首先,执行所有候选查询并移除那些由于语法错误或超时而失败的查询。然后,计算每个查询的置信度分数,即产生相同执行结果的查询数量。选择每个执行结果组中执行时间最短的查询,并移除置信度分数低于某个阈值的查询。

  2. 多项选择(Multiple-Choice Selection, MCS):过滤后,使用LLM通过多项选择问题来选择最准确的查询。给定一组候选SQL查询,LLM需要选择最合适的查询并提供选择的理由。对于每个多项选择问题,从LLM采样多个响应,并通过多数投票确定最终的SQL查询。

工作流程总结
  1. 模式链接:使用多个提示来确定与问题相关的数据库表格和列。
  2. 多SQL生成:基于上一步确定的模式和多个不同的提示生成多个候选SQL查询。
  3. 选择:首先基于置信度过滤候选查询,然后通过LLM的多项选择来确定最终的查询。
相关推荐
独行soc29 分钟前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
清平乐的技术专栏1 小时前
Hive SQL 查询所有函数
hive·hadoop·sql
AIGCmagic社区6 小时前
AI多模态技术介绍:理解多模态大语言模型的原理
人工智能·语言模型·自然语言处理
cmdch20176 小时前
Mybatis加密解密查询操作(sql前),where要传入加密后的字段时遇到的问题
数据库·sql·mybatis
程序猿小柒6 小时前
【Spark】Spark SQL执行计划-精简版
大数据·sql·spark
吕小明么6 小时前
OpenAI o3 “震撼” 发布后回归技术本身的审视与进一步思考
人工智能·深度学习·算法·aigc·agi
听见~8 小时前
SQL优化
数据库·sql
测试者家园8 小时前
ChatGPT生成接口文档的方法与实践
软件测试·chatgpt·测试用例·接口测试·接口文档·ai赋能·用chatgpt做软件测试
开放知识图谱9 小时前
论文浅尝 | HippoRAG:神经生物学启发的大语言模型的长期记忆(Neurips2024)
人工智能·语言模型·自然语言处理
明矾java10 小时前
Mysql-SQL执行流程解析
数据库·sql·mysql