base 모델을 본인 task에 맞추는 세 전략. 상호 배타 아냐 — 대부분 production 시스템이 혼합 사용. 질문은 뭐로 시작하느냐.
Prompting (zero-shot / few-shot / in-context learning)
모델 변경 없음. 더 좋은 prompt 엔지니어링, 예시 포함, 시스템 메시지 설정, 입력 구조화. 가장 빠르고, 싸고, 유연. 적합: 프로토타입, 일반 task, 모델이 이미 충분히 '아는데' 방향만 필요한 task.
Retrieval-Augmented Generation (RAG)
쿼리 시점에 관련 문서 검색해서 prompt에 포함. 모델 변경 없음. 적합: 지식 집약 task, 정보가 변하는 도메인(fine-tune이 stale), 인용/근거 필요한 task, 관련 데이터가 모델의 사전학습 분포에 안 맞는 task.
Fine-tuning (full 또는 LoRA / QLoRA)
본인 데이터에 모델 가중치 업데이트. LoRA(Low-Rank Adaptation)는 작은 adapter 행렬만 업데이트, full fine-tune보다 훨씬 적은 compute 필요. 적합: prompt에서 못 잡는 일관된 스타일/포맷, prompt 엔지니어링 + RAG로 부족한 task, 큰 모델 동작을 작은 모델로 distill.
결정 트리
- 먼저 prompting 시도. 보통 필요의 80% 해결.
- 모델이 특정 지식 부족해서 prompting 실패면 RAG 시도.
- 일관된 스타일/포맷이나 전문화 동작 필요해서 둘 다 실패면, 그때 fine-tune. fine-tune은 비싸고 유지보수 부담(base 모델 업데이트마다 재학습), 일반 능력 감소 가능.