问句到SQL · 2024 年 11 月 2 日 · 18 分钟
结构链接:先找对表和列,再生成语句
结构链接(schema linking)是把问题里的词对齐到表、列、值。RESDSQL(AAAI 2023)把链接和骨架解析拆开。CHESS 把检索写成列检索 + 值检索(LSH / embedding)。E-SQL 走问题增广,把链接写进问句。RSL-SQL 用双向链接提高召回。
BIRD 错误分析:约 41.6% 为错误结构链接,40.8% 为误解库内容(含臆造字段)。AskTable 工程文也写:企业库几百张表,最大挑战是找到正确元数据。
软件策略:
- 先用目录和同义词做检索,高召回。
- 再描述/抽样验证。
- 链接结果作为生成器的唯一可见结构,不要把整库塞进去。
- Distillery(The Death of Schema Linking?)提醒:链接器过弱会漏必要列,过强会破坏结构完整性。应用双向或「先全量草拟再抽出用到的列」做对照。
中文问数还有跨语言问题:问题是中文,列名是英文缩写。FGCSQL 一类工作专门做中文信息注入。目录里的中文注释就是最便宜的注入层。
出处
- Li et al., RESDSQL, AAAI 2023
- Talaei et al., CHESS, arXiv:2405.16755
- Caferoğlu & Ulusoy, E-SQL, arXiv:2409.16751
- Maamari et al., Distillery, arXiv:2408.07702
- BIRD 错误分析;AskTable Schema Linking 博文