본문 바로가기
AI

FineTuning vs RAG - 모델 성능을 올리려면 무엇을 해야하는가

by 발빠진 쥐 2026. 7. 24.

RAG vs Fine-Tuning, 모델 성능을 올리려면 무엇부터 해야 할까

카카오테크캠퍼스 4주차 과제로 "나나의 기억을 검색하는" RAG 기능을 직접 만들어보면서, 문득 궁금해졌다. RAG랑 파인튜닝(Fine-Tuning) 둘 다 "AI를 더 똑똑하게 만드는 방법"이라고 하는데, 실무에서는 대체 뭘 먼저 해야 할까?

마침 수업 시간에 강사님도 똑같은 질문을 던지셨다. "제한된 자원 안에서 Agent 성능을 올리려면, 뭘 먼저 해야 할까?" 이 글은 그 질문에 대한 답을 개념 설명 + 강사님 답변 + 직접 만들어보며 확인한 것 순서로 정리한 기록이다.

## 1. Fine-Tuning이란 무엇인가

Fine-Tuning(파인튜닝)은 이미 학습된 모델(가중치)을 가져다가, 특정 목적에 맞는 예시 데이터로 **한 번 더 학습**시켜서 모델 자체의 "습관"을 바꾸는 작업이다.

지금까지 이 과제에서 계속 써온 system prompt와 비교하면 이해가 쉽다.

- **system prompt**: 모델은 그대로 두고, 매번 "이렇게 답해줘"라고 지시문을 넣어주는 것. 모델 자체는 하나도 안 바뀐다.
- **파인튜닝**: 모델 내부 가중치를 실제로 바꿔서, 지시문 없이도 알아서 그렇게 행동하도록 만드는 것.

비유하면 system prompt는 "알바생한테 오늘의 매뉴얼을 쥐어주는 것"이고, 파인튜닝은 "알바생을 몇 달간 재교육시켜서 습관 자체를 바꿔놓는 것"에 가깝다.

## 2. RAG란 무엇인가

RAG(Retrieval-Augmented Generation)는 모델을 전혀 건드리지 않고, **검색해서 찾은 자료를 답변에 참고자료로 끼워주는** 방식이다. 모델의 가중치는 그대로 두고, 질문이 들어오면 관련 문서를 먼저 찾아서 그 내용을 근거로 답하게 만든다.

이번 4주차 과제에서 만든 `search_personal_references`가 정확히 이 방식이다. ChromaDB라는 벡터 데이터베이스에 개인 메모를 저장해두고, 질문이 들어오면 의미가 비슷한 메모를 찾아서 그 내용을 근거로 AI가 답하게 만든다.

## 3. 강사님의 질문과 답

수업에서 강사님이 정리해준 내용은 이랬다.

**Fine-Tuning의 3가지 필요조건**
1. 데이터셋 — 학습시킬 예시 데이터가 충분히 있어야 한다
2. GPU — 모델을 재학습시키려면 강력한 연산 장비가 필요하다
3. 학습시간 — 실제로 학습을 돌리는 데 시간이 든다

이 세 가지가 전부 파인튜닝의 "비용"이자 "진입 장벽"이다.

**질문**: 제한된 자원(사람, 시간) 안에서 Agent 성능을 올리려면 RAG와 F.T 중 뭘 먼저 해야 할까?

**답**: 대부분 RAG. 이유는 F.T의 구현 난이도가 상당히 높기 때문이다. 데이터셋을 준비하고, GPU를 구하고, 학습을 돌리는 전 과정이 RAG에 비해 훨씬 무겁다.

**결론**: F.T는 RAG나 Skills(tool) 사용 후 진행한다. 즉 우선순위는 다음과 같다.

```
① Skills / Tools (프롬프트 설계, tool 호출 구조)
② RAG (검색 기반 답변)
③ Fine-Tuning (위 둘로도 안 될 때 마지막 수단)
```

## 4. 직접 만들어보며 확인한 것

이 결론이 맞는지 직접 RAG를 만들어보면서 몸으로 확인했다. 개인 참고자료를 저장하고 검색하는 `search_personal_references` tool을 구현한 뒤, "글자가 겹치지 않아도 의미로 찾아지는지"를 실제로 테스트했다.

```python
result = search_personal_references.invoke({'query': '밥 먹는 시간에는 약속 잡지 마', 'top_k': 2})
# 거리: 1.3529 | 점심 시간 12:00-13:00은 되도록 회의 없이 비워둔다
# 거리: 1.3794 | 점심 시간 12:00-13:00은 되도록 회의 없이 비워둔다.

result2 = search_personal_references.invoke({'query': '자동차 타이어 교체 주기', 'top_k': 2})
# 거리: 1.5606 | 팀 싱크는 60분 이하로 잡고 회의 전날 아젠다를 공유하면 좋다.
# 거리: 1.5998 | 점심 시간 12:00-13:00은 되도록 회의 없이 비워둔다
```

검색어에 "점심"이라는 글자가 전혀 없는데도 "점심 시간" 관련 메모가 거리 1.35 수준으로 가장 가깝게 나왔고, 완전히 무관한 검색어("자동차 타이어")를 넣었을 때는 거리가 1.56 이상으로 더 멀어졌다. 모델을 하나도 재학습시키지 않았는데, 그저 저장 방식(임베딩 벡터 + 거리 계산)만 바꿨을 뿐인데도 "의미 기반 검색"이 가능했다.

이 경험으로 RAG가 왜 "먼저 시도해볼 만한" 방법인지 체감했다. 파인튜닝처럼 모델을 재학습시키지 않고도, 벡터 DB 하나 구성하는 것만으로 "모르는 걸 찾아서 답하는" 능력을 만들 수 있었기 때문이다.

## 5. 결론

RAG와 파인튜닝은 둘 다 "AI가 더 잘 답하게 만드는" 방법이지만, 해결하는 문제의 층위가 다르다.

- RAG는 **"모델이 모르는 최신/개인 정보를 찾아서 답하게 하는 것"**에 적합하다. 모델을 안 건드리니 비용이 낮고 시작하기 쉽다.
- 파인튜닝은 **"모델의 판단/말투/행동 습관 자체를 바꾸는 것"**에 적합하다. 대신 데이터셋, GPU, 학습시간이라는 무거운 비용이 든다.

그래서 실무에서는 `Skills/Tools → RAG → Fine-Tuning` 순서로 접근하는 게 합리적이다. 이번 4주차 과제도 정확히 이 순서(1~3주차는 tool/prompt, 4주차는 RAG)를 따라가고 있었다는 걸, 이 질문에 답을 찾아보며 뒤늦게 이해하게 됐다.

'AI' 카테고리의 다른 글

LLM 구조  (0) 2026.07.24
Claude Plugin 추천  (0) 2026.07.14
딥러닝, 임베딩, Transformer 찍먹하기  (0) 2026.07.10
Zero-shot/Few-shot, Pydantic  (0) 2026.07.10
LangChain과 ToolStrategy와 Proxy 쓸 때 Json parsing 오류  (0) 2026.07.10