【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的多项选择来确定最终的查询。
相关推荐
杨云龙UP12 小时前
【MySQL逻辑备份】基于mysqldump的MySQL 8.0全量逻辑备份脚本
linux·运维·数据库·sql·mysql·mssql
组合缺一14 小时前
Solon AI 开发学习3 - chat - 模型配置与请求选项
java·学习·ai·chatgpt·langchain·solon
ptc学习者15 小时前
oracle 列的直方图
数据库·sql·mysql
驾数者15 小时前
DDL实战指南:如何定义和管理动态表
大数据·sql·flink
mortimer15 小时前
从一句话扩展成完整的AI画图提示词【限制你的只有你的想象力】
aigc·openai
恋猫de小郭15 小时前
聊一聊 Gemini3、 AntiGravity 和 Nano Banana Pro 的体验和问题
前端·aigc·gemini
roykingw16 小时前
什么是世界模型?和大语言模型有什么区别?
人工智能·语言模型·自然语言处理
菥菥爱嘻嘻19 小时前
langchain学习-RAG+prompt+OutPutParse
学习·langchain·prompt
Jing_jing_X19 小时前
ChatGPT 四种模式:普通对话、推理思考、深度研究、学习模式有什么区别?
人工智能·学习·chatgpt
用户51914958484519 小时前
利用配置错误的postMessage()函数实现DOM型XSS攻击
人工智能·aigc