* 이 게시물은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
(RAG 시리즈 ①) 왜 RAG인가
사내 문서로 챗봇을 하나 붙여보라는 얘기를 처음 들었을 때, 나는 당연히 모델을 우리 데이터로 학습시키는 걸 떠올렸다. 파인튜닝. 그게 정석인 줄 알았다.
막상 파고들어 보니 파인튜닝은 내가 풀려던 문제랑 결이 달랐다. 파인튜닝이 잘 맞는 건 말투나 형식, 분류 규칙처럼 “어떻게 답할지”를 가르칠 때다. 반대로 “무엇을 아는지”, 그러니까 지식 자체를 최신으로 유지하는 데는 영 안 맞는다. 문서가 가만히 있질 않기 때문이다. 정책 하나 바뀌고 신제품 매뉴얼 하나 올라올 때마다 며칠짜리 학습을 다시 돌릴 순 없다. 게다가 파인튜닝한 모델은 “이 답이 어느 문서에서 나왔냐”고 물으면 대답을 못 한다. 학습하면서 원문이 뭉개져 버리니까.
그래서 방향을 틀었다. 모델은 건드리지 않는다. 대신 질문이 들어오면 답하기 직전에 관련 문서를 찾아서, 그 내용을 프롬프트에 넣어주고 “이거 보고 답해”라고 시킨다. 이게 RAG다. Retrieval-Augmented Generation, 검색으로 증강한 생성.
구조는 두 덩어리로 나뉜다. 하나는 인덱싱, 문서를 미리 잘게 쪼개 벡터로 바꿔 저장해두는 준비 작업이다. 다른 하나는 질의, 사용자 질문이 들어올 때마다 관련 조각을 찾아 모델에 넘기는 실시간 과정이다. 인덱싱은 문서가 바뀔 때만, 질의는 매 질문마다 돈다.
바꾸고 나서 좋았던 건 분명했다. 문서를 갱신하면 벡터만 새로 넣어주면 되고 재학습이 없다. 어느 문서를 근거로 답했는지 사용자한테 그대로 보여줄 수 있다. 모델이 아는 척 지어내는 게 확 줄었다. 파인튜닝 대비 구축·유지 비용도 한참 낮다. 지식은 RAG로 넣고, 정 필요하면 말투 정도만 파인튜닝으로 잡는 식으로 둘을 나눠 쓰는 게 요즘 내 기본값이다.
전체 흐름을 의사코드 열 줄로
개요 편이라도 실체는 있어야 한다. RAG의 질의 경로를 코드로 접으면 이게 전부다 — 이 열 줄의 각 줄이 이후 편들의 주제다.
def answer(question):
q_vec = embed(question) # ③ 임베딩
chunks = vector_db.search(q_vec, k=20) # ④ 검색(+키워드 병행)
top = rerank(question, chunks)[:5] # ④ 리랭킹
prompt = f"""아래 문서에 근거해서만 답하라.
근거가 없으면 '자료에 없다'고 답하라.
{numbered(top)}
질문: {question}""" # ⑤ 생성
return llm(prompt)
# 인덱싱(①②)은 문서 변경 시에만: chunks = split(docs) → embed → 저장
파인튜닝 vs RAG — 언제 무엇을
처음에 내가 헷갈렸던 그 차이를 표로 정리하면 이렇다. 결론부터: 둘은 대체재가 아니라 보완재다.
| 항목 | 파인튜닝 | RAG |
|---|---|---|
| 가르치는 것 | 말투·형식(‘어떻게’) | 지식·사실(‘무엇을’) |
| 지식 갱신 | 재학습 필요(느리고 비쌈) | 문서만 바꾸면 즉시 |
| 출처 표기 | 어렵다 | 쉽다(찾은 문서를 제시) |
| 초기 비용 | 높음 | 낮음 |
그래서 실무에선 말투는 파인튜닝으로, 최신 지식은 RAG로 함께 쓰기도 한다. 내 문제는 ‘지식을 최신으로’였으니 답은 RAG였다.
그래도 만능은 아니다 — 검색이 절반
솔직히 말하면 RAG의 품질은 ‘검색이 맞는 조각을 물어오느냐‘에 달렸다. 엉뚱한 문서를 가져오면 모델도 엉뚱하게 답한다. 그래서 환각이 줄어드는 거지 사라지는 건 아니다. 문서를 어떻게 잘라 저장하고(청킹), 어떻게 찾을지(임베딩·검색)가 이 시리즈 내내 씨름할 진짜 숙제다. 순서는 청크 분할(②) → 임베딩 고르기(③) → 하이브리드 검색과 리랭킹(④) → 문서를 쥐여주고 답하게 하기(⑤)다.
어디에 잘 맞나
사내 위키 Q&A, 제품 매뉴얼 기반 고객지원, 정책·법규처럼 자주 바뀌고 출처가 중요한 도메인에 특히 잘 맞는다. 반대로 순수 창작이나 일반 상식만 필요하면 굳이 RAG가 필요 없다. ‘내 문서에 근거해서 답해야 한다‘가 조건이면 그때 RAG를 떠올리면 된다. 다음 편부터 이 세 걸음을 하나씩 실제로 만들어 본다.
자주 묻는 질문 (FAQ)
RAG랑 파인튜닝은 뭐가 다른가요?
RAG는 외부 지식을 검색해 그때그때 주입하고, 파인튜닝은 모델 가중치를 재학습합니다. 자주 바뀌는 지식·출처 표기가 중요하면 RAG, 말투·형식을 고정하고 싶으면 파인튜닝이 유리하며 둘을 병행하기도 합니다.
RAG를 쓰면 환각(hallucination)이 완전히 사라지나요?
줄어들지만 완전히 사라지진 않습니다. 검색이 엉뚱한 문서를 가져오거나 문서에 없는 내용을 물으면 여전히 지어낼 수 있어요. 그래서 검색 품질과 출처 표시가 핵심입니다.

답글 남기기