https://eglife.tistory.com/367
SQL2NL 모델을 NL2SQL에 적용시켜보기[1]
일단, 이번 글과 관련된 나의 고뇌는 아래와 같다. https://eglife.tistory.com/366 SQL2NL 모델 추가 실험(VectorDB, Embedding)[4]https://eglife.tistory.com/364 SQL2NL 모델 추가 실험(VectorDB, Embedding)[3]https://eglife.tistory.co
eglife.tistory.com
위 글에서 Continue...
일단, Data Seed를 다르게 해서 좀 더 돌려봤다.
실험 한 번만 하고 데이터 비교하는 것은 좀 무리가 있으니..(그래봤자 2번 더 했다 ㅋ)
GPU 대여 서비스를 이용했더니 한 1시간? 정도에 2회 돌렸다. 즉 30분에 1회 돌릴 수 있고 회당 500~600원 정도로 보면 되겠다.


한 4회 하니까 요렇게 결과가 나온다.
BLEU는 진짜 틀린그림 찾기니까, 배제.. 해도 될 거 같고, 아니면 참고용으로만 쓰고!
BERTRecall기준으로, 역시나 RAG_Hybrid가 가장 Score가 높다. 신기하긴하다 ㅋㅋ 예상대로 되니까
이번엔 좀 HARD 난이도 도전,
NL2SQL Model을 이용해서!!
근데 환경변수?설정이 좀 빡세다...

일단 하고 있긴 한데..
1. OPEN API KEY를 다음과 같이 관리해야함..

2. main.py 파일 실행시 config를 더해줘야함..

물론 다 그런건 아닌데, 내가 공유받은 NL2SQL모델은 이런 환경에서 코드를 돌릴 수 있다.
역시,, SW 개발을 하면서 코드 공유할때 다른 사람의 환경까지 잘 COPY하는 게 중요하구만..
일단 NL2SQL 돌려보는 것 Step in Windows 환경!!!
1. 가상환경 Activate
nl2sql\Scripts\Activate.ps1
2. main.py 파일 실행하기 -> Output이 생성됨
python main.py --config "configs/bird_dev_config.yaml"
※ 여기서 주의할 건, data/bird에 있는 dev.json , dev_gold.sql 파일의 구성의 싱크만 맞춰준다면 내가 측정하고자 하는 SQL/NL Pair를 측정할 수 있다.
3. 위 2번의 결과로 아래와 같이 Ouput이 생성된다.


이제, 이 Output과 Gold SQL을 비교하며 Exact 한지 Evaluation을 진행한다.
그냥, 원작자가 Mac으로 이 프로그램과 Script를 짜서, windows + WSL에서 실험을 진행했다.
대충 Script 다 돌리면 실험결과는 아래와 같이 나온다.
{
"accuracy": {
"simple": 100.0,
"moderate": 50.0,
"challenging": 0.0,
"total": 80.0
},
"counts": {
"simple": 3,
"moderate": 2,
"challenging": 0,
"total": 5
}
}
그냥, 아래 README Linux환경을 따라가면 코드실행 + 평가까지 다 되긴 한다.
근데 문제는 그게 아니라, 이걸 이용해서 얼렁 나의 SQL2NL Task를 평가하는 것!!!
쩝, 얼른 실험 몇 개 설계하고 테스트 돌리고 결과 정리좀 해보자...!
실험 Dataset은 BIRD / SPIDER / BEAVER 면 되는 거 같고, BIRD로 먼저 해보자.

위 메커니즘을 다시 Following 하는 것이다..!
지금은 그나마 정상인 BIRD Dev set 약 1500개에서 100개씩 test data set으로 만들고 1400개를 pool로 보고있다.(Embedding 해서 SQL2NL Task의 Fewshot으로 사용)
그렇다면..
1. SQL-NL Data를 1400개 for Embedding , 100개 for Test로 나눈다.
2. Test 100개 Pair로만 가지고 NL2SQL - SQL2NL - NL2SQL 작업을 시작한다.
( 1 건당 총 3번의 LLM Call이 필요한 상황... 😥 )
3. 실험을 몇 번 반복해본다.
사실 코드만 잘 완성시켜놓으면 할만한 거 같기도 한데.. 이거 뭐 완전 Vibe Coding Only로 하고 있어서 GPT와 쳐절한 전투를 진행해야한다 ㅠㅠ
지금 ALl in one frame work 만드는 중... calculating......
GPT MS Thesis 최신글을 참고하라..
Pipeline은 확고한데,, 서로 다른 두 코드를 접합시키는 게 너무 빡세다.
SQL2NL / NL2SQL 코드를 만든 주체가 달라서 그런듯 -_-
어찌어찌 코드작업은 계속 하고 있는데, (With GPT) 해야 할 것을 정리해보자.
1. SQL2NL 평가를 위한 NL2SQL 파이프라인이 완성되면 얼른 BIRD / SPIDER / BEAVER dataset을 가지고 GPT 5 / mini / nano 이렇게 실험을 돌려서 SQL2NL의 Random fewshot / RAG fewshot / RAG + Hybrid fewshot에 대한 Accuracy를 측정한다.
2. 각 모델의 LLM 3종 , Dataset 3종, BERTRecall / BLEU_4 / NL2SQL평가 / Humanbased 평가 이렇게 데이터를 나눠서 정리한다. 얼른 뽑는 편이 낫다.
2.1 BERT/BLEU -> 아래와 같은 꺾은선 그래프(실험 횟수를 한 10번 정도 돌려보자)

2.2 NL2SQL 평가 -> n번 정도 돌리고 그냥 막대그래프
2.3 Humanbased 평가 -> 4분위 지점 찍히는 plot 그래프
이렇게 해서 SQL2NL 을 RAG + Hybrid 기법으로 정확도를 올릴 수 있다는 것을 보여주며 KDBC에 출간
(Future work에 SQL2NL Finetuning을 진행하면 정확도 더 올라갈 것이라고 기술, K-DS는 논문을 출간하진 않아서 ㄱㅊ을듯)
3. KDBC Paper를 얼른 쓰고, 이걸 필두로 졸논 Proposal을 쓴다.
| 논문요지(Proposal) 발표 - 논문요지 제출: * 제출 시 표지와 본문을 하나의 PDF로 변환하여 담당자 이메일로 제출 * 발표자는 심사용 논문요지(연구주제, 연구의 목적, 연구의 필요성, 관련 문헌 고찰, 연구방법, 기대효과, 참고문헌) 등을 A4용지, 표지를 포함하여 자유양식으로 10매 작성) * 메일 제목: 석사학위 프로포절 자료 제출, 학번, 성명 / 파일명: 성명_학번_석사 프로포절 - 논문요지 발표 및 심사: 10~15분 |
연구주제/목적/필요성/관련문헌고찰/연구방법/기대효과/참고문헌 등이라... 전형적인 Structure긴 하다.
| 주제 : 위와 같다. 목적 : NL2SQL 모델개발, 기술발전 필요성 : NL2SQL 모델 연구기법의 획일화, 창의적인 시도 필요. NL2SQL의 중요성은 말해뭐해. 관련문헌 : 각종 NL2SQL 논문들 연구방법 : 지금껏 내가 만지작거린 SQL2NL 모델을 활용해 NL2SQL 파인튜닝 방법 기대효과 : Domain specific하면서 완성도 있는 NL2SQL 모델 개발 가능 per Company. 참고문헌 : 각종 NL2SQL 논문들 |
이런식으로 진행하고자 한다..
일단 얼른 NL2SQL , SQL2NL접합시키는 걸로 넘어가자.
글이 넘 길어져서 이만 줄이기

'Data Science > Research' 카테고리의 다른 글
| [KDBC] SQL2NL 모델 발전시키 (0) | 2025.10.15 |
|---|---|
| SQL2NL 모델을 NL2SQL에 적용시켜보기[3 - 잠정 stop] (0) | 2025.09.25 |
| SQL2NL 모델을 NL2SQL에 적용시켜보기[1] (0) | 2025.09.11 |
| SQL2NL 모델 추가 실험(VectorDB, Embedding)[4] (0) | 2025.09.04 |
| SQL2NL 모델 추가 실험(VectorDB, Embedding)[3] (2) | 2025.08.18 |