CHESS: Contextual Harnessing for Efficient SQL Synthesis
CHASE-SQL: Multi-Path Reasoning and Preference Optimized Candidate Selection in Text-to-SQL
E-SQL: Direct Schema Linking via Question Enrichment in Text-to-SQL
- 关键词提取: 从输入从提取出关键词(可能包含实体)
- 过滤需要用到的table, 过滤需要用到的column
- 重写输入+丰富输入
- 根据提取关键词召回涉及到的table.column的一些具体的可能值(也可以注入静态的)
- 如果column可以为Null,那么注入的值最好有Null的示例。
- SQL生成的时候, 可以使用规划/分治/示例合成的方法
- 规划: prompt中有说明, 模拟SQL的执行计划进行分析
- 分治: prompt中说明+一个示例说明先完成子查询再组装
- 示例合成: 生成两种不同的examples(可以注入选好的, 静态的示例)
- 第一种是基于schema生成一些常用SQL操作的示例. 基于生成没有使用JOIN, 使用了JOIN, 使用了聚合(例如COUNT)的这些例子
- 第二种SQL示例是, 只注入(通过过滤得到的)和问题相关的table+column来生成的SQL示例
- SQL生成完, 执行拿到执行结果(只能拿到是否执行成功), 有问题走修复流程(fix/refinement/revision), 最后在多个SQL中优选一个
前面的文字中有加粗的,都是可以找到对应的prompt的。 CHESS和E-SQL代码中的细节没有体现
如果数据库中没有数据, 那么无法拿到SQL执行结果来优化, 无法动态根据输入中过滤出来的关键词来查询相关的table.column的值。
