RAG가 뭔가요? 개념부터 아키텍처까지 쉽게 설명
들어가며
ChatGPT나 Claude 같은 AI 챗봇을 사용해보면서 이런 아쉬운 경험을 하신 적 있으실 겁니다.
Q: 우리 회사 신입사원 교육 자료 어디 있지?
A: 죄송합니다. 귀하의 회사 내부 정보는 알 수 없습니다
Q: 최신 iPhone 스펙 알려줘
A: 2024년 4월 이후의 정보는 제공할 수 없습니다.
이러한 기존 LLM의 근본적인 한계를 해결하기 위해 등장한 기술이 바로 RAG(Retrieval-Augmented Generation)입니다.
RAG는 단순히 기존에 학습된 데이터에만 의존하는 것이 아니라, 실시간으로 관련 문서를 검색해서 그 정보를 바탕으로 답변을 생성하는 혁신적인 접근법입니다.
마치 시험을 볼 때 교과서뿐만 아니라 참고서와 인터넷 자료까지 활용할 수 있게 된 것과 같습니다.
본 시리즈에서는 RAG의 기본 개념부터 시작해서 실제 운영 가능한 시스템을 직접 구축하는 과정까지, RAG에 대해 학습해보도록 하겠습니다.
1. RAG란?
RAG는 Retrieval-Augmented Generation의 줄임말입니다. 번역하자면 "검색 기반 증강 생성" 이라는 문장입니다.
쉽게 말하면:
- Retrieval(검색): 관련 정보를 찾아오고
- Augmented(증강): 그 정보로 AI를 더 똑똑하게 만들어서
- Generation(생성): 답변을 만들어내는 기술
(RAG = 검색 + AI 답변 생성)
일상 생활로 비유하면?
시험을 본다고 생각해보세요.
기존 AI (ChatGPT): 교과서만 달달 외운 학생
- 교과서에 있는 내용은 잘 알지만
- 최신 뉴스나 내 개인 노트는 모름
RAG AI: 시험장에서 자료 찾아볼 수 있는 학생
- 문제가 나오면 관련 자료부터 찾아보고
- 그 자료를 바탕으로 답변 작성
훨씬 똑똑해 보이죠? 😎
2. 왜 RAG가 필요한가요?
기존 AI의 한계점들
1. 지식 시점의 한계
AI: "2023년 4월까지만 알고 있어요. 그 이후는 몰라요 😅"
2. 개인/기업 정보 부족
AI: "당신 회사 내부 자료는 제가 학습한 적이 없어서..."
3. 할루시네이션 (헛소리) 문제
AI: "확실하지 않지만 아마도... (그럴듯한 거짓말)"
(기존 AI가 답할 수 없는 것들)
RAG로 해결되는 문제들
✅ 최신 정보: 실시간으로 최신 문서 활용 가능
✅ 개인 정보: 내 문서, 회사 자료 활용 가능
✅ 정확성: 실제 문서 기반 답변으로 거짓말 방지
✅ 출처 확인: "이 정보는 어디서 가져왔는지" 알 수 있음
(RAG가 해결하는 문제들)
3. RAG는 어떻게 작동하나요?
간단한 작동 과정
- 사용자: "Git에서 브랜치 만드는 방법 알려줘"
- 시스템: Git 관련 문서들을 찾아봄 🔍
- 시스템: 찾은 문서와 질문을 합쳐서 AI에게 전달
- AI: "문서를 보니 이렇게 하면 됩니다..."
(RAG의 기본 작동 과정)
좀 더 자세한 과정
Step 1: 질문이 들어옴
사용자 질문: "Docker 컨테이너 만드는 방법은?"
Step 2: 관련 문서 검색
시스템: Docker 관련 문서들을 데이터베이스에서 찾아봄
- docker_tutorial.md
- container_guide.pdf
- dockerfile_examples.txt
Step 3: 컨텍스트 구성
AI에게 전달되는 내용:
"다음 문서들을 참고해서 답변해줘:
[문서 내용들...]
질문: Docker 컨테이너 만드는 방법은?"
Step 4: AI가 답변 생성
AI: "제공된 문서에 따르면, Docker 컨테이너는 다음과 같이 만들 수 있습니다..."
4. RAG 시스템 아키텍처
전체적인 구조
RAG 시스템은 크게 두 부분으로 나뉩니다:
🏗️ 준비 단계 (오프라인)
- 문서들을 미리 처리해서 검색 가능하게 만들기
⚡ 실행 단계 (온라인)
- 사용자 질문이 들어왔을 때 검색하고 답변하기
(RAG 시스템의 전체 아키텍처)
준비 단계 (Document Processing Pipeline)
1단계: 문서 수집
📁 문서들 모으기
- PDF 파일
- Word 문서
- 웹페이지
- 텍스트 파일
2단계: 전처리
🧹 문서 정리하기
- 불필요한 내용 제거
- 텍스트만 추출
- 인코딩 통일
3단계: 청킹 (Chunking)
✂️ 문서를 적당한 크기로 나누기
긴 문서 → 여러 개의 작은 덩어리들
(예: 1000자씩 나누기)
4단계: 임베딩 (Embedding)
🔢 텍스트를 숫자로 변환
"안녕하세요" → [0.1, 0.5, 0.2, 0.8, ...]
(컴퓨터가 의미를 이해할 수 있도록)
5단계: 저장
💾 벡터 데이터베이스에 저장
검색할 수 있도록 인덱싱
(문서 처리 과정 상세)
실행 단계 (Query Processing Pipeline)
1단계: 질문 분석
사용자 질문 → 벡터로 변환
"Git 사용법" → [0.3, 0.7, 0.1, 0.9, ...]
2단계: 유사도 검색
질문 벡터와 문서 벡터들을 비교
가장 비슷한 문서들 찾기 (보통 3-5개)
3단계: 컨텍스트 구성
질문 + 찾은 문서들 = 완전한 프롬프트
4단계: AI 모델 호출
완성된 프롬프트를 AI에게 전달
AI가 문서 기반으로 답변 생성
5단계: 결과 반환
답변 + 참고한 문서 출처까지 함께 제공
(실시간 질문 처리 과정)
5. RAG의 핵심 컴포넌트들
🔍 검색기 (Retriever)
- 역할: 질문과 관련된 문서 찾기
- 기술: 벡터 유사도, 키워드 검색 등
- 중요한 이유: 관련 없는 문서를 가져오면 AI가 엉뚱한 답변 생성
📚 지식 베이스 (Knowledge Base)
- 역할: 검색할 문서들을 저장하는 곳
- 기술: 벡터 데이터베이스 (Chroma, Pinecone 등)
- 중요한 이유: 빠르고 정확한 검색의 기반
🤖 생성기 (Generator)
- 역할: 검색된 문서를 바탕으로 자연어 답변 생성
- 기술: GPT, Claude, Llama 등의 대화형 AI
- 중요한 이유: 문서를 사람이 이해하기 쉬운 형태로 가공
🎯 프롬프트 엔지니어링
- 역할: AI에게 어떻게 답변해달라고 요청할지 설계
- 예시: "다음 문서를 참고해서 친절하게 설명해줘"
- 중요한 이유: 같은 정보라도 어떻게 질문하느냐에 따라 답변 품질이 천차만별
(RAG 시스템의 주요 구성 요소들)
6. RAG vs 다른 접근법 비교
Fine-tuning과의 차이점
구분 | Fine-tuning | RAG |
---|---|---|
비용 | 높음 💸💸💸 | 보통 💸 |
시간 | 오래 걸림 ⏰⏰⏰ | 빠름 ⏰ |
업데이트 | 재훈련 필요 😰 | 문서만 추가하면 OK 😎 |
투명성 | 블랙박스 🔒 | 출처 확인 가능 📖 |
일반 검색엔진과의 차이점
구분 | 검색엔진 | RAG |
---|---|---|
결과 | 링크 목록 📄📄📄 | 자연어 답변 💬 |
편의성 | 직접 찾아봐야 함 😅 | 바로 답변 제공 👌 |
정확성 | 사용자가 판단 🤷♂️ | AI가 종합 정리 🤖 |
마무리
이번 1편에서는 RAG가 무엇인지, 왜 필요한지, 어떻게 작동하는지 알아봤습니다.
핵심을 정리하면:
- RAG = 검색 + AI 답변 생성
- 기존 AI의 한계(최신 정보 부족, 개인 정보 접근 불가)를 해결
- 문서 기반 답변으로 더 정확하고 신뢰할 수 있는 결과 제공
다음 2편에서는 RAG 구현의 핵심 도구인 LangChain에 대해 알아보겠습니다. LangChain이 뭔지, 왜 필요한지, 어떻게 사용하는지 차근차근 설명해드릴게요!
RAG 시리즈, 재미있게 보고 계신가요? 궁금한 점이 있으시면 댓글로 언제든 질문해주세요! 😊
다음편도 기대해주세요~ 🚀