To-do : 시간이 왜 이렇게 차이가 크게 나는지 디버깅, Hugging Face 기반으로 Llama 돌려보기, Llama Model Fine tuning방도 적용시켜보기 |
일단 이전 코드와 비교해보며 디버깅해보니, Table schema처럼 좀 긴~ 놈을 Prompt text에 그냥 집어 넣으면 시간이 오래 걸리고, System_prompt로 따로 빼 놓으면 시간이 좀 덜 걸린다.
같은 양의 Token 처리 비교 표
1. Table Schema를 System_prompt로 따로 빼놓기![]() |
2. Table Schema를 User prompt_text에 넣기![]() |
오케이, 대충 이거는 원인을 찾았다
근데, 이유에 대한 설명은 잘 나와있지 않다. 일단 GPT답변 참고,
1) 실제로 system prompt + user prompt를 합치는 과정에서 토큰 수가 달라진다
2) Ollama가 “system 메시지”를 다르게 tokenization/처리할 수 있다
3) 형식(포매팅) 차이로 인한 토큰 증가
4) 실제 프롬프트가 다를 가능성
5) Llama가 context window를 초과하여 잘리는 경우
|
자, 그러면 다음 이슈
Hugging-Face 입문과, 이를 이용한 DB-textbook 연계 Llama Model finetuning 업무!
이것은 일단 뒤로 미루자.
왜냐하면 PostgreSQL에 Extention을 이용한 PSQL 코드수정작업이 가능해야, 일단 아무 모델이나 거기에 올려두고 psql에 내가 원하는 기능을 수행할 수 있는지 확인이 가능하기 때문이다.
이것만 된다면, 내가 원하는 LLM Model 코드를 psql 코드에 이식만 하면 되고, 그 Model에 대한 Fine Tuning작업 역시 그 때 가서 해도 늦지 않다.
그래서 내 Postgres 환경에서( PostgreSQL ver 17.2 ) PostgreSQL 코드변경을 시도하여 psql에 원하는 Extention을 넣어봅시다.. 이게 말이 쉽지 생각보다 어려운 길일 것이다.
그 전에, 궁금한 사항! 도대체 psql이 무엇이고, PostgreSQL code를 수정해서 psql에 내가 원하는 extension을 넣을 수 있는지?
아래 답변은 GPT 답변이라, 좀 더 정확한 건 구글링 등등.. 을 통해서 알아서 찾아내긴 해야함!
1. psql이란 무엇이고, 어떤 역할을 하나요?
2. psql 코드를 수정해서 원하는 확장을 수행할 수 있을까? 결론부터 말하자면, psql 자체를 수정하는 것은 얼마든지 가능하지만(오픈소스이므로 소스 코드를 내려받아 원하는 대로 변경 후 컴파일), 일반적으로 PostgreSQL 확장을 개발하거나 설치·관리하기 위해 psql의 소스 코드를 직접 수정할 필요는 거의 없습니다. 그 이유는 다음과 같습니다:
|
그럼 이제 PostgreSQL source 코드를 수정해서 실제 PostgreSQL 안에서 Model 호출이 되는지 체크
아래 영상을 참고해서 코드를 짜보려고 한다.
'RUST'라는 언어를 사용한다는데 좀 불안하긴 하네 ㅋ;;
https://www.youtube.com/watch?v=g8lzx0BABf0

2023년 기준이지만, 이미 Rust로 PostgreSQL을 GPT에 연결하는 Library가 있다. called PGX
pg_gpt / pg_human이라는 Extension도 SW Engineer들이 만들었다.

이 절차에서 NL을 반환받으면 될 거 같다.

2023년 기준이라 그런가, PostgreSQL의 Schema를 받는 방법이 없어서 catalog를 보며 직접 table schema를 추출했다고 한다.
그 당시 RUST의 extension을 이용해서 GPT를 연결하였고, Prompt Engineering은 아래와 같이 진행했다고 한다.

RUST / C base의 PostgreSQL Extension Making with GPT 코드 Git hub를 찾았다. 이걸 변형해서 Develope해보자..
PostgreSQL ver 17.2 기준, db의 table schema를 읽어오는 코드는 아래와 같다.
PostgreSQL의 pg_dump라는 녀석을 이용하면 된다.
pg_dump -U [username] -h [host] -p [port] -s -f [DDL저장하고픈 파일명->example].sql [DBname]
그러면 저 example.sql에 해당 DB의 Schema(DDL)만 추출된다.
그리고 cat을 이용해 해당 파일을 읽어보는 것이 가능하다.
cat example.sql

파일 생성위치는 해당 코맨드를 날린 곳이다.
그래서 특정 경로에 스키마 파일을 저장하고 싶으면 pg_dump 명령어 실행시 절대경로를 지정해줘야 한다.
1. 기본 생성 위치
|
일단 이건 이렇고,
다시 돌아와서 PostgreSQL에 Coding작업 진행해보기..
일단 이게 PostgreSQL에 version에 맞는 http extension을 download 해야 하는데, 혹여나 version check 잘못했다가 깡그리 엎어지는 case가 있으므로, 다시 신중하게 알아보고 작업해야겠다.
뭔가, postgreSQL에 새로운 extension을 내 스스로 만드는건 객기같고, 남들이 구현해놓은 extension이나 코드를 이것저것 Searching 해 본 다음에 내가 이용할만한 것들이 있는지 적용해보고 수정이 필요하면 일부 수정하고, 이런 식으로 진행해봐야지.
다음 글에서 PostgreSQL http extension을 집중적으로 파헤쳐보고, 다른 Code변경법도 위 git-hub 링크들을 참고해서 적용시켜봐야겠다.
그리고, 백도화지에 그림 그리다가 조져졌을때 언제든 Roll-back 할 수 있는 git 사용법도 다시금 파악해놔야지!

'Data Science > Research' 카테고리의 다른 글
SQL2NL 용 Data set 만들기 (0) | 2025.03.31 |
---|---|
PostgreSQL, LLM 연결(4) (0) | 2025.03.26 |
PostgreSQL, LLM 연결(2) (0) | 2025.03.25 |
PostgreSQL, LLM 연결(1) (0) | 2025.03.24 |
PostgreSQL SQL2NL(8) (0) | 2025.03.20 |