Ch 9. 왜 RAG가 필요한가¶
이 챕터에서 배우는 것
- LLM이 학습한 것만 안다 는 근본 한계 — 지식 컷오프 · 프라이빗 데이터 · 최신성
- RAG (Retrieval-Augmented Generation, 검색 증강 생성) 의 개념과 필요 이유
- LLM 단독 응답 vs LLM + RAG 응답 직접 비교
- 파인튜닝 vs RAG — 언제 뭘 선택하나
- RAG 도입 전 반드시 생각해야 할 3가지 함정
1. 개념 — LLM 은 학습한 것만 안다¶
Claude · GPT 모델은 학습 시점까지의 데이터 로만 만들어집니다. 그래서 아래 셋은 원리적으로 모릅니다.
| 모르는 것 | 왜 |
|---|---|
| 컷오프 이후 정보 | 학습 데이터에 없음 (예: 오늘 주가) |
| 프라이빗 데이터 | 공개 인터넷에 없는 것 (우리 회사 문서·DB) |
| 자주 바뀌는 데이터 | 모델 재학습 주기 ≫ 데이터 변경 주기 (재고·이벤트·정책) |
이 문제는 프롬프트를 아무리 잘 써도 안 풀립니다. Part 2 Ch 5 "모르면 모른다고" 지시는 거짓말 억제 에 도움되지만, 정답을 알려주진 않아요.
핵심 비유
"모델이 학습한 건 5년 전에 읽은 책. 오늘 뉴스·우리 회사 매뉴얼은 읽은 적 없음."
→ 읽을 거리를 그때그때 손에 쥐여주자 = RAG.
2. RAG 는 한 문장¶
RAG = 질문과 관련된 문서를 먼저 찾아서, 그 문서를 프롬프트에 넣어 답하게 하는 기법.
그게 전부입니다. 복잡해 보이는 건 "문서를 찾는 방법" 이 정교해지는 부분 (Part 3의 나머지 챕터).
RAG 의 3가지 이득:
- 최신성 — 문서 업데이트만 하면 모델 재학습 없이 최신 정보 반영
- 프라이빗 지식 활용 — 회사 정책·매뉴얼·코드베이스 기반 답변
- 추적 가능성 (citation) — 답변이 어느 문서의 어느 부분을 근거로 했는지 표시 가능
3. 어디에 쓰이는가¶
대표 유즈케이스¶
| 유즈케이스 | 검색 대상 | 예시 |
|---|---|---|
| 고객 지원 봇 | FAQ · 정책 문서 | "환불 정책이 어떻게 되나요?" → 정책 A4의 3.2절 |
| 사내 지식 검색 | 위키 · 회의록 · 온보딩 자료 | "신규 입사자 온보딩 프로세스는?" |
| 제품 메뉴얼 QA | 제품 가이드 | "X 기능 설정 방법?" |
| 코드베이스 QA | 소스코드 + 커밋 히스토리 | "결제 모듈의 인증 로직 어디 있나?" |
| 법률·의료 지원 | 판례·논문 (출처 필수) | "최근 판례에 따르면..." |
Part 1 Ch 3의 8블록에서의 위치¶
Part 1 Ch 3에서 본 8블록 중 "검색(Retrieve)" 이 바로 RAG의 자리. Part 3 전체는 이 블록을 어떻게 만드나 를 다룹니다.
4. 최소 예제 — 같은 질문, 두 경로 직접 비교¶
- 가장 단순한 RAG — 관련 문서를 프롬프트에 통째로 주입. 문서가 작으면 이 방식도 유효.
관찰 포인트:
- 1번 응답은 일반론 ("2주 전 신청…" 같은 흔한 회사 규정 추측) 또는 거절 ("회사마다 달라서 모릅니다")
- 2번 응답은 문서 그대로 — "최소 2주 전 신청, 팀장 승인 필요 · 5일 이상은 임원 결재"
이 예제는 문서가 작을 때 만 작동. 문서가 수백 페이지면 컨텍스트 초과 → Part 3의 나머지 챕터가 검색 으로 "관련 부분만 찾아내는 법" 을 가르칩니다.
5. 실전 튜토리얼¶
5.1 지식 컷오프 실험¶
모델이 뭘 모르는지 확인하는 게 RAG 설계의 출발:
대개:
- 1, 2, 3번 → "모른다" 또는 부정확한 추측 (hallucination 위험)
- 4번 → 잘 답함 (공개된 학습 데이터)
1, 2, 3번이 RAG 후보 입니다.
5.2 Fine-tune 이 필요한 것과 구분하기¶
RAG 와 파인튜닝은 서로 다른 문제 를 푸는 도구:
| RAG | Fine-tune (Part 7) | |
|---|---|---|
| 해결하는 문제 | 지식 부족 | 행동·스타일 부족 |
| 예시 | "우리 회사 정책은?" | "우리 회사 톤으로 답하기" |
| 변경 주기 | 수시 (문서만 갱신) | 드물게 (재학습 필요) |
| 비용 | 검색 인프라 | GPU · 데이터 준비 |
| 추적 가능성 | 높음 (citation) | 낮음 |
| 초기 도입 난이도 | 낮음 | 높음 |
실전 권장 순서: 프롬프트 → RAG → 파인튜닝. 대부분의 문제는 RAG 에서 해결되고, 파인튜닝은 RAG 로 도저히 안 되는 말투·포맷·특화 분류에만 씁니다.
5.3 RAG 파이프라인 미리보기¶
Part 3 앞으로의 내용을 한눈에:
| Ch | 내용 | 해결하는 문제 |
|---|---|---|
| 9 (지금) | 왜 RAG 인가 | 필요성 · 판단 |
| 10 | 임베딩과 벡터 검색 기초 | 문서를 "찾는" 수학적 기반 |
| 11 | RAG 파이프라인 전체 흐름 | end-to-end 구현 |
| 12 | 검색 품질 개선 | hybrid · rerank |
| 13 | Advanced RAG (HyDE · GraphRAG 등) | 복잡한 케이스 |
| 14 | LangChain 실전 + 멀티모달 | 프로덕션 · PDF·이미지 |
지금 챕터는 "RAG 를 할지 말지"의 판단. 할 결정이 섰다면 Ch 10부터.
6. 자주 깨지는 포인트¶
실수 1. 'RAG 면 hallucination 0' 미신
문서에 정답이 있어도 모델은 엉뚱한 재해석 · 검색 결과 + 자기 추측 섞기 가능. RAG 는 발생률을 낮출 뿐 완전 방지 불가.
대응: (1) 시스템 프롬프트에 "문서 근거가 없으면 모른다고 답하라", (2) Part 4의 LLM-as-Judge 로 검증, (3) citation 강제 → 사용자가 원문 확인.
실수 2. 검색 실패를 무시
사용자 질문이 문서 코퍼스 밖이면 검색 결과가 0 또는 무관한 문서만 옴. 이걸 그대로 프롬프트에 넣으면 모델이 무관한 문서 기반으로 추측.
대응: 검색 점수 임계치 아래면 "정보 부족 - 담당자에게 연결" 플로우. Part 1 Ch 3의 휴먼 핸드오프 블록.
실수 3. 문서에 잘못된 내용이 있으면 그대로 전파
RAG 는 문서의 진실성을 검증하지 않음. 낡은 매뉴얼 · 잘못 작성된 FAQ → 틀린 답을 자신 있게 뱉음.
대응: (1) 문서 큐레이션·버전 관리, (2) 답변에 "문서 최종 수정일" 함께 표시, (3) 주기적 평가셋 (Part 4) 으로 오답 발견·수정.
실수 4. 모든 문제를 RAG 로 풀려고 함
"우리 회사 톤으로 답해줘" 같은 행동 문제는 RAG 로 안 풀림. 톤·포맷·복잡한 분류는 프롬프트 + 파인튜닝 영역.
대응: §5.2 의 결정 트리. RAG 는 지식 문제 전용.
7. 운영 시 체크할 점¶
- 지식 컷오프 감사 — 분기별 "모델이 모를 만한 최신 질문" 20개로 확인
- 문서 최신성 — 각 문서의 "최종 수정일" 메타데이터 필수
- 검색 실패 로그 — "검색 결과 0건" 케이스를 별도 수집 → 문서 부족 영역 식별
- hallucination 모니터링 — 사용자 피드백 (👎) 중 "사실 오류" 카테고리 추적
- citation 의무화 — 모든 답변에 출처 문서명·섹션 포함
- 민감 문서 분리 — PII·내부 기밀 문서는 RAG 코퍼스에서 별도 관리 (권한 체크)
- RAG vs 파인튜닝 분기별 재평가 — "이걸 RAG 로 계속 할 가치가 있나"
8. 확인 문제¶
- §4
llm_vs_rag_compare.py를 내 회사 문서 (또는 임의 문서) 로 돌려 응답 차이 한 문단 정리 - §5.1 지식 컷오프 탐침을 5가지 질문으로 실행. 어떤 질문이 "모른다"로, 어떤 질문이 "추측"으로 오는지 분류
- §5.2 의 결정 트리로 내 프로젝트의 3가지 문제를 RAG / Fine-tune 중 어디로 보낼지 정하기
- RAG 로 "무관한 문서"를 일부러 주입해 모델이 어떻게 반응하는지 관찰. "문서 근거가 없으면 모른다" 시스템 프롬프트의 효과 측정
- "RAG로 이걸 풀면 안 되는" 케이스를 1개 찾아 파인튜닝·프롬프트 중 뭐가 맞는지 논거 쓰기
9. 원전 · 더 읽을 거리¶
- RAG 원조 논문: Lewis et al. (2020), "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks"
- Stanford CME 295 Lec 7 — RAG · function calling · ReAct. 프로젝트
_research/stanford-cme295.md요약 - Anthropic: "Adding context with RAG" (docs.anthropic.com)
- LangChain RAG Tutorial: python.langchain.com/docs/tutorials/rag
다음 챕터 → Ch 10. 임베딩과 벡터 검색 기초
"관련 문서를 찾는" 이 어떻게 수학적으로 되는가 — 임베딩 · 코사인 유사도 · 벡터DB.