AIBeginnerX
ESC

검색어를 입력하세요

↑↓ 이동 · ↵ 열기 · ESC 닫기 Powered by Pagefind

№ 001 · · 2분 읽기

파인튜닝 vs RAG — LLM에 지식을 넣는 두 가지 방법

LLM에 새로운 지식을 넣을 때, 파인튜닝과 RAG 중 뭘 골라야 할까? 각각의 장단점, 비용, 적용 시나리오를 비교합니다.

By AIBeginnerX
#RAG#파인튜닝#LLM

파인튜닝 vs RAG, 언제 뭘 쓸까

LLM에 **“우리 회사만의 지식”**을 넣고 싶을 때, 크게 두 가지 방법이 있습니다.

한눈에 비교

파인튜닝 (Fine-tuning)RAG (검색 증강 생성)
데이터 위치모델 가중치 안에 저장외부 벡터 DB에 저장
업데이트재학습 필요 (느림, 비쌈)문서 추가만 (즉시)
비용GPU 시간 (수백만 원~)임베딩 + 스토리지 (저렴)
장점모델 행동 자체를 바꿈실시간 반영, 출처 추적
단점학습 데이터 필요, 망각검색 품질에 의존
적합스타일/포맷/태스크 학습지식/문서/Q&A

의사결정 플로우차트

질문: "LLM의 '지식'을 바꾸고 싶어?"
├─ Yes → RAG로 시작
└─ No  → "행동/스타일"을 바꾸고 싶어?
        ├─ Yes → 파인튜닝
        └─ No  → 프롬프트 엔지니어링으로 충분

실전 — RAG 30분 구축

# 1. 문서 청크로 나누기
from langchain.text_splitter import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(docs)

# 2. 임베딩 & 저장
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
db = Chroma.from_documents(chunks, OpenAIEmbeddings())

# 3. 검색 + 생성
from langchain_openai import ChatOpenAI
from langchain.chains import RetrievalQA

qa = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model="gpt-4o"),
    retriever=db.as_retriever(search_kwargs={"k": 3}),
)
answer = qa.invoke("AIBeginnerX의 1월 뉴스?")

실전 — 파인튜닝이 필요한 순간

  • “고객사에 항상 정중한 어조로 답해야 해” (스타일)
  • “JSON만 출력해, 다른 텍스트는 절대 ❌” (포맷)
  • “우리 도메인 용어 사전을 정확히 따라줘” (태스크)

이 세 가지는 RAG로는 부족하고, 모델 자체를 학습시켜야 해요.

다음 글에서

  • LoRA 파인튜닝 — 16GB GPU로도 가능한 학습
  • RAG의 함정 — 청크 크기, 임베딩 모델, 리랭킹
  • Hybrid: 파인튜닝 + RAG 같이 쓰기

Colophon

Set in Source Serif 4 & Fraunces. Printed on warm paper.

Further reading

📚 LLM WiKi

LLM이 뭔지 5분 만에 이해하기

거대 언어 모델(Large Language Model)의 핵심 아이디어를 비유와 함께 정리합니다. 토큰, 트랜스포머, 다음 토큰 예측까지.

📚 LLM WiKi

AIBeginnerX 블로그를 시작합니다

왜 AI 입문 블로그를 만들었는지, 여기서 어떤 글을 만날 수 있는지 소개합니다.

⚡ hermes

Hermes 모델 — 오픈소스 LLM의 새로운 기준

Nous Research의 Hermes 모델 시리즈 소개. 파인튜닝 데이터, 평가, 실전 사용 후기까지 정리합니다.

— 끝 —

💬 댓글 기능

GitHub Discussions로 댓글을 받으려면 README의 Giscus 설정 안내를 따라주세요. (5분이면 끝나요)