<aside>

프로젝트 간단 설명


기술 스택

분류 기술
언어 / 프레임워크 Python 3.12 PyTorch
모델 KoBERT (monologg/kobert) llama-3.2-Korean-Bllossom-3B
ML 라이브러리 HuggingFace Transformers TRL (SFTTrainer) PEFT / LoRA SentencePiece Scikit-learn
학습 환경 AWS EC2 (Ubuntu 24.04) RunPod (A100 / H100)
모델 탐색 도구 LM Studio Ollama
모델 배포 / 관리 HuggingFace Hub
데이터 생성 도구 ChatGPT API

1. 프로젝트 배경

카드 소비 데이터를 분석하려면 기존엔 SQL 작성 가능한 인력이 필요했다. 이를 해결하기 위해 프롬프트 엔지니어링 기반으로 자연어 → SQL 변환을 먼저 시도했으나, 도메인 특화 쿼리 생성의 한계가 명확했다.

이후 경량 LLM(SLM)의 성능이 빠르게 발전하면서, 소규모 모델을 도메인에 맞게 파인튜닝하는 방식이 현실적인 대안으로 떠올랐다. 자체 Text-to-SQL 엔진을 보유하면 추후 다양한 데이터 도메인에 재활용·확장이 가능하다는 판단 하에, SFT 기반 파인튜닝 방식으로 PoC를 진행했다.


2. 서비스 파이프라인

flowchart TD
    A([사용자 질문 입력]) --> B

    B["① 질문유효성검증 ◀ 본인 담당
    KoBERT 멀티라벨 분류
    욕설 / 보안위협 / 개인정보차단"]

    B -->|유효 질문만 통과| C

    C["② 유사 질문 검색
    Pinecone Hybrid Search
    BM25 + BGE-M3 임베딩"]

    C -->|HIT| D
    C -->|MISS| E

    D["Redis
    캐시 반환"]

    E["③ SQL 생성 ◀ 본인 담당
    LLaMA 3.2 SFT 파인튜닝
    도메인 특화 쿼리 생성"]

    E --> F

    F["④ SQL 실행
    Redshift Serverless"]

    F --> G

    G["⑤ 결과 출력
    차트 자동 생성 / 자연어 리포트
    Gradio UI"]

    style B fill:#3d8b8b,stroke:#f0ad4e,stroke-width:2px
    style E fill:#3d8b8b,stroke:#f0ad4e,stroke-width:2px

3. 담당 파트 ① — 질문 유효성 검증 모델

1) 문제 정의

실제 서비스 환경에서는 욕설·비방, 개인정보 요청, 보안 위협 등 다양한 비정상 질문이 유입될 수 있다. 이를 파이프라인 제일 앞단에서 사전 차단하지 않으면 불필요한 LLM 연산 낭비, 서비스 무결성 저해, 보안·윤리 리스크로 이어진다. 이에 KoBERT 기반 파인튜닝 모델로 질문 유효성을 자동 판별하는 필터링 엔진을 구축했다.


2) 모델 선택 근거 - KoBERT

다양한 한국어 사전학습 모델을 검토한 결과 KoBERT를 선택했다.