Text-to-SQL:一种增量预训练方法 1

本文介绍了一种名为CodeS的开源语言模型,通过增量预训练和数据库提示,克服了大模型的局限性,在多种文本到SQL基准测试中达到新SOTA。CodeS在保持小规模的同时,实现了高精度和领域适应性。
摘要由CSDN通过智能技术生成

摘要

        语言模型在将自然语言问题转换为 SQL 查询(文本到 SQL)的任务中表现出良好的性能。然而,大多数最先进的 (SOTA) 方法都依赖于强大但闭源的大型语言模型 (LLM),例如 ChatGPT 和 GPT-4,它们可能具有模型架构不明确、数据隐私风险和昂贵的推理开销等限制。为了解决这些限制,我们引入了 CodeS,这是一系列预训练的语言模型,参数范围从 1B 到 15B,专为文本到 SQL 任务而设计。CodeS 是一个完全开源的语言模型,它以更小的参数大小实现了卓越的准确性。本文研究了构建 CodeS 的研究挑战。为了增强 CodeS 的 SQL 生成能力,我们采用了一种增量预训练方法,使用专门策划的以 SQL 为中心的语料库。基于此,我们通过战略提示构建和双向数据增强技术解决了模式链接和快速领域适应的挑战。我们对多个数据集进行了全面评估,包括广泛使用的 Spider 基准测试、新发布的 BIRD 基准测试、Spider-DK、Spider-Syn、Spider-Realistic 和 Dr.Spider 等鲁棒性诊断基准,以及为金融和学术应用创建的两个真实世界数据集。实验结果表明,我们的 CodeS 在几乎所有具有挑战性的文本到 SQL 基准测试中都实现了新的 SOTA 准确性和鲁棒性。

1.引言


        文本到 SQL 任务涉及将用户的自然语言 (NL) 问题转换为可通过数据库执行的相应且有效的结构化查询语言 (SQL) 查询。图 2 说明了如何将数据库(例如 Bank Financial)上提出的 NL 问题转换为 SQL 查询。文本转 SQL 使可能不熟悉 SQL 或数据库结构的用户能够使用自然语言与数据库进行交互,因此它越来越受到数据库的关注(Fu et al., 2023;Gu 等人,2023a;Brunner 和 Stockinger,2021 年)和自然语言处理社区(Scholak 等人,2021 年;Li 等人,2023d)。

图 1.CodeS 和 SOTA LLM 在两个具有挑战性的文本到 SQL 基准测试上的比较,Spider (Yu et al., 2018b) 和 BIRD (Li et al., 2023c)。虽然 CodeS 比现有 SOTA LLM 小 10 倍至 100 倍,但可实现相当甚至更高的精度。

图2.金融领域中的文本转 SQL 示例。

最先进方案:优势和局限性。

        而传统的文本转 SQL 使用监督微调方法 (SFT)(Wang 等人,2020 年;Scholak 等人,2021 年;Li et al., 2023d),最近,随着 GPT-4 (OpenAI, 2023)、GPT-3.5 (Ouyang et al., 2022) 和 PaLM-2 (Anil et al., 2023) 等大型语言模型 (LLM) 的出现,范式开始发生变化。LLM 没有严重依赖微调,而是使用精心制作的提示展示了它们在文本到 SQL 方面的能力(Chen et al., 2023;Sun 等人,2023 年;Rajkumar 等人,2022 年;Liu等人,2023a;Pourreza 和 Rafiei,2023 年;Dong et al., 2023),这被称为“提示学习”或“情境学习”(Liu et al., 2023b)。

        然而,大多数最先进的 (SOTA) 方法都依赖于闭源 LLM,例如基于 GPT-4 的 DIN-SQL(Pourreza 和 Rafiei,2023 年)、基于 PaLM-2 的 SQL-PaLM(Sun 等人,2023 年)和基于 GPT-3.5 的 C3(Dong 等人,2023 年)。尽管实现了有希望的文本到 SQL 性能,但这些方法可能具有以下限制。(L1级)闭源模型隐藏了其架构和训练/推理细节,阻碍了针对特定应用程序量身定制的特定目的的持续开发。(二楼)通过 API 调用这些模型会存在数据隐私风险,因为数据必须发送给模型提供程序。(三级)大多数闭源模型都有许多参数(例如,GPT-3.5 的 175B 参数),这会导致大量的推理开销,这通常反映在调用 API 的货币成本上。

 我们的建议。

        本文介绍了 CodeS,这是一种专为实际文本转 SQL 应用程序而设计的开源语言模型。CodeS 建立在 StarCoder (Li et al., 2023a) 之上,StarCoder 是一种专为代码生成而设计的尖端 LLM,参数范围从 1B 到 15B。用户可以根据其计算资源选择适当大小的 CodeS 来构建其文本到 SQL 应用程序。如图 1 所示,与 SOTA 文本转 SQL 解决方案相比,CodeS 具有以下优点。

        • 完全开源的 LLM。CodeS 建立在 StarCoder (Li et al., 2023a) 之上,是完全开源的,对用户公开。
        • 新的SOTA结果。CodeS 在几乎所有具有挑战性的文本到 SQL 基准测试上都实现了新的 SOTA 性能,例如 Spider (Yu et al., 2018b) 和 BIRD (Li et al., 2023c)。
        • 体积小。CodeS 比现有的 SOTA LLM 小 10 倍到 100 倍,例如 ChatGPT 和 GPT-41。

 挑战与解决方案。

        我们概述了开发 CodeS 的主要技术挑战,并解释了我们的解决方案如下。

        C1:如何启用具有复杂文本到 SQL 推理能力的小型语言模型?直接使用预训练语言模型,如 LLaMA-2 (Touvron et al., 2023b) 和 StarCoder (Li et al., 2023a),在文本转 SQL 方面面临挑战,主要是因为 SQL 相关内容通常只占其整个预训练语料库的一小部分。随后,数据偏差可能会阻碍文本到 SQL 的功能,因为预训练阶段的语言模型旨在适应整个语料库的分布,而不仅仅是 SQL 相关数据的分布。此外,与ChatGPT或GPT-4相比,小规模语言模型的推理能力有限,导致文本转SQL能力不足。为了应对这一挑战,我们提出了一种增量预训练方法,利用与文本到 SQL 任务相关的大量精选数据集。具体来说,我们收集了 21.5GB 的数据,包括 SQL 相关数据 (11GB)、NL 代码数据 (6GB) 和 NL 相关数据 (4.5GB),旨在增强 SQL 生成能力和自然语言理解能力。通过在这个语料库上逐步预训练StarCoder(Li et al., 2023a),我们创建了一系列CodeS模型,其参数范围从1B到15B不等。

        C2:如何为text-to-SQL生成高质量的提示,以缓解Schema链接的难度?架构链接对于文本到 SQL 的翻译至关重要,可确保模型将输入问题映射到特定的数据库元素(Lei et al., 2020)。然而,许多表、具有许多列的宽表、模棱两可的表/列名称以及具有大量值的大表都出现了问题。为了应对这一挑战,我们对众多表和宽表使用架构过滤策略,仅保留基于用户从数据库中查询的相关表和列,确保架构不超过模型的上下文长度。对于模棱两可的名称,如缩写,我们将注释与这些名称联系起来,帮助模型理解上下文。对于大型表,采用“从粗到细”的方法:我们最初根据问题使用 BM25 索引过滤值,然后使用最长的公共子字符串算法进一步细化它们。使用这些技术,我们为 CodeS 模型构建提示,增强架构链接并提高复杂数据库的文本到 SQL 性能。

        C3:如何自适应地转移到新域中的数据库?在实际应用中,我们的目标是使 CodeS 模型能够适应各个领域。然而,一个重大障碍是缺乏用于微调的特定(问题,SQL)对。为了应对这一挑战,我们采用了双向数据增强技术。首先,我们收集一些真正的用户查询,手动标注相应的 SQL 查询,并利用 GPT-3.5 生成更广泛的(question、SQL)对,确保面向用户的真实性。另一方面,我们利用 SQL 模板及其来自文本到 SQL 基准的问题模板。通过从新域的数据库中插入表、列和值,我们生成了一组不同的(问题、SQL)对。这种模板方法有助于 CodeS 对新发行版的适应性。从本质上讲,我们精心制作的训练数据集将真实示例与结构化模板相结合,保证了真实性和广泛的适用性。

评估。

        我们在两个具有挑战性的文本到 SQL 基准测试上评估了创建的 CodeS:Spider (Yu et al., 2018b) 和 BIRD (Li et al., 2023c)。虽然 Spider 长期以来一直是文本转 SQL 的标准,但 BIRD 提供了更复杂的问题、模棱两可的架构以及庞大而肮脏的数据库值。领先的文本转 SQL 方法 DIN-SQL+GPT-4 在其测试集上仅管理大约 56%。除了传统的 Spider 基准测试之外,我们还针对 Spider 的四个不同变体评估了 CodeS:Spider-DK(Gan 等人,2021a)、Spider-Syn(Gan 等人,2021b)、Spider-Realistic (邓等人,2021a)和 Dr.Spider(Chang 等人,2023 年)。它们总共涵盖 20 个测试集,并针对探测模型弹性进行了定制,尤其是在测试数据分布与训练数据分布不同的场景中。为了研究我们的双向数据增强方法在快速适应新领域方面的影响,我们从学术和金融领域采购了数据库。鉴于两个数据库的训练数据都不足以进行有效的微调,我们扩充了训练数据,微调了我们的模型,然后评估了其在各自测试集上的性能。

我们的贡献总结如下:

        • 我们引入了 CodeS,这是一系列语言模型,参数范围从 1B 到 15B,专为 SQL 生成而设计。这项创新以增量预训练技术和精心策划的预训练语料库为基础,该语料库包括 SQL 相关、NL 相关和 NL 到代码的数据。这种方法标志着为文本转 SQL 应用程序定制的语言模型的重大进步。
        • 我们使用全面的数据库提示来增强 CodeS 的性能。此外,为了便于适应新领域,我们引入了一种双向数据增强方法,并限制了注释开销。
        • 通过对多个文本到 SQL 基准的广泛评估,我们证明 (1) CodeS 在 SQL 生成能力方面超过了其他著名的开源预训练语言模型;(2) 经过微调后,CodeS 在几乎所有具有挑战性的文本到 SQL 基准测试中都实现了新的 SOTA 准确性和鲁棒性。
        • 我们在 GitHub2 上开源了我们的代码、模型和数据,以促进社区内文本转 SQL 领域的进一步研究、采用和创新。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值