赞
踩
PET-SQL出自论文《PET-SQL: A Prompt-enhanced Two-stage Text-to-SQL Framework with Cross-consistency》,将基于大模型的Text2SQL分为两个阶段进行,在第一阶段使用数据表schema信息、数据表采样数据、相似问答问答对生成初步的SQL(PreSQL),在第二阶段,经过schema linking即过滤掉一些跟问题不相关的schema后生成最终的SQL(FinSQL)。接下来会使用Cross-consistency即用多个不同的LLM来投票决定生成的SQL是否正确。
pet-sql第一阶段的zero-shot prompt结构如下图(作者将其prompt模板称为reference-enhanced representation):
除了zero-shot prompt外,作者考虑将与问题类似意图的question-SQL样例作为few-shot(如下图,将检索到的question-SQL放在zero-shot prompt前面)。few-shot样例采用了论文参考文献9:A Case-Based Reasoning Framework for Adaptive Prompting in Cross-Domain Text-to-SQL提到的question de-semanticization方法。具体来说,将问题里与特定数据表相关的token如表名、列名、数据取值等使用特殊token <mask>
替换得到问题骨架(问题骨架被认为是问题意图的表示)。将训练集中所有问题骨架和question-SQL存储起来作为检索池,对查询问题骨架化处理后使用向量化检索方式得到与查询问题最相似的top k question-SQL作为few shot。
注:PET-SQL 引用的参考文献9:A Case-Based Reasoning Framework for Adaptive Prompting in Cross-Domain Text-to-SQL 与 Prompting GPT-3.5 for Text-to-SQL with De-semanticization and Skeleton Retrieval 的全部作者名单是相同的,思路也基本一致
根据第一阶段生成的PreSQL 内容,去掉与PreSQL中不相关的schema信息和外键信息,这个过程被称为schema linking (SL)(注:vanna 是通过向量检索方式来召回与问题最相关的schema,方法不一样,目的都是为了减少干扰信息)
schema linking之后简化的zero-shot prompt如下图所示。
作者认为self-consistency方法不是足够好的后处理方法,采取的是通过多个LLM来生成SQL的cross consistency策略,包括以下两种方法:
PET-SQL两阶段Text2SQL的思路还是比较好理解,prompt设计上主要多了数据样例,感觉使用question de-semanticization来提取问题骨架表示问题意图在实现上是整个流程里最复杂的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。