인생 첫 개발 프로젝트

2024. 8. 26. 01:42Upstage AI Lab

프로젝트 진행 기간 (8월 12일 - 19일)

저번시간에 Git/Github를 배웠다.

배웠으면 뭐를 해야할까? 프로젝트를 해야지!

 

첫 프로젝트는 RAG 실습 프로젝트였다.

QA 엔진과 Chatbot을 만드는 프로젝트를 선택하는 것이 있었는데 솔직히 말하자면 인강 진도를 다 못따라가서 뭐가 뭔지 모르고 그냥 아무거나 괜찮다고 이야기하고 QA엔진을 선택했다.

 

QA엔진을 해보니까 이거 선택하길 잘했다는 생각을 했다.

 

우선 난이도는 Chatbot보다 난이도가 높은 것 같다.

그리고 RAG에 대한 전반적인 구조를 이해하기가 좋았다.

프로젝트 주제

한국공항공사의 실시간 항공운항 현황 정보 상세 조회 서비스와 인천국제공항공사의 여객편 운항현황 서비스를 활용해서 실시간 운항정보문의 QA 엔진을 구축하는 거였다.

 

팀에서 이렇게 선택한 이유는 이번 프로젝트가 파이썬의 모듈을 학습하고 RAG의 전반적인 구조를 이해하는 것이 목표이기 때문에 데이터 전처리에서는 시간을 줄이자가 목표였다. 그래서 JSON형태로 데이터를 받을 수 있는 것들 생각하다보니 위와 같은 주제가 선정이 되었다.

 

걱정과 진행 과정

처음 프로젝트를 진행하면서 가장 많이 걱정했던 것은 팀원에 비해 부족한 실력을 많이 걱정을 했다.

팀원 두 분은 소공 졸업생, 한 분은 벡엔드에서 직무 전환을 위해 오신 분이셨다...

 

아니나 다를까... 초반에 적응하기가 힘들었다. 몇가지 써보면

  1. 모듈별로 나눠서 개발을 하는데 각 모듈이 어떤 기능을 담을지 정확한 정의 없이 시작된 개발
    (이 문제는 클로드를 통해 해결했다.)
  2. 각 모듈이 구체적으로 어떤 기능적인 면을 담당할지 확정이 난 이후 모듈간의 관계를 이해하기가 어려웠다.
    LLM에서 문제의 요구 사항에 맞춰 짜준거를 이해하는데만해도 시간이 꽤 걸렸다.
  3. 모를때 모른다고 말하지 못하는 나의 입...
    각 모듈의 구체적인 사항이 정해지고 나서 세 분이서 슈슉 대화하면서 진행하시는데 속도가 빨라서 못 알아먹었다...

🚨그러다가 터진 비상 상황🚨

팀원 중 한 분이 코로나에 걸리셨다.

그전까지 나는 다른 분들이 만든 모듈 통합하는 main.py 모듈을 짜기로 했었어서 각 모듈의 기능적 정의와 구체적인 상황 놓쳐버린 것 혼자서 공부하고 물어보고 그랬는데 그러다가 비상 상황으로 갑자기 많이 바뀌었다.

 

아프신 분이 원래 DB를 담당하기로 하셨어서 그걸 내가 하고 어쩌다보니 추가로 다른 것도 더 맡게 되었다.

 

프로젝트의 전체적인 구조 및 내가 한 것.

  1. main.py
    - 주요 설명 : 전체 프로그램 실행을 제어하는 메인 스크립트
  2. api_handler.py
    - 주요 기능 : 한국공항공사와 인천공항공사의 오픈 API와의 통신을 통해 실시간 운항정보 데이터를 가져온다.
  3. db_operations.py
    - 주요 기능 : 오픈 API를 통해 받아온 외부 데이터를 DB에 저장 및 조회
  4. llm_handler.py
    - 주요 기능 : Solar API를 사용하여 응답 생성, 택스트를 SQL로 변환, 결과 포맷팅 등 LLM 관련 작업을 수행
  5. rag_retreiver.py
    - 주요 기능 : SQL 데이터베이스에 저장한 뒤 쿼리 실행하여 데이터 반환

내가 만진건 main.py, db_operations.py, rag_retreiver.py를 만졌다.

이때 처음으로 구글 클라우드를 이용해서 MYSQL 서버도 만들어보고 실습을 진행했다.

워크벤치를 통해서 하려면 할 수 있었을텐데 워크벤치가 익숙하지 않아서 터미널 환경에서 명령어 쳐서 진행했다.

 

이렇게 해본게 첫 시도이다보니까 신기하고 귀한 경험이었다.

아쉬운 점 및 발전해야 할 점

가장 아쉬운 것은 개발할 때 GPT, 클로드와 같은 LLM을 많이 사용한 것이다.

아직 뭘모르고 특히 SQL 쿼리 문도 잘 몰라서 LLM도움을 많이 받았는데 다음에는 LLM 도움 받는 것을 줄이면서 개발하고 싶다는 생각을 한다.

 

그래서 파이썬 공부를 조금더 해야 할 것 같은데 요즘 공부하면서 느끼는건... 그냥 LLM쓰면서 개발 프로젝트나 개발을 많이 하는게 배스트 이지 않을까 싶다. 아무리 LLM을 써도 내용을 이해하려면 각 코드 한 줄이 의미하는 바를 알아야 하고 그렇게 쓰다가 보면 생각보다 공부가 되어있다.

 

그냥 암기식 공부는 개인적으로 싫어하는 편이라(물론 어느정도의 암기는 필요하겠지만) 실제로 써보면서 하나하나 배우는 것도 괜찮다는 생각을 해봤다.

그러니 부트캠프가 끝나도 혼자서 꾸준히 공부해야겠지?

 

다음으로는 팀원과의 소통에서 많이 발전해야 겠다는 생각을 했다.

팀플에서 가장 중요한건 의사 소통인데 설명 듣다가 모르면 빠르게 모른다고 해야 한다.

그걸 안해서 애를 좀 먹었다...

 

마지막으로 우리팀에서 데이터를 text가 아니라 완전 JSON 형태로 받아오기도하고 DB도 임베딩하고 Vector DB를 가져와서 RAG하는 것보다 RDB를 통해 RAG를 하는 방식으로 진행하다보니까 RAG의 핵심적인 요소를 살짝 빼먹은 느낌도 있다.

다음에는 RDB말고 Vector DB를 이용해보고 싶다는 생각을 했다.

 

시간 있으면 꼭 해볼 것!

 

그리고 QA 엔진이 정해진 답변에만 답변을 할 수 있었는데 이렇게 된 문제는 크게 세 가지라고 예측을 해본다.

검증을 해보지는 않았지만

  1. LLM 문제
    클로드나 GPT 상위 모델을 쓰면 원했던 결과물을 잘 출력하는 모델이 나왔을 것 같은데 Solar쓰다보니 성능이 떨어졌던 것 같다..
  2. RDB만 사용한 문제
    말 그대로...
  3. 데이터 중복 (이건 약간 검증됨)
    프로젝트 후반부에 가니까 토큰 개수가 너무 많다고 나와서 다시 RDB보니까 중복 데이터가 너무 많았다. 그걸 좀 지우고 다시 실행하니까 오류 빈도가 줄어듬을 확인 할 수 있었다.
    그나마 좀 얻은거는 이거일 듯... RAG에서 DB에 있는 중복 데이터는 체크 잘하고 삭제할 것...

후기

실제 구현된 코드는 저작권 이슈로 여기에 올리지 않겠다...

내 컴퓨터에는 그대로 있으니... 나중에 필요할때 다시 봐보자...!

 

그리고 나중에 혼자서 챗봇 해보는 것도 나쁘지 않을 듯 싶다.

 

이렇게 첫 프로젝트 후기를 마무리 한다!

'Upstage AI Lab' 카테고리의 다른 글

ML 경진 대회 (feat. 부동산 가격 예측)  (11) 2024.09.18
AI를 위한 기초 수학  (0) 2024.08.26
Git 학습일지 2  (0) 2024.08.11
Git 학습 일지  (0) 2024.08.10
Python 학습 일지  (0) 2024.08.06