RAG (Retrieval-Augmented Generation)
외부 지식 베이스에서 관련 정보를 검색하여 LLM의 응답 정확도를 70%에서 95% 이상으로 향상시키는 AI 아키텍처 패턴. 할루시네이션을 85% 감소시키고 최신 정보 기반 응답을 가능하게 합니다.
1. Executive Summary
2. RAG의 정의와 배경
3. RAG 아키텍처 상세
4. 핵심 구성요소
5. Chunking 전략
6. Embedding과 Vector Database
7. 검색 전략 (Retrieval)
8. Advanced RAG 기법
9. AWS 기반 구현
10. 평가 및 최적화
11. 엔터프라이즈 활용 사례
12. 도전과제와 해결책
13. 실무 구현 가이드
14. 참고 자료
1. Executive Summary
RAG (Retrieval-Augmented Generation)는 2020년 Facebook AI Research에서 처음 제안된 기술로, LLM의 가장 큰 한계인 할루시네이션(환각)과지식 단절(knowledge cutoff) 문제를 해결합니다. 외부 지식 베이스에서 관련 정보를 검색하여 LLM에 컨텍스트로 제공함으로써, 정확하고 최신의 응답을 생성할 수 있게 합니다.
95%+
응답 정확도 향상
(기존 70% 대비)
85%
할루시네이션 감소
90%
Fine-tuning 대비
비용 절감
<100ms
검색 응답 시간
(최적화 시)
핵심 요약 (Key Takeaways)
- RAG = Retrieval(검색) + Augmented(증강) + Generation(생성)
- Fine-tuning 없이 도메인 특화 지식을 LLM에 제공
- 실시간 정보 업데이트 가능 (재학습 불필요)
- 출처 추적이 가능하여 응답 검증 용이
- 엔터프라이즈 AI 애플리케이션의 사실상 표준
2. RAG의 정의와 배경
“Retrieval-Augmented Generation (RAG) is a technique that enables large language models to retrieve and incorporate new information from external knowledge sources before generating responses.”
RAG는 정보 검색(Information Retrieval)과 텍스트 생성(Text Generation)을 결합한 하이브리드 AI 아키텍처입니다. LLM이 학습 데이터에만 의존하는 대신, 외부 지식 베이스에서 관련 정보를 동적으로 검색하여 응답 생성에 활용합니다.
Retrieval
쿼리와 관련된 문서/청크를 벡터 DB에서 검색
Augmented
검색된 정보를 LLM 프롬프트에 컨텍스트로 추가
Generation
증강된 컨텍스트를 기반으로 정확한 응답 생성
할루시네이션 (Hallucination)
LLM이 사실이 아닌 정보를 자신있게 생성하는 현상. RAG는 검증된 소스에서 정보를 가져와 이 문제를 85% 감소시킵니다.
지식 단절 (Knowledge Cutoff)
LLM은 학습 시점 이후의 정보를 알지 못함. RAG는 실시간으로 최신 정보를 검색하여 제공합니다.
도메인 지식 부족
일반 LLM은 특정 기업/산업의 내부 지식이 없음. RAG는 사내 문서를 지식 베이스로 활용합니다.
출처 불명확
LLM 응답의 근거를 확인하기 어려움. RAG는 검색된 문서를 출처로 제공하여 검증 가능합니다.
| 구분 | RAG | Fine-tuning | Prompt Engineering |
|---|---|---|---|
| 비용 | 중간 (인프라 비용) | 높음 (GPU, 학습 시간) | 낮음 |
| 지식 업데이트 | 실시간 가능 | 재학습 필요 | 프롬프트 수정 |
| 정확도 | 높음 (95%+) | 높음 | 제한적 |
| 출처 추적 | 가능 | 불가능 | 불가능 |
| 구현 복잡도 | 중간 | 높음 | 낮음 |
| 적합한 상황 | 동적 지식, 문서 QA | 특정 태스크 최적화 | 간단한 커스터마이징 |
3. RAG 아키텍처 상세
┌─────────────────────────────────────────────────────────────────────────────┐ │ RAG PIPELINE ARCHITECTURE │ ├─────────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ INDEXING PIPELINE (Offline) │ │ │ │ │ │ │ │ Documents ──► Chunking ──► Embedding ──► Vector Store │ │ │ │ (PDF, HTML, (Split) (Vectorize) (Index) │ │ │ │ Markdown) │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ RETRIEVAL PIPELINE (Online) │ │ │ │ │ │ │ │ User Query ──► Query ──► Vector ──► Relevant │ │ │ │ Embedding Search Chunks │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │ GENERATION PIPELINE │ │ │ │ │ │ │ │ Relevant ──► Prompt ──► LLM ──► Response │ │ │ │ Chunks Construction Generation │ │ │ │ │ │ │ │ ┌─────────────────────────────────────────────────────────────┐ │ │ │ │ │ System: You are a helpful assistant. │ │ │ │ │ │ Context: [Retrieved chunks here] │ │ │ │ │ │ Question: [User query] │ │ │ │ │ │ Answer based on the context above. │ │ │ │ │ └─────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────────────┘
Naive RAG
기본적인 RAG 구현으로, 단순한 파이프라인을 따릅니다.
- 1. 문서를 고정 크기로 청킹
- 2. 청크를 임베딩하여 벡터 DB 저장
- 3. 쿼리 임베딩 후 유사도 검색
- 4. Top-K 청크를 LLM에 전달
- 5. 응답 생성
Advanced RAG
다양한 최적화 기법을 적용한 고급 RAG 구현입니다.
- • Pre-retrieval: Query expansion, HyDE
- • Retrieval: Hybrid search, Reranking
- • Post-retrieval: Context compression
- • Chunking: Semantic, Hierarchical
- • Indexing: Multi-index, Graph RAG
4. 핵심 구성요소
다양한 형식의 문서를 로드하고 텍스트를 추출하는 컴포넌트입니다.
문서를 적절한 크기의 청크로 분할하는 컴포넌트입니다.
텍스트를 고차원 벡터로 변환하는 모델입니다.
벡터를 저장하고 유사도 검색을 수행하는 데이터베이스입니다.
5. Chunking 전략
Chunking은 RAG 성능에 가장 큰 영향을 미치는 요소 중 하나입니다. 잘못된 청킹은 컨텍스트 손실, 검색 품질 저하, 할루시네이션 증가로 이어집니다.
Too Small
컨텍스트 손실, 의미 파편화
Just Right
완전한 의미 단위, 효율적 검색
Too Large
노이즈 증가, 토큰 낭비
| 전략 | 설명 | 장점 | 단점 | 적합한 상황 |
|---|---|---|---|---|
| Fixed-size | 고정 문자/토큰 수로 분할 | 구현 간단 | 의미 단위 무시 | 균일한 텍스트 |
| Recursive | 구분자 계층으로 분할 | 구조 보존 | 설정 필요 | 일반 문서 |
| Semantic | 의미 유사도 기반 분할 | 의미 보존 | 계산 비용 | 복잡한 문서 |
| Document-based | 문서 구조 기반 (섹션, 페이지) | 논리적 단위 | 크기 불균일 | 구조화된 문서 |
| Agentic | LLM이 최적 분할점 결정 | 최고 품질 | 높은 비용 | 고가치 문서 |
기술 문서 / API 문서
- • Chunk size: 1000-1500 토큰
- • Overlap: 200 토큰 (20%)
- • 전략: Document-based (섹션 단위)
- • 메타데이터: 섹션 제목, 버전
FAQ / Q&A
- • Chunk size: 300-500 토큰
- • Overlap: 50 토큰
- • 전략: Q&A 쌍 단위
- • 메타데이터: 카테고리, 태그
법률 / 계약서
- • Chunk size: 800-1200 토큰
- • Overlap: 150 토큰
- • 전략: 조항/섹션 단위
- • 메타데이터: 조항 번호, 날짜
대화 / 채팅 로그
- • Chunk size: 500-800 토큰
- • Overlap: 100 토큰
- • 전략: 대화 턴 단위
- • 메타데이터: 화자, 타임스탬프
6. Embedding과 Vector Database
| 모델 | 차원 | Max Tokens | MTEB Score | 비용 |
|---|---|---|---|---|
| OpenAI text-embedding-3-large | 3072 | 8191 | 64.6 | $0.13/1M tokens |
| OpenAI text-embedding-3-small | 1536 | 8191 | 62.3 | $0.02/1M tokens |
| Amazon Titan Embeddings G1 | 1536 | 8192 | - | $0.02/1M tokens |
| Cohere embed-v3 | 1024 | 512 | 64.5 | $0.10/1M tokens |
| BGE-large-en-v1.5 (오픈소스) | 1024 | 512 | 64.2 | 무료 (셀프호스팅) |
Amazon OpenSearch Serverless
AWS 네이티브, 완전 관리형
- ✓ Bedrock Knowledge Bases 통합
- ✓ 하이브리드 검색 지원
- ✓ 자동 스케일링
- △ 비용이 높을 수 있음
Pinecone
가장 인기 있는 관리형 벡터 DB
- ✓ 빠른 쿼리 성능
- ✓ 간편한 설정
- ✓ 메타데이터 필터링
- △ 벤더 종속
PostgreSQL + pgvector
기존 인프라 활용
- ✓ 익숙한 SQL 인터페이스
- ✓ 트랜잭션 지원
- ✓ Aurora 호환
- △ 대규모 시 성능 제한
Chroma
오픈소스, 개발자 친화적
- ✓ 로컬 개발에 최적
- ✓ LangChain 통합
- ✓ 무료
- △ 프로덕션 스케일 제한
Weaviate
GraphQL API, 멀티모달
- ✓ 하이브리드 검색 내장
- ✓ 이미지/텍스트 통합
- ✓ 클라우드/셀프호스팅
- △ 학습 곡선
Qdrant
Rust 기반, 고성능
- ✓ 빠른 검색 속도
- ✓ 필터링 성능 우수
- ✓ 오픈소스
- △ 커뮤니티 규모
7. 검색 전략 (Retrieval)
Sparse Retrieval (BM25)
키워드 기반 전통적 검색 방식
- ✓ 정확한 키워드 매칭
- ✓ 빠른 속도
- ✓ 해석 가능
- ✗ 의미적 유사성 미반영
Dense Retrieval (Vector)
임베딩 기반 의미적 검색
- ✓ 의미적 유사성 포착
- ✓ 동의어/유사 표현 처리
- ✓ 다국어 지원
- ✗ 정확한 키워드 놓칠 수 있음
Hybrid Search
Sparse + Dense 결합 (권장)
- ✓ 키워드 + 의미 모두 포착
- ✓ 최고의 검색 품질
- ✓ 다양한 쿼리 유형 대응
- △ 구현 복잡도 증가
초기 검색 결과를 더 정교한 모델로 재정렬하여 관련성을 높이는 기법입니다. 검색 정확도를 10-20% 향상시킬 수 있습니다.
Cross-Encoder Reranking
쿼리와 문서를 함께 인코딩하여 관련성 점수 계산
- • Cohere Rerank
- • BGE Reranker
- • ms-marco-MiniLM
LLM-based Reranking
LLM을 사용하여 문서 관련성 평가
- • 높은 정확도
- • 비용이 높음
- • 지연 시간 증가
8. Advanced RAG 기법
Query Expansion
원본 쿼리에 동의어, 관련 용어를 추가하여 검색 범위 확장
HyDE (Hypothetical Document Embeddings)
LLM으로 가상의 답변을 생성하고, 그 임베딩으로 검색
Multi-Query
하나의 쿼리를 여러 관점으로 재작성하여 다양한 결과 수집
Context Compression
검색된 청크에서 관련 부분만 추출하여 노이즈 제거
Parent Document Retrieval
작은 청크로 검색하고, 더 큰 부모 문서를 컨텍스트로 제공
Sentence Window Retrieval
매칭된 문장 주변의 문장들을 함께 포함
Self-RAG
LLM이 스스로 검색 필요성을 판단하고, 검색 결과의 관련성을 평가하여 선택적으로 사용
Corrective RAG (CRAG)
검색 결과가 불충분하면 웹 검색 등 대체 소스로 보완하는 자기 교정 방식
Graph RAG
지식 그래프를 활용하여 엔티티 간 관계를 기반으로 검색 및 추론
Agentic RAG
AI 에이전트가 검색 전략을 동적으로 결정하고 다단계 검색 수행
Modular RAG
검색, 재정렬, 생성 등 각 모듈을 독립적으로 최적화하고 조합
Multi-Modal RAG
텍스트뿐 아니라 이미지, 테이블, 차트 등 다양한 형식의 데이터 검색
9. AWS 기반 구현
Amazon Bedrock Knowledge Bases는 완전 관리형 RAG 서비스로, 복잡한 파이프라인 구축 없이 RAG를 구현할 수 있습니다.
┌─────────────────────────────────────────────────────────────────────┐ │ Amazon Bedrock Knowledge Bases Architecture │ ├─────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ S3 │────►│ Bedrock │────►│ OpenSearch │ │ │ │ (Documents)│ │ Knowledge │ │ Serverless │ │ │ │ │ │ Base │ │ (Vector Store) │ │ │ └─────────────┘ └──────┬──────┘ └─────────────────────┘ │ │ │ │ │ │ Retrieve & Generate │ │ ▼ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ User │────►│ Bedrock │────►│ Foundation │ │ │ │ Query │ │ Agent │ │ Model │ │ │ │ │ │ │ │ (Claude, Nova) │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────────┘
지원 데이터 소스
- • Amazon S3 (PDF, TXT, MD, HTML, DOCX)
- • Confluence
- • SharePoint
- • Salesforce
- • Web Crawler
지원 Vector Store
- • Amazon OpenSearch Serverless
- • Amazon Aurora PostgreSQL (pgvector)
- • Pinecone
- • Redis Enterprise Cloud
- • MongoDB Atlas
import * as bedrock from '@aws-cdk/aws-bedrock-alpha';
// Knowledge Base 생성
const knowledgeBase = new bedrock.KnowledgeBase(this, 'DocKB', {
embeddingsModel: bedrock.BedrockFoundationModel.TITAN_EMBED_TEXT_V2_1024,
instruction: 'Use this knowledge base to answer questions about our products.',
});
// S3 데이터 소스 연결
const dataSource = new bedrock.S3DataSource(this, 'DocsSource', {
knowledgeBase,
bucket: documentsBucket,
inclusionPrefixes: ['docs/'],
chunkingStrategy: bedrock.ChunkingStrategy.SEMANTIC,
});
// Agent에 Knowledge Base 연결
const agent = new bedrock.Agent(this, 'SupportAgent', {
foundationModel: bedrock.BedrockFoundationModel.ANTHROPIC_CLAUDE_3_5_SONNET,
instruction: 'You are a helpful support agent.',
knowledgeBases: [knowledgeBase],
});10. 평가 및 최적화
Retrieval 평가
Recall@K
상위 K개 결과 중 관련 문서 비율. 목표: 0.8+
MRR (Mean Reciprocal Rank)
첫 번째 관련 문서의 순위 역수 평균. 목표: 0.7+
NDCG (Normalized DCG)
순위를 고려한 관련성 점수. 목표: 0.75+
Generation 평가
Faithfulness
응답이 검색된 컨텍스트에 충실한 정도. 목표: 0.9+
Answer Relevancy
응답이 질문에 관련된 정도. 목표: 0.85+
Context Precision
검색된 컨텍스트의 정확도. 목표: 0.8+
RAGAS
RAG 파이프라인 전용 평가 프레임워크
오픈소스LangSmith
LangChain 통합 모니터링 및 평가
상용Langfuse
오픈소스 LLM 관찰성 플랫폼
오픈소스11. 엔터프라이즈 활용 사례
FAQ, 제품 매뉴얼, 정책 문서를 기반으로 고객 문의에 정확하게 응답
성과: 자동 해결률 65-80%, 응답 정확도 92%+
사내 문서, 위키, 정책을 검색하여 직원 질문에 답변
성과: 정보 검색 시간 70% 단축
법률 문서, 규정, 계약서를 분석하여 관련 조항 검색 및 해석
성과: 문서 검토 시간 60% 단축
API 문서, 코드베이스, 아키텍처 문서 기반 개발자 지원
성과: 개발자 온보딩 시간 50% 단축
12. 도전과제와 해결책
검색 품질 저하
관련 없는 청크가 검색되어 응답 품질 저하
컨텍스트 윈도우 제한
많은 청크를 포함하면 토큰 한도 초과
지연 시간 증가
검색 + 생성으로 응답 시간이 길어짐
데이터 신선도
문서 업데이트가 인덱스에 반영되지 않음
13. 실무 구현 가이드
데이터 준비
문서 수집, 정제, 메타데이터 추출
청킹 전략 결정
문서 유형에 맞는 청킹 방식 선택
임베딩 및 인덱싱
벡터 DB 선택, 임베딩 모델 설정
검색 파이프라인 구축
Hybrid search, Reranking 적용
프롬프트 엔지니어링
컨텍스트 주입, 응답 형식 정의
평가 및 최적화
RAGAS 등으로 성능 측정, 반복 개선
프로덕션 배포
모니터링, 로깅, 피드백 루프 구축
14. 참고 자료
공식 문서
- • Amazon Bedrock Knowledge Bases
- • LangChain RAG Documentation
- • LlamaIndex RAG Guide
- • OpenAI Embeddings Guide
학습 리소스
- • DeepLearning.AI: Building RAG Applications
- • AWS Skill Builder: Bedrock RAG
- • Pinecone Learning Center
- • RAGAS Documentation
RAG는 LLM의 한계를 극복하고 정확하고 최신의 응답을 제공하는 핵심 기술입니다. 적절한 청킹, 임베딩, 검색 전략을 통해 95% 이상의 정확도와 85% 할루시네이션 감소를 달성할 수 있습니다.
핵심 요약
- • 정의: 검색 + 증강 + 생성의 하이브리드 아키텍처
- • 효과: 정확도 95%+, 할루시네이션 85% 감소
- • 핵심 요소: Chunking, Embedding, Vector DB, Retrieval
- • 고급 기법: Hybrid Search, Reranking, Query Expansion
- • AWS: Bedrock Knowledge Bases로 간편 구현
Best Practices
- 1. 문서 유형에 맞는 청킹 전략 선택
- 2. Hybrid Search + Reranking 적용
- 3. RAGAS 등으로 지속적 평가
- 4. 메타데이터 필터링 활용
- 5. 캐싱으로 지연 시간 최적화
“RAG는 엔터프라이즈 AI 애플리케이션의 사실상 표준이 되었습니다. Fine-tuning 없이 도메인 지식을 LLM에 제공하는 가장 효율적인 방법입니다.”