最近看到了一篇关于text2sql的文章,以及一些论文。对使用模型做text2sql给了一些不错的建议。
参考文章:24年大模型潜力方向:大浪淘沙后的Text-to-SQL和Agent - 知乎
论文:https://arxiv.org/pdf/2403.09732.pdf
关于模型的建议
模型的温度为0,减少text2sql的幻觉问题。
多个模型一起使用,使用交叉一致性,不要过于依赖一个模型。
构建prompt的建议
表中字段取值问题,例如性别这个字段,有的表可能存“男”和“女”,有的表可能存 “M”和“F”,甚至有的表会存“0”和“1”。所以对于有枚举值的字段来说,最好能够列出来示例字段。数据表和样例数据(随机取三行数据)
text2sql中,few-shot非常有用。应该生成一些常见的sql示例。这些案例在prompt中应该是动态选择的(针对不同的表)。关于生成常见的sql,可以考虑使用模型,来生成一些sql示例。
few-shot 示例
告诉模型,我们的表字段,并给出了一些示例数据以及表的外键
给模型的few-shot 对生成正确的sql的影响非常大。论文中提到的是动态的选择样例,
根据问题相似相匹配,用问题,召回几个相似的文本(这里需要提前根据表生成一些案例)。