본문 바로가기
ML & DL/Paper Review

DIN-SQL: Decomposed In-Context Learning of Text-to-SQL with Self-Correction (2023)

by 남르미누 2023. 7. 27.

DIN-SQL: Decomposed In-Context Learning of Text-to-SQL with Self-Correction. arXiv:2304.11015v2 [cs.CL] 27 Apr 2023

 

[ Abstract ]

우리는 복잡한 text-to-SQL 작업을 더 작은 하위 작업으로 분해하는 문제와 이러한 분해가 추론 프로세스에서 LLM(대형 언어 모델)의 성능을 크게 향상시킬 수 있는 방법을 연구합니다. 현재 Spider와 같은 까다로운 text-to-SQL 데이터 세트에서 fine-tuning 모델과 LLM을 사용하는 prompting 접근 방식 사이에는 상당한 성능 차이가 있습니다. 우리는 SQL 쿼리 생성을 하위 문제로 나눌 수 있고 이러한 하위 문제의 솔루션을 LLM에 공급하여 성능을 크게 향상시킬 수 있음을 보여줍니다. 3개의 LLM에 대한 우리의 실험은 이 접근 방식이 LLM의 정확도를 SOTA 수준으로 끌어올리거나 이를 능가하는 간단한 몇 번의 샷 성능을 약 10%까지 지속적으로 개선한다는 것을 보여줍니다. Spider의 홀드아웃 테스트 세트에서 실행 정확도 측면에서 SOTA는 79.9였으며 우리의 접근 방식을 사용한 새로운 SOTA는 85.3이었습니다. 컨텍스트 내 학습에 대한 우리의 접근 방식은 미세 조정된 많은 모델을 최소 %5 이상 능가합니다.

 

1. Introduction

데이터베이스에 대한 자연어 인터페이스는 최종 사용자가 관계형 데이터베이스의 데이터에 더 쉽게 액세스할 수 있도록 하는 것을 목표로 합니다. 예를 들어 "관리자보다 더 많이 버는 직원 찾기"라는 발화와 직원 및 관리 테이블의 스키마가 주어지면 데이터베이스에서 해당 직원을 검색하는 쿼리를 SQL로 생성할 수 있습니다. 지난 20년 동안 이 분야의 연구는 여러 단계를 거쳐 진행되었습니다. 초기 시스템은 도메인 특정적이고 제어된 자연어를 지원하거나(Popescu et al., 2003, 2004; Li et al., 2007; Li and Jagadish, 2014) 규칙 기반 접근 방식에 의존하는(Stratica et al., 2005) 반면, 최신 시스템은 다양한 도메인 및 데이터 세트에 대해 학습된 지도 학습 모델(Zhong et al., 2017; Yu et al., 2018), 그리고 더 최근에는, 대규모 텍스트 및 코드저장소에 대해 학습된 심층 신경 모델(Dong and Lapata, 2016; Devlin et al., 2018)을 사용하여 더 큰 도메인 독립성을 제공합니다.

이 progression(진행)의 최신 개발(latest development)은 zero-shot 및 few-shot prompting에서 대규모 언어 모델(LLM)을 사용하는 것입니다(Rajkumar et al., 2022; Liu et al., 2023a). LLM은 미세 조정 없이 몇 가지 시연(a few demonstrations)만 사용하여 강력한 baseline을 제공하는 것으로 나타났습니다(Chen et al., 2021; Brown et al., 2020; Liu et al., 2023b). 그러나 이러한 모델은 잘 설계되고 미세 조정된 모델에 비해 일반적으로 사용되는 벤치마크(예: Spider)에서 뒤처집니다. 표 1은 Spider 데이터 세트의 개발 세트에서 두 가지 최신 LLM인 CodeX 및 GPT4의 성능을 보여줍니다. 강력한 성능에도 불구하고 LLM은 특히 중간 및 복잡한 쿼리에서 기존 방법(Scholak et al., 2021; Li et al., 2023a)에 비해 뒤떨어집니다. 이 백서에서 조사한 질문은 이러한 LLM이 어디에서 실패하는지 그리고 LLM이 직면하고 있는 일부 문제를 완화하여 성능을 미세 조정된 SOTA 모델에 도달하거나 능가할 수 있는지 여부입니다.

 

표 1: Spider 개발 세트에서 미세 조정된 접근 방식과 비교한 제로 샷 및 퓨 샷 프롬프트

 

프롬프팅은 사전 교육 또는 미세 조정을 사용하는 기존 접근 방식에 비해 몇 가지 장점이 있습니다. 주요 이점은 LLM이 대규모 작업별 train data 없이 예측 작업을 수행할 수 있다는 것입니다. 대규모 언어 모델을 처음부터 훈련하거나 이를 미세 조정하는 것은 리소스 집약적인 프로세스이며 종종 많은 수의 훈련 샘플과 사용하지 못할 수 있는 시스템 리소스가 필요합니다. 또한, 몇 가지 벤치마크 데이터 세트에서 이전의 최첨단 방법을 능가하는 것으로 나타났으며 제한된 훈련 사례로도 높은 정확도를 달성할 수 있습니다(Brown et al., 2020; Wei et al., 2022b).

최근 LLM의 성능이 생각 연쇄(Wei et al., 2022b), 최소 대 최대( Zhou et al., 2022) 및 분해(Khot et al., 2022) 작업을 여러 단계로 나누고 중간 결과를 사용하여 최종 답을 생성하는 프롬프트 기법. 그러나 각 단계의 출력이 다음 단계로 직접 전달되는 대수식과 달리 복잡한 SQL 쿼리를 깨는 것은 언어의 선언적 구조와 쿼리 절 간의 복잡한 관계 때문에 더 어려운 작업이 될 수 있습니다. 본 논문에서는 자연어 텍스트를 SQL로 변환하는 작업(text-to-SQL이라고 함)을 여러 단계로 분해하는 few-shot prompting 기반의 새로운 방법을 제안한다. LLM을 사용한 text-to-SQL prompting에 대한 이전 작업은 zero-shot setting에서만 평가됩니다(Rajkumar et al., 2022; Liu et al., 2023a). 그러나 zero-shot prompting은 대부분의 작업에 대한 LLM의 잠재적 능력에 대한 하한선만 제공합니다(Zhang et al., 2022; Kojima et al., 2022; Wei et al., 2022b, 2021; Brown et al., 2020 ). 이 작업에서 우리는 먼저 few-shot setting에서 LLM의 성능을 평가한 다음 큰 마진(a large margin)으로 few-shot prompting 방법을 능가하는 분해된 방법을 제안합니다. 우리의 방법을 이전 접근 방식과 비교하기 위해 실행 정확도와 정확한 세트 일치 정확도의 두 가지 공식 평가 메트릭을 사용합니다(Zhong et al., 2020). 우리는 CodeX 제품군의 두 가지 변종인 Davinci 및 Cushman(Chen et al., 2021)과 프롬프트를 위한 GPT-4 모델을 활용합니다. Spider의 홀드아웃 테스트 세트에서 우리의 방법은 GPT-4 및 CodeX Davinci 모델을 사용하여 각각 85.3% 및 78.2%의 실행 정확도를 달성하고 동일한 모델을 사용하여 각각 60% 및 57%의 정확한 세트 일치 정확도를 달성합니다. 정확한 일치와 실행 정확도 사이의 큰 차이는 우리 방법의 context 내 few-shot 특성 때문입니다. 사전 훈련되고 미세 조정된 접근 방식은 더 높은 정확한 세트 일치 정확도로 SQL 쿼리를 생성할 가능성이 더 높습니다. 단순히 이러한 모델이 테스트 세트에서 쿼리의 구성 스타일을 따르는 훈련 중에 많은 예를 보았기 때문입니다(두 세트의 쿼리는 종종 작성됨). 같은 사람들에 의해). 작업 전에 테스트 세트의 SOTA는 79.9%의 실행 정확도(Li et al., 2023a)와 74%의 정확한 세트 일치 정확도(Li et al., 2023b)를 가졌으므로 우리 방법은 실행 정확도 측면에서 새로운 지평을 열었습니다.

이러한 결과에 대한 두 가지 중요한 관찰이 강조되어야 합니다. 첫째, 우리의 방법은 실행 정확도에 대해 Spider 데이터 세트의 리더보드에서 GPT-4를 사용하여 1위, CodeX Davinci를 사용하여 3위를 차지하여 많은 미세 조정 및 사전 학습 접근 방식을 능가합니다. 둘째, 우리의 방법은 SQL 쿼리를 생성하기 위해 데이터베이스 셀을 필요로 하지 않는 실행 정확도에 대한 리더보드의 유일한 방법입니다. 여기에는 몇 가지 장점이 있습니다. 첫째, 보안 및 개인 정보 보호를 위해 쿼리하기 전에 클라이언트 시스템에서 데이터베이스 콘텐츠를 사용하지 못할 수 있습니다. 둘째, 데이터베이스 콘텐츠는 정기적으로 변경되는 반면 쿼리는 자주 재사용됩니다. 마지막으로, 데이터베이스 콘텐츠(사용 가능한 경우)를 사용하면 발화와 데이터베이스 콘텐츠(예: '토론토 시' 대 '토론토') 간의 모호성 및 가능한 불일치를 해결할 수 있으며 우리 모델을 포함한 많은 모델의 성능을 향상시킬 것으로 예상됩니다. 이 백서에 보고된 결과를 재현하기 위해 설계된 모든 프롬프트, 결과 및 코드는 GitHub 리포지토리 1에서 사용할 수 있습니다.

 

2. Related Work

Sequence-to-sequence 모델(Sutskever et al., 2014)은 text-to-SQL을 포함한 코드 생성 작업에서 큰 잠재력을 보여주었습니다. 핵심 아이디어는 주어진 자연 언어 질문을 데이터베이스 스키마와 함께 공동으로 인코딩하고 디코더를 활용하여 대상 SQL 예측 인코더 측에서 질문과 데이터베이스 스키마에 대한 표현 학습은 IRNet의 양방향 LSTM(Graves and Graves, 2012), RYANSQL의 컨볼루션 신경망(Choi et al., 2021), 사전 훈련을 사용하여 수행됩니다. SQLova의 BERT(Hwang et al., 2019) 및 RATSQL(Wang et al., 2019), SADGA(Cai et al., 2021) 및 LGESQL(Cao et al., 2021)의 그래프 신경망과 같은 언어 모델 . Ganet al. (2021)은 자연어 질문과 SQL 문 사이의 격차를 해소할 수 있는 중간 표현을 제안합니다. TaBERT(Yin et al., 2020), TaPas(Herzig et al., 2020), Grappa(Yu et al., 2020)와 같이 테이블과 텍스트를 모두 인코딩하는 테이블 언어 모델에 대한 작업도 있습니다. 디코더 측의 방법은 스케치 기반 슬롯 채우기와 생성 기반 방법으로 분류할 수 있습니다(Qin et al., 2022). 스케치 기반 방법은 문제를 여러 슬롯 예측 하위 문제로 나누고 생성할 SQL 쿼리의 슬롯에 대한 예측을 집계합니다(Hwang et al., 2019; Xu et al., 2017; Hui et al., 2021). . 이러한 방법의 단점은 미리 정의된 템플릿을 따르지 않는 쿼리로 일반화할 수 없다는 것입니다. 생성 기반 방법(Guo et al., 2019; Wang et al., 2019; Cao et al., 2021; Huang et al., 2021)은 SQL 쿼리를 추상 구문 트리로 디코딩합니다. 사전 훈련 및 미세 조정 모델과 달리 Rajkumar et al. (2022) 및 Liu et al. (2023a) Spider 데이터 세트에서 다양한 프롬프트를 사용하여 text-to-SQL에서 LLM의 zero-shot prompting 기능을 평가합니다. prompting 기법은 테이블 이해, 테이블 추론, 테이블에서 텍스트로의 생성(Guo et al., 2023; Chen, 2022)과 같은 작업에도 사용되며 LLM은 몇 가지 예만.

 

3. Few-shot Error Analysis

LLM이 few-shot setting에서 실패하는 위치를 더 잘 이해하기 위해 prompt에 사용된 모든 데이터베이스를 제외하고 Spider 데이터 세트의 train 세트에 있는 서로 다른 데이터베이스에서 500개의 쿼리를 랜덤으로 샘플링했습니다. 골드 쿼리(gold queries)와 다른 결과를 생성하여 execution accuracy(EX, 실행 정확도)에 실패한 쿼리를 검색했습니다. 이러한 실패한 부분을 수동으로 조사하여 그림 1과 같이 6가지 범주로 분류하고 다음에 설명합니다.

 

그림 1: CodeX Davinci를 사용한 간단한 몇 번의 실패 통계(Op는 연산자, Cond는 조건, cols는 열을 나타냄)

3.1 Schema Linking

이 범주에는 실패한 쿼리가 가장 많았고 모델이 질문에 언급된 열 이름, 테이블 이름 또는 엔터티를 식별하지 못한 인스턴스가 포함되었습니다. 경우에 따라 쿼리에 집계 함수가 필요했지만 일치하는 열 이름이 대신 선택되었습니다. 예를 들어 "모든 경기장의 평균 및 최대 수용 인원은 얼마입니까?"라는 질문에 대한 데이터베이스 스키마는 용량 열의 평균을 취하는 대신 모델에서 선택한 "average"라는 열이 포함되었습니다.

3.2 JOIN

이것은 두 번째로 큰 범주였으며 JOIN이 필요한 쿼리를 포함했지만 모델이 필요한 모든 테이블 또는 테이블을 조인하는 올바른 외래 키를 식별할 수 없었습니다.

3.3 GROUP BY

이 범주에는 SQL 문에 GROUP BY 절이 필요했지만 모델이 그룹화의 필요성을 인식하지 못하거나 결과를 그룹화하는 데 잘못된 열이 사용된 경우가 포함됩니다.

3.4 Queries with Nesting and Set Operations

이 범주의 경우 골드 쿼리가 중첩 또는 설정 작업을 사용했지만 모델이 중첩 구조를 인식하지 못하거나 올바른 중첩 또는 설정 작업을 감지하지 못했습니다.

3.5 Invalid SQL

생성된 SQL 문의 작은 집합에 구문 오류가 있어 실행할 수 없습니다.

3.6 Miscellaneous

이 범주에는 이전에 언급된 범주에 속하지 않는 사례가 포함되었습니다. 추가 술어를 포함하거나 술어를 놓쳤거나 DISTINCT 또는 DESC 키워드가 없거나 중복된 SQL 쿼리를 예로 들 수 있습니다. 이 범주에는 WHERE 절이 없거나 쿼리에 중복 집계 함수가 있는 경우도 포함됩니다.

 

4. Methodology

zero-shot 및 few-shot 모델에 대한 개선에도 불구하고 §3에서 논의된 바와 같이 스키마 연결이 덜 사소한 쿼리와 다중 조인을 사용하거나 중첩 구조를 갖는 쿼리를 포함하여 퓨샷 모델은 더 복잡한 쿼리에서 어려움을 겪습니다. 이러한 문제를 해결하기 위한 우리의 접근 방식은 문제를 더 작은 하위 문제로 분해하고 각 하위 문제를 해결하고 해당 솔루션을 사용하여 원래 문제에 대한 솔루션을 구성하는 것입니다. 수학 단어 문제 및 구성 일반화(Cobbe et al., 2021; Lake and Baroni, 2018)와 같이 여러 단계로 나눌 수 있는 작업에서 LLM의 성능을 개선하기 위해 유사한 접근 방식(e.g., chain-of-thought prompting (Wei et al., 2022b) and least-to-most prompting (Zhou et al., 2022))이 사용되었습니다. 작업이 한 단계가 다음 단계로 직접 전달되는 절차적 구조를 갖는 이러한 도메인과 달리 대부분의 SQL 쿼리는 선언적이며 가능한 단계와 경계가 명확하지 않습니다. 그러나 SQL 쿼리를 작성하기 위한 사고 프로세스는 (1) 쿼리와 관련된 데이터베이스 테이블 및 열 감지, (2) 보다 복잡한 쿼리(예: 그룹 기준, 중첩, 다중 조인, 집합 작업 등)에 대한 일반 쿼리 구조 식별로 세분화하고, (3) 식별할 수 있는 경우 절차적 하위 구성 요소를 공식화하고, (4) 하위 문제의 솔루션을 기반으로 최종 쿼리를 작성합니다. 이러한 사고 과정을 기반으로 우리가 제안한 text-to-SQL 작업 분해 방법은 그림 2와 같이 (1) 스키마 연결, (2) 쿼리 분류 및 분해, (3) SQL 생성, (4) 자체 교정. 이러한 모듈은 문헌의 기술을 사용하여 구현될 수 있지만 문제를 적절한 수준으로 세분화하면 LLM이 모든 문제를 해결할 수 있음을 보여주는 프롬프트 기술을 사용하여 모두 구현합니다.

 

그림 2: 네 가지 모듈을 모두 포함하는 제안된 방법론의 개요

 

4.1 Schema Linking Module

스키마 연결은 자연어 쿼리에서 데이터베이스 스키마 및 조건 값에 대한 참조를 식별하는 역할을 합니다. 도메인 간 일반화 가능성과 복잡한 쿼리의 합성(Lei et al., 2020)에 도움이 되는 것으로 나타나 거의 모든 기존 text-to-SQL 방법에서 중요한 예비 단계가 됩니다(Cao et al., 2021; Wang et al., 2019; Guo et al., 2019; Xuan et al., 2021). 이것은 또한 우리의 경우 LLM에서 발생한 실패 수가 가장 많은 단일 범주였습니다(그림 2).

우리는 스키마 연결을 위한 prompting기반 모듈을 설계했습니다. 프롬프트에는 Spider 데이터 세트의 훈련 세트에서 무작위로 선택된 10개의 샘플이 포함됩니다. 일련의 생각 템플릿(Wei et al., 2022b)에 이어 프롬프트는 Kojima et al.이 제안한 대로 "단계적으로 생각하자"로 시작합니다. (2022). 질문에서 열 이름이 언급될 때마다 해당 열과 해당 테이블이 지정된 데이터베이스 스키마에서 선택됩니다. 가능한 엔터티 및 셀 값도 질문에서 추출됩니다. 그림 3은 예제를 보여주며 전체 프롬프트는 부록A.3에서 찾을 수 있습니다.

 

그림 3: 스키마 연결 모듈의 입력 및 출력을 보여주는 예

 

4.2 Classification & Decomposition Module

각 조인에 대해 올바른 테이블 또는 조인 조건이 감지되지 않을 가능성이 있습니다. 쿼리의 조인 수가 증가하면 하나 이상의 조인이 올바르게 생성되지 않을 가능성이 높아집니다. 문제를 완화하는 한 가지 방법은 조인할 테이블을 감지하는 모듈을 도입하는 것입니다. 또한 일부 쿼리에는 독립적으로 생성되어 기본 쿼리와 병합될 수 있는 상관관계가 없는 하위 쿼리와 같은 절차적 구성 요소가 있습니다.

이러한 문제를 해결하기 위해 쿼리 분류 및 분해 모듈을 도입합니다. 이 모듈은 각 쿼리를 쉬움, 비중첩 복합 및 중첩 복합의 세 가지 클래스 중 하나로 분류합니다. 이지 클래스에는 조인이나 중첩 없이 응답할 수 있는 단일 테이블 쿼리가 포함됩니다. 중첩되지 않은 클래스에는 조인이 필요하지만 하위 쿼리가 없는 쿼리가 포함되며 중첩 클래스의 쿼리에는 조인, 하위 쿼리 및 설정 작업이 필요할 수 있습니다.

클래스 레이블은 각 쿼리 클래스에 대해 서로 다른 프롬프트를 사용하는 쿼리 생성 모듈에 중요합니다. 클래스 레이블 외에도 쿼리 분류 및 분해는 중첩되지 않은 쿼리와 중첩된 쿼리는 물론 중첩된 쿼리에 대해 감지될 수 있는 모든 하위 쿼리에 대해 조인할 테이블 세트를 감지합니다. 그림 4는 모델에 제공된 예제 입력과 모델이 생성하는 출력을 보여줍니다.

 

그림 4: 분류 및 분해 모듈의 입력 및 출력을 보여주는 예

 

4.3 SQL Generation Module

쿼리가 더 복잡해짐에 따라 자연어 질문과 SQL 문 사이의 격차를 해소하기 위해 추가 중간 단계를 통합해야 합니다. 문헌에서 불일치 문제(Guo et al., 2019)로 알려진 이 격차는 SQL 생성에 중대한 문제를 제기합니다. 이는 SQL이 주로 관계형 데이터베이스 쿼리를 위해 설계되고 자연어로 의미를 나타내지 않는다는 사실에서 비롯됩니다. (케이트, 2008). 더 복잡한 쿼리는 a chain-of-thought style에 중간 단계를 나열하면 도움이 될 수 있지만, 이러한 목록은 더 간단한 작업의 성능을 저하시킬 수 있습니다(Wei et al., 2022b). 같은 기준으로 본 저자들의 쿼리 생성은 각각 다른 클래스에 맞춰진 세 개의 모듈로 구성됩니다.

easy class의 질문에는 중간 단계가 없는 간단한 몇 발의 프롬프트가 적절합니다. 이 클래스의 예제 Ej에 대한 데모는 <Qj , Sj , Aj> 형식을 따릅니다. 여기서 Qj 및 Aj는 각각 영어 및 SQL로 쿼리 텍스트를 제공하고 Sj는 스키마 링크를 나타냅니다.

non-nested complex에는 조인이 필요한 쿼리가 포함됩니다. 우리의 오류 분석(§ 3)은 두 테이블을 조인하기 위해 올바른 열과 외래 키를 찾는 것이 특히 쿼리가 여러 테이블을 조인해야 하는 경우 simple few-shot 프롬프트에서 LLM에 어려울 수 있음을 보여주었습니다. 이 문제를 해결하기 위해 쿼리와 SQL 문 사이의 격차를 해소하기 위해 중간 표현을 사용합니다. 다양한 중간 표현이 문헌에 소개되었습니다. 특히 SemQL(Guo et al., 2019)은 자연어 쿼리에 명확한 대응 항목이 없는 연산자 JOIN ON, FROM 및 GROUP BY를 제거하고 HAVING 및 WHERE 절을 병합합니다. NatSQL(Gan et al., 2021)은 SemQL을 기반으로 하며 집합 연산자를 제거합니다. 중간 표현으로 다른 모델과 결합했을 때 최첨단 성능을 보이는 NatSQL을 사용합니다(Li et al., 2023a). non-nested complex class의 예제 Ej에 대한 데모는 <Qj , Sj , Ij , Aj> 형식을 따릅니다. 여기서 Sj 및 Ij는 각각 j번째 예제에 대한 스키마 링크 및 중간 표현을 나타냅니다.

마지막으로 nested complex class는 가장 정교한 유형이며 최종 답변을 생성하기 전에 여러 중간 단계가 필요합니다. 이 클래스는 EXCEPT, UNION, INTERSECT와 같은 중첩 및 설정 작업을 사용하는 하위 쿼리뿐만 아니라 이전 클래스와 동일하게 여러 테이블 조인이 필요한 쿼리를 포함할 수 있습니다. 문제를 여러 단계로 더 세분화하기 위해 이 클래스에 대한 프롬프트는 LLM이 먼저 하위 쿼리를 해결한 다음 이를 사용하여 최종 답변을 생성하는 방식으로 설계되었습니다. 이 클래스에 대한 프롬프트는 <Qj , Sj , <Qj1 , Aj1 , ..., Qjk , Ajk > , Ij , Aj> 형식을 따릅니다. 여기서 k는 하위 질문의 수를 나타내고 Qji 및 Aji는 각각 i를 나타냅니다. -번째 하위 질문 및 i번째 하위 쿼리. 이전과 마찬가지로 Qj와 Aj는 각각 영어와 SQL로 쿼리를 나타내고 Sj는 스키마 링크를 제공하며 Ij는 NatSQL 중간 표현입니다.

세 가지 쿼리 클래스 모두에 대한 전체 프롬프트는 부록 A.4에 제공되며 세 클래스에 대한 모든 예제는 분류 프롬프트에 대해 선택한 정확히 동일한 데이터베이스에서 가져옵니다.

 

4.4 Self-correction Module

생성된 SQL 쿼리에는 때때로 DESC, DISTINCT 및 집계 함수와 같은 키워드가 없거나 중복될 수 있습니다. 여러 LLM에 대한 우리의 경험에 따르면 이러한 문제는 더 큰 LLM에서는 덜 일반적이지만(예: GPT-4에서 생성된 쿼리는 CodeX에서 생성된 쿼리보다 버그가 적음) 여전히 존재합니다. 이를 해결하기 위해 모델이 이러한 사소한 실수를 수정하도록 지시하는 자체 수정 모듈을 제안합니다.

이는 버그가 있는 코드만 모델에 제공하고 버그 수정을 요청하는 zero-shot setting에서 달성됩니다. 우리는 self-crrection 모듈에 대해 generic하고 gentle한 두 가지 프롬프트를 제안합니다. gentle prompt를 사용하여 "BUGGY SQL"의 오류를 식별하고 수정하도록 모델에 요청합니다. 반면, generic prompt는 SQL 쿼리에 버그가 있다고 가정하지 않고 대신 모델에 잠재적인 문제를 확인하도록 요청하고 확인해야 할 절(clauses)에 대한 몇 가지 힌트를 제공합니다.

우리의 평가에 따르면 generic prompt는 CodeX 모델에서 더 나은 결과를 얻을 수 있는 반면, gentle prompt는 GPT-4 모델에 더 효과적입니다. 명시적으로 달리 명시하지 않는 한 DIN-SQL의 기본 자체 수정 프롬프트는 GPT-4의 경우 gentle하고 CodeX의 경우 generic으로 설정됩니다. generic 그리고 gentle한 self-correlation prompts의 예는 부록 A.6에서 찾을 수 있습니다.

 

5. Experiments

5.1 Models

CodeX 계열의 두 가지 변형(Davinci 및 Cushman 변형)과 GPT-4 모델을 사용하여 제안된 방법을 평가했습니다. 이들은 이 백서를 작성하는 시점에서 가장 큰 오픈 액세스 LLM입니다. Wei et al. (2022a).

5.2 Hyperparameter

모든 모델은 OpenAI API를 통해 액세스되었습니다. 그리디 디코딩은 temperature를 0으로 설정하여 output을 생성하는 데 사용되었습니다. 최대 토큰(max tokens)은 self-correction 모듈의 경우 350으로, 다른 모든 모듈의 경우 600으로 설정되었습니다. The stopping token sequence는 self-correction 모듈의 경우 "#;\n \n"으로 설정되었고 다른 모든 모듈의 경우 "Q:"로 설정되었습니다.

5.3 Dataset

우리의 평가는 200개의 데이터베이스에 걸쳐 10,181개의 질문과 5,693개의 고유한 복잡한 SQL 쿼리로 구성된 교차 도메인 도전적인 Spider 데이터 세트에 대해 수행되었으며 138개의 도메인을 포함하며 각각 여러 테이블을 포함합니다. 이 데이터 세트의 표준 프로토콜은 이를 146개 데이터베이스에 걸쳐 8,659개의 훈련 예제, 20개 데이터베이스에 걸쳐 1,034개의 개발 예제, 34개 데이터베이스에 걸쳐 2,147개의 테스트 예제로 나눕니다. 이러한 각 집합에서 사용되는 데이터베이스는 겹치지 않습니다.

SQL 쿼리는 사용된 SQL 키워드 수, nested subqueries(중첩된 하위쿼리)의 존재 여부, column selections(열 선택) 및 aggregations(집계) 사용에 따라 네 가지 난이도로 분류됩니다. WikiSQL(Zhong et al., 2017)은 단일 테이블 쿼리만 있는 또 다른 대규모 도메인 간 데이터 세트로, 비용 측정으로 인해 평가에 사용되지 않는 쉬운 것으로 간주됩니다.

5.4 Metrics

당사 모델의 성능은 일반적으로 사용되는 두 가지 메트릭인 정확한 설정 일치 정확도(EM, exact-set-match accuracy) 및 실행 정확도(EX, execution accuracy)를 사용하여 평가됩니다. // 전자는 각 절을 집합으로 취급하고 예측을 해당 지상 실측 SQL 쿼리와 비교합니다. 예측된 SQL 쿼리는 모든 구성 요소가 Ground Truth와 일치하는 경우에만 올바른 것으로 간주됩니다. 이 메트릭은 값을 고려하지 않으므로 잘못된 긍정 및 잘못된 부정이 발생할 수 있습니다. // 후자는 예측된 SQL 쿼리의 실행 출력을 일부 데이터베이스 인스턴스에서 실측 SQL 쿼리의 실행 출력과 비교합니다. 실행 정확도는 주어진 질문에 대해 유효한 SQL 쿼리가 여러 개 있을 수 있고 정확한 세트 일치 정확도는 그중 하나에 대해서만 예측 SQL을 평가하기 때문에 모델의 성능에 대한 보다 정확한 추정치를 제공합니다.

5.5 Results

5.5.1 Test set results

표 2에서와 같이 우리의 방법은 이 글을 쓰는 시점에 공식적으로 발표된 모든 결과 중 GPT-4를 사용하여 가장 높은 실행 정확도를 달성하고 CodeX Davinci를 사용하여 세 번째로 높은 실행 정확도를 달성하여 새로운 지평을 열었습니다. 이는 데이터베이스 콘텐츠를 활용하지 않고도 달성됩니다. 정확한 세트 일치 정확도 측면에서 우리의 방법은 데이터베이스 콘텐츠를 활용하지 않는 이전 작업과 비슷한 결과를 얻습니다.

5.5.2 Development set results

개발 중 대부분의 평가는 Yu et al.(2018)에서 제공한 평가 서버를 통해서만 접근할 수 있는 테스트 세트와 달리 쉽게 접근할 수 있는 개발 세트에서 수행되었습니다. 표 3은 Rajkumar et al(2022) 및 Liu et al.(2023a)등의 zero-shot prompting과 우리의 few-shot prompting과 비교하여, 다른 LLM을 사용하여 우리 방법론의 성능을 보여줍니다. few-shot prompting에 대한 공정한 비교를 위해 세 가지 클래스(easy, non-nested complex, nested complex)에 사용된 모든 예를 prompt에 통합합니다. CodeX Cushman 모델이 CodeX Davinci 및 GPT-4 모델보다 입력 컨텍스트 크기가 작다는 점을 감안하여 각 클래스에서 2개의 예제만 사용합니다(총 6개의 예제).

우리의 방법은 EM 및 EX 측면에서 simple few-shot prompting 및 zero-shot prompting 모두를 훨씬 능가하며 개선은 크기에도 불구하고 모든 모델에서 일관되게 나타납니다. 예를 들어, few-shot prompting과 비교하여 우리의 방법은 모든 모델의 실행 정확도(EX)를 최소 10% 향상시킵니다.

우리는 다양한 수준의 난이도를 가진 쿼리에 대해 제안한 방법의 성능을 추가로 분석했습니다. 표 4는 Spider의 개발 세트에 대한 basic few-shot prompting과 비교하여 제안된 방법의 성능을 나타냅니다.

우리가 제안한 방법은 모든 난이도 수준에서 basic few-shot prompting을 능가하며, few-shot prompting이 제대로 수행되지 않은 extra hard 및 hard 클래스에서 성능이 가장 크게 향상되었습니다. 우리의 방법은 심지어 스키마 링크 모듈의 중요성을 강조하면서 프롬프트에 스키마 링크를 통합하는 기본적인 몇 가지 프롬프트와 다른 쉬운 클래스의 개선을 보여줍니다.

5.5.3 Error improvements

섹션 3에서는 트레이닝 세트에서 무작위로 선택한 500개의 쿼리에 대한 basic few-shot prompting의 오류 분석(error analysis)을 수행했습니다. 이러한 오류가 해결된 정도를 이해하기 위해 동일한 500개의 쿼리에서 DIN-SQL을 실행했습니다.

그림 5에서 볼 수 있듯이 제안된 접근 방식은 JOIN 및 Nested 범주에서 가장 크게 개선된 모든 범주의 성능을 향상시킵니다. 스키마 연결을 위한 explicit module(명시적인 모듈)이 있음에도 불구하고, 대부분의 실패 사례는 여전히 이 범주에 속합니다.

5.6 Ablation study

ablation study에서 우리는 4개의 모듈 각각을 사용하거나 사용하지 않고 접근 방식을 평가했습니다. CodeX Davinci 모델의 표 5에서 볼 수 있듯이 모듈을 제외하면 실행 정확도 측면에서 전반적인 성능 저하가 발생합니다. 다양한 쿼리 클래스에서 각 모듈의 효과를 연구하면서 더 자세한 내용이 나타납니다. 스키마 연결은 하드 클래스에 대해 최소한의 개선으로 모든 쿼리 클래스를 돕습니다. 실패한 사례의 샘플을 조사한 결과 스키마 연결이 질문 또는 스키마의 모호성으로 인해 중복 링크를 발견하는 경우가 있으며 이로 인해 중복 조인 또는 출력 열이 발생할 수 있음을 알 수 있습니다. 분류가 없으면 우리는 모든 쿼리에 대해 단순한 몇 번의 프롬프트 또는 분해된 COT(Chain-Of-Thought) 프롬프트를 사용해야 했습니다. 후자는 스키마 연결 및 쿼리 분해가 포함된 자세한 SQL 생성 모듈을 포함하여 모든 모듈을 구성했지만 쿼리는 세 가지 클래스로 분류되지 않았습니다. 예상대로, 분해된 사고 사슬 프롬프팅은 어려운 쿼리와 추가 어려운 쿼리에 더 잘 작동하는 반면 간단한 몇 가지 샷은 쉬운 클래스에 더 잘 작동합니다. 자체 수정을 위해 CodeX Davinci와 GPT-4를 모두 사용하여 연구를 실행했습니다. CodeX Davinci의 경우 일반 자체 수정 프롬프트는 모든 쿼리 클래스에서 모델을 지원합니다. 부드러운 자체 교정 프롬프트도 도움이 되지만 CodeX Davinci의 일반적인 것보다 이득이 작습니다. 그러나 GPT-4가 버그가 있는 코드를 생성하고 “Buggy SQL:. . . 고정 SQL:. . .” 성능을 저하시킬 수 있습니다. 부드러운 프롬프트는 GPT-4에 더 잘 작동하며 쉬운 클래스를 제외한 모든 클래스에서 성능을 향상시킵니다.

 

6. Conclusion

Prompting은 대규모 학습 세트 없이도 다양한 도메인에 걸쳐 수많은 NLP 작업에서 인상적인 성능을 달성할 수 있도록 대규모 언어 모델을 활성화했습니다. 그러나 Text-to-SQL 작업에 대한 prompt 접근 방식의 성능은 fine-tuning 모델의 성능에 미치지 못합니다. 본 연구에서는 프롬프팅을 이용하여 문제를 해결하기 위한 분해 방법을 개발하였다. 우리의 실험 결과는 우리의 방법이 두 패러다임 사이의 격차를 효과적으로 메울 수 있고 까다로운 Spider 데이터 세트에 대한 최첨단 접근 방식과 비슷한 결과를 제공할 수 있음을 보여줍니다.

(Limitation)

이 작업에는 몇 가지 제한 사항이 있습니다. 무엇보다도 text-to-SQL 도메인에서 복잡한 SQL 쿼리를 포함하는 유일한 개방형 도메인 대형 데이터 세트는 Spider 데이터 세트입니다. 따라서 우리 작업은 이 데이터 세트에서만 평가되었습니다. 실제 쿼리와 유사한 SQL 쿼리가 포함된 더 많은 데이터 세트가 필요합니다. 또한 다른 많은 프롬프트 전략과 마찬가지로 우리의 방법은 작업별 데모 및 디자인 프롬프트를 찾기 위해 수동 노력이 필요합니다. 이 영역의 자동화는 향후 작업에서 탐색할 수 있는 영역입니다.

 

 

 

 

[ Paper Link ]

https://arxiv.org/pdf/2304.11015.pdf

댓글