E-SQL: Direct Schema Linking via Question Enrichment in Text-to-SQL
<|reference_start|>E-SQL: Direct Schema Linking via Question Enrichment in Text-to-SQL: Translating Natural Language Queries into Structured Query Language (Text-to-SQL or NLQ-to-SQL) is a critical task extensively studied by both the natural language processing and database communities, aimed at providing a natural language interface to databases (NLIDB) and lowering the barrier for non-experts. Despite recent advancements made through the use of Large Language Models (LLMs), significant challenges remain. These include handling complex database schemas, resolving ambiguity in user queries, and generating SQL queries with intricate structures that accurately reflect the user's intent. In this work, we introduce E-SQL, a novel pipeline specifically designed to address these challenges through direct schema linking and candidate predicate augmentation. E-SQL enhances the natural language query by incorporating relevant database items (i.e., tables, columns, and values) and conditions directly into the question, bridging the gap between the query and the database structure. The pipeline leverages candidate predicate augmentation to mitigate erroneous or incomplete predicates in generated SQLs. We further investigate the impact of schema filtering, a technique widely explored in previous work, and demonstrate its diminishing returns when applied alongside advanced large language models. Comprehensive evaluations on the BIRD benchmark illustrate that E-SQL achieves competitive performance, particularly excelling in complex queries with a 66.29% execution accuracy on the test set. All code required to reproduce the reported results is publicly available on our GitHub repository.<|reference_end|>
@article{caferoğlu2024e-sql:,
    title={E-SQL: Direct Schema Linking via Question Enrichment in Text-to-SQL},
    author={Hasan Alp Caferou{g}lu, "Ozg"ur Ulusoy},
    journal={arXiv preprint arXiv:2409.16751},
    year={2024},
    archivePrefix={arXiv},
    eprint={2409.16751},
    primaryClass={cs.CL}
}