欢迎关注我的公众号“ NLP前沿 ”,日更最新论文/博客速读,周更AI领域近一周发生的那些事儿 。欢迎投稿! 行文仓促,有理解错误,欢迎指正 !
“ 3月份发的文章,可能是一个新的系列,主要是想看看曾经nlp各个子领域经典数据集,在大模型时代下的一些sota工作。
PET-SQL: A Prompt-enhanced Two-stage Text-to-SQL Framework with Cross-consistency
两阶段架构,第一阶段生成一个sql,第二阶段用多个(应该也可以用一个)模型生成最终的sql
核心要点:
- 第一阶段
- 要求模型生成的sql除了正确还要保证精简,尽可能生成执行时间最优的sql:Answer the question by SQLite SQL query only and with no explanation. You must minimize SQL execution time while ensuring correctness.
- 除了给表名和字段名,还给一些数据示例:数据示例可以让模型理解表的数据格式是什么样的,比如 字段 性别,如果让模型生成,那可能给的是 '男'或者'男生' ,但是库里面的字段都是男,这样就可能出现召回问题。当然这个似乎也不是一个真正的解法。
- 给一些用户问题类似意图的 pair示例,根据相似度,召回topk
第一阶段结束,生成了一个sql,正常来说可以结束了,但是为了效果在来一轮,原文原因是为了避免一些prompt的干扰导致的生成错误
- 第二阶段 核心就是根据第一阶段生成的presql,精简提示词,例如:删除不需要的表名,字段,demo数据,删除完如下图:
第二阶段的提示词,原文考虑走多次模型,采取投票的方式,走多次模型,那可以一个模型用较高的温度值走多次,也可以用较低的温度值,用多个大模型来预测。前者幻觉比较高不考虑了。这里有个细节是,可以根据sql结果的语法树对presql进行难度划分为简单、中等等等。每个难度由不同的llm来投票,细粒度投票可以获得一定的效果提升。
经典的spider效果如下: