FlyingFeather / DEA-SQL

[ACL Findings 2024] Decomposition for Enhancing Attention: Improving LLM-based Text-to-SQL through Workflow Paradigm
Apache License 2.0
24 stars 1 forks source link

Decomposition for Enhancing Attention: Improving LLM-based Text-to-SQL through Workflow Paradigm

šŸ”„šŸ”„ 2024.05. DEA-SQL is accepted by Findings of ACL 2024!

Based on the idea that Decomposition for Enhancing Attention, we propose the workflow paradigm method named DEA-SQL with five major steps as shown in Figure. Check out our paper for more information.

model

Set Up

Environment

# 1. Clone the repo
git clone https://github.com/FlyingFeather/DEA-SQL.git
cd DEA-SQL && mkdir data

# 2. Make a conda environment
conda create -n deasql python=3.9
conda activate deasql

# 3. Install requirements
pip install -r requirements.txt
python nltk_downloader.py

Dataset

Download the data set from the spider official website under DEA-SQL , unzip it and put it into the data folder. We provide the data in drive if it is unable to download dataset from spider official website.

mkdir data
unzip spider.zip -d data

The directory structure should be as follows:

.
ā”œā”€ā”€ argsparser.py
ā”œā”€ā”€ common
ā”œā”€ā”€ correct_sql.py
ā”œā”€ā”€ data
ā”‚Ā Ā  ā””ā”€ā”€ spider
ā”‚       ā”œā”€ā”€ ...
ā”‚       ā””ā”€ā”€ database
ā”œā”€ā”€ data_preprocess.py
ā”œā”€ā”€ docs
ā”œā”€ā”€ evaluation
ā”œā”€ā”€ fewshot
ā”œā”€ā”€ filter_characters.py
ā”œā”€ā”€ gen_sql.py
ā”œā”€ā”€ get_ner.py
ā”œā”€ā”€ hardness_eval.py
ā”œā”€ā”€ __init__.py
ā”œā”€ā”€ LICENSE
ā”œā”€ā”€ llm
ā”œā”€ā”€ logger.py
ā”œā”€ā”€ main.py
ā”œā”€ā”€ nltk_downloader.py
ā”œā”€ā”€ outputs
ā”œā”€ā”€ prompt
ā”œā”€ā”€ README.md
ā”œā”€ā”€ requirements.txt
ā””ā”€ā”€ single_eval.py

Usage

Please modify the OpenAI configuration in common/static_config.py and configure the relevant environment variables for the Azure OpenAI API.

Several important parameters:

Quick Start

prediction on the Spider Dev datasets

python main.py --save_file_name "dea-sql.txt" --dataset "spider" --mode "dev" --sample "False" --few_shot_mode "masked_ques_sim" --insert_value 3 --embedding_base_model "openai"  --sc_filter_nums 3 --few_shot_data "train_merge_v5"

evaluation on the Spider Dev datasets

For the first evaluation, please perform: python nltk_downloader.py

python evaluation/test-suite-sql-eval/evaluation.py --gold "evaluation/gold_files/spider_dev_gold.sql" --pred "outputs/spider/dea-sql.txt" --db ./data/spider/database --print_file_name "outputs/spider/spider-dea-sql.txt" --table './data/spider/tables.json' --etype exec

Citing DEA-SQL

@article{xie2024decomposition,
      title={Decomposition for Enhancing Attention: Improving LLM-based Text-to-SQL through Workflow Paradigm}, 
      author={Yuanzhen Xie and Xinzhou Jin and Tao Xie and MingXiong Lin and Liang Chen and Chenyun Yu and Lei Cheng and ChengXiang Zhuo and Bo Hu and Zang Li},
      journal={arXiv preprint arXiv:2402.10671},
      year={2024}
}