[Achat] — [ rule base Agentic chatbot ]

"8GB VRAM 제약 환경에서 파인튜닝부터 Windows 배포까지 전 과정을 혼자 완성한 경량 로컬 AI 캐릭터 챗봇 — LoRA·RAG·CI/CD 포함”

1) 목표: RuleBase로 편의를 위한 일부 기능 + 자유로운 대화가 가능한 경량 챗봇 개발

영역 기술 용도
LLM (dev) transformers + Qwen2.5-3B-Instruct 학습·개발 환경 GPU 추론
LLM (deploy) llama-cpp-python + GGUF Q4_K_M Windows CPU 추론
파인튜닝 peft LoRA (r=32, α=64) 캐릭터 말투·성격 학습
양자화 bitsandbytes NF4 (double quant) VRAM 절감 (dev 환경)
연속학습 EWC (Fisher Information Matrix) Catastrophic Forgetting 방지
임베딩 sentence-transformers BAAI/bge-m3 장기 메모리·RAG 벡터화
벡터 DB chromadb PersistentClient 장기 메모리 / RAG / 프롬프트 가이드
로컬 검색 SQLite FTS5 (표준 sqlite3) 파일 전문 검색 (증분 인덱싱)
UI PySide6 + QML 플로팅 프레임리스 UI
이미지 처리 Pillow 파일 형식 변환 도구
패키지 관리 uv dev/deploy 의존성 분리 관리
CI GitHub Actions + ruff lint·데이터 파이프라인 검증
CD GitHub Actions + PyInstaller + Inno Setup Windows exe 인스톨러 자동 빌드·릴리즈
학습 데이터 JSONL + build_dataset.py 카테고리별 SFT 데이터 파이프라인
로깅 loguru stderr 출력 (deploy 파일 로그 없음)

2) 아키텍처/구현 요약

3) 과정중 발생한 주요 BUG

4) 목표 대비 성과

지표 Before After 변화
앱 초기 RAM 점유 ~2,730 MB ~1,027 MB -62%
VRAM 여유 헤드룸 622 MB 977 MB +355 MB
턴당 LLM 호출 횟수 2회 (대화 + 나레이션) 1회 -50%
LoRA eval_loss 1.687 (v7) 1.54 (v11) -8.7%
전체 자동화 테스트 240개 (기능개선 완료 시점) 475개 +235개
AI-tell 표현 발생 0건/10 완전 억제

앱 초기 RAM 점유 62% 절감 (2,730MB → 1,027MB), VRAM 여유 +355MB 확보, 턴당 LLM 호출 50% 감소, LoRA eval_loss 1.687 → 1.54, 자동화 테스트 240 → 475개, AI 어투 표현 완전 억제(0건/10). eval_loss가 더 낮은 v12 대신 실환경 테스트 기반으로 v11 채택 — 수치보다 실사용 품질을 우선한 판단.

5) 후기

DB의 역할 변경 +기능모드 확장 ⇒ Agentic 대화로의 확장 가능성

기능/대화 모드 어댑터 분리 미구현

할루시네이션 문제 미해결