写在前面
在自然语言转 SQL(NL2SQL,或 Text-to-SQL)任务中,数据库 Schema 的质量和表示方式对模型的性能有着至关重要的影响。一个清晰、规范、易于理解的 Schema 能够帮助模型更好地理解数据库结构,从而生成更准确的 SQL 查询。相反,一个混乱、不规范的 Schema 会增加模型的理解难度,导致生成的 SQL 查询错误百出。
本文将深入探讨 NL2SQL 任务中 Schema 的编写标准,详细介绍如何为 NL2SQL 模型提供高质量的 Schema 信息,并通过对比实验展示好 Schema 和坏 Schema 对模型性能的影响。
1. Schema 的基本组成
数据库 Schema 描述了数据库的结构,包括表、列、数据类型、主外键关系等信息。在 NL2SQL 任务中,通常需要向模型提供以下 Schema 信息:
- 表名 (Table Names): 数据库中所有表的名称。
- 列名 (Column Names): 每个表中所有列的名称。
- 数据类型 (Data Types): 每个列的数据类型(例如,TEXT、INTEGER、REAL、BOOLEAN)。
- 主键 (Primary K