Eat Study Love

먹고 공부하고 사랑하라

Data Science/Research

SQL<->NL transfer in PostgreSQL 뭘 더 해야 할까?

eatplaylove 2025. 5. 12. 11:02

https://eglife.tistory.com/348

 

Llama3 Prompt Engineering(7)

https://eglife.tistory.com/347 Llama3 Prompt Engineering(6)https://eglife.tistory.com/340 PostgreSQL, LLM 연결(5)PostgreSQL Openai or Llama 연결 Settinghttps://eglife.tistory.com/338 PostgreSQL, LLM 연결(4)1.https://github.com/cloudquery/pg_gpt2.http

eglife.tistory.com

계속 도돌이표 같지만, 앞으로 어떤 걸 더 연구해야 하는지 길라잡이가 쉽지 않으니 다시 한 번 지금까지 한 걸 정리해보자.

일단 PostgreSQL의 확장 C-함수(Extension) pg_llama.c 라는 파일을 만들어 코딩을 진행했고, User의 호출을 위해서 해당 파일 안에 llama_nl2sql / llama_sql2nl 이라는 함수를 만들었고 User는 select llama_nl2sql('~~~~') 과 같이 PostgreSQL DB안에서 SQL문으로 해당 function call이 가능하다.

 

해당 함수의 주요 Logic은 1) Database의 Schema 수집 -> 2)Llama(HTTP)호출 -> 3) Llama 응답 Text 반환의 순서로 진행된다.

좀 더 보기 쉽게 풀어쓰면 아래와 같다.

 

위 대표함수 2개에 공통으로 쓰이는 Helper function은 아래와 같다.

 

 

get_shema_of_db는 llama에 prompt를 전할 때 db schema도 같이 전해 llama의 변환 정확도를 높이기 위한 fucntion이다. DB 내의 모든 Table과 Column이름을 이어 붙쳐서 String을 만들고 여기에 Table간 PK/FK 정보까지 더한다. 즉, 일종의 Prompt Engineering의 일부다.

 

그리고 request_llama는 libcurl을 이용해 Llama API를 호출하고 응답을 받아낸다. 여기서 libcurl 이란 오픈소스 C 라이브러리이다. HTTP/FTP/S3 드으이 URL기반 프로토콜을 클라이언트로 호출할 수 있게 도와준다.

이런 식으로 Local에 있는 Llama를 호출

 

그리고 get_text() 함수의 경우 Response json파일에서 text를 추출한다. Response에서 "content" / "text" 라는 키워드를 이용해서 반환값만을 추출한다. remove_newline()은 간단히 Response안에 \n을 없애주어 Error를 막는 것이다.

 

위 공통함수들을 가지고 SQL2NL / NL2SQL은 비슷한 로직으로 구현이 된다.

 

BIRD Database로 같은 NL2SQL을 실행해보고, 그 결과를 다시 SQL2NL로 넣어 보았다.

 

  IN OUT
1 select llama_nl2sql('return the top 3 school zip codes'); SELECT DISTINCT s.zip FROM schools s ORDER BY s.zip DESC LIMIT 3;
2 select llama_sql2nl(' SELECT DISTINCT s.zip FROM schools s ORDER BY s.zip DESC LIMIT 3;');  Get zip codes from schools in descending order and show the top 3.

 

 

간단한 SQL문은 잘 반환한다.

 

다시 시각적으로 정리해보는 NL2SQL의 로직,(SQL2NL도 이와 유사하다.)

 

으어아.. 뭘 더 해봐야 하지..??????????

예에에엠병 더 이상 생각이 나지 않는다.

 

여기서 뭘 더 해야 논문주제가 나오는 것일까

 

'Data Science > Research' 카테고리의 다른 글

MCP in PostgreSQL(2)  (0) 2025.05.15
MCP in PostgreSQL(1)  (0) 2025.05.14
Llama3 Prompt Engineering(7)  (1) 2025.04.30
Llama3 Prompt Engineering(6)  (0) 2025.04.25
SQL2NL Prompt Engineering - KCC(4) Last  (0) 2025.04.18