微信扫码
与创始人交个朋友
我要投稿
Text2SQL领域的主要挑战之一是生成不仅语法正确而且与自然语言输入语义一致的SQL查询。《KeyInst: Keyword Instruction for Improving SQL Formulation in Text-to-SQL》引入关键词指令(KeyInst) 来提升Text2SQL能力,这是一种旨在通过大型语言模型(LLMs)增强SQL生成的新方法。KeyInst本质上提供了可能成为最终查询一部分的关键SQL关键词的指导,从而促进了更顺畅的SQL查询生成过程。文章探索了两种将KeyInst集成到Text2SQL解析中的策略:
KeyInst其主要思想是通过分析自然语言查询(NLQ)来理解其意图,并通过识别对将NLQ转换为目标SQL至关重要的关键字来为SQL生成提供明确的指导。KeyInst是为每个文本到SQL任务实时生成的。
文章从Spider训练集中准备了超过6,200个KeyInst示例,组织成一个KeyInst集合,其中 是数据库模式, 是问题, 是SQL, 是KeyInst。
每个KeyInst由两部分组成:问题分析和关键词建议,如上图所示。问题分析是通过提示LLMs生成的。对于关键词建议,通过解析SQL结构以识别其使用的所有关键词,然后过滤掉非必要的部分。关键词的优先级如下:最高优先级(group by, having, order by, limit, except, intersect, union, where),第二优先级(select, from)。如果SQL缺少更高优先级的关键词,则仅添加较低优先级的关键词。其他关键词(如join, count, in等)不包含在关键词建议中。如果没有关键词优先级,KeyInst将退化为SQL骨架,后者包含SQL语句的所有关键词。
管道方法作为KeyInst的一种应用,分两步生成SQL。首先,为每个文本到SQL任务生成定制的KeyInst,然后使用生成的KeyInst提示LLMs生成SQL查询。
生成KeyInst的一种方法是微调一个模型,使其成为KeyInst生成器。使用监督微调,输入是数据库模式 和问题,目标输出是对应的KeyInst。主要目标是最小化以下损失函数:
其中 表示与模型下一个标记预测相关的损失,比较预测的KeyInst与实际的Ground Truth。这个微调模型称为微调KeyInst生成器,它分析问题并生成定制的KeyInst,称为KeyInst-FT,用于提示LLMs进行SQL生成。
另一种生成KeyInst的方法是使用基于上下文学习(ICL)来提示LLMs生成KeyInst。从KeyInst集合 中选择几个示例(即演示)来形成一个少样本提示,用于为文本到SQL任务生成定制的KeyInst。每个示例包含一个数据库模式、一个问题 及其对应的KeyInst。对于每个Text2SQL任务,根据掩码问题相似性选择最相似的 个示例,并将它们与当前的数据库模式 和问题 结合,创建一个少样本提示。这个少样本提示指导LLMs生成当前问题的定制KeyInst,称为KeyInst-ICL。该过程可以表示为:
其中 是LLMs的输入,包括当前的模式和问题以及 个示例。输出 是当前问题的预期KeyInst-ICL。该系统称为基于上下文学习的KeyInst生成器。
SQL生成在KeyInst生成之后进行。基本用法是将KeyInst与数据库模式、问题 和KeyInst 结合,构建一个零样本提示,指导LLMs生成SQL。这可以表示为:
其中 是LLMs的输入(即零样本提示), 是预期的SQL输出。
值得注意的是,KeyInst作为增强LLMs SQL生成能力的指令。它具有高度的可扩展性,可以轻松地与现有的文本到SQL提示方法集成。通过将KeyInst附加到这些方法的提示中,可以显著提高其性能。
微调的模型在一个步骤中同时生成KeyInst和SQL。KeyInst的生成作为初始推理步骤,微调过程帮助模型内化这一推理,从而提高其生成SQL查询的能力。
这涉及监督微调,其中输入是数据库模式 和问题,目标是KeyInst 和SQL语句。目标是最小化经验损失:
其中 表示与模型下一个标记预测相关的损失,比较预测的KeyInst和SQL与实际的Ground Truth。
微调模型与常见的文本到SQL微调模型的主要区别在于输出。模型首先生成KeyInst,然后生成SQL,有效地对SQL生成进行推理。微调使模型能够记住这种推理模式,因此在遇到文本到SQL任务时可以自发地进行推理。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-06-20
2024-06-14
2024-10-14
2024-06-16
2024-10-09
2024-07-03
2024-06-14
2024-05-31
2024-07-24
2024-06-06