1. RAG 등장 배경
RAG(Retrieval-Augmented Generation)는
검색(Retrieval) + 증강(Augmented) + 생성(Generation)을 결합한 기술로,
기존 LLM이 갖고 있던 여러 한계를 보완하기 위해 등장했습니다.
LLM의 주요 한계
- 할루시네이션: 근거 없는 내용을 사실처럼 생성
- 최신 정보 반영 불가
- 특정 도메인 지식 부족
- 출처 불명확 문제
LLM 자체를 다시 학습하거나 사내 데이터를 직접 Fine-tuning하기는 어렵고 비용도 큽니다.
그래서 LLM이 외부 지식베이스에서 관련 정보를 가져온 뒤 생성하도록 하는 방식인 RAG이 필요해졌습니다.
2. RAG 시스템의 동작 원리
일반적인 LLM은 “질문 → 답변”이라는 단순 구조로 동작합니다.
반면 RAG은 중간에 검색 과정이 들어가기 때문에 더 정확하고 근거 기반의 답변이 가능합니다.
RAG의 기본 흐름
- 사용자의 질문을 분석
- 지식베이스에서 관련 문서 검색
- 검색된 문서 중 가장 중요한 정보 선별
- LLM에게 질문 + 관련 정보(컨텍스트)를 함께 전달
- 근거 기반의 응답 생성
핵심 구성 요소 (4가지)
① 지식베이스(Knowledge Base)
문서, PDF, Word, 웹페이지, 데이터베이스 등 다양한 형태의 정보 저장소
② 검색 시스템(Retriever)
질문 의미를 분석하여 관련 정보를 찾아내는 엔진
(Vector search, keyword search, hybrid 등)
③ 필터링 및 압축(Re-ranking & Compression)
검색된 문서 중 관련성이 높은 내용만 선택하고 LLM에 전달하기 적합한 형태로 정리
④ LLM Generator
검색된 정보를 바탕으로 최종 답변 생성
3. RAG 시스템 상세 프로세스
RAG는 크게 사전 단계(지식베이스 구축) 와 실행 단계(질의응답) 로 구성됩니다.
① 사전 단계: 지식베이스 구축
RAG의 성능은 지식베이스 품질에 크게 영향을 받습니다.
1) 데이터 수집
- PDF, 워드, PPT
- 사내 가이드, 기술 문서
- 웹 크롤링 데이터
- DB 데이터 등
2) 문서 분할(Chunking)
문서를 그대로 저장하면 검색 정확도가 떨어지므로 적절한 크기로 나누는 과정이 필요합니다.
Chunk 크기 설정
- 너무 작으면 문맥이 끊김
- 너무 크면 검색 정확도 떨어짐
Overlap(겹침)
문맥을 자연스럽게 이어서 이해시키기 위해 일정 부분 겹쳐서 분리
Chunking 방식
- 일정 길이 기반
- 문단 구조 기반
- 의미 단위 기반(semantic chunking)
Chunking은 RAG 성능의 핵심 요소입니다.
3) 임베딩(Embedding)
문서 내용을 숫자 벡터로 변환하는 과정
임베딩 모델 선택이 검색 정확도를 결정
질문과 문서는 같은 임베딩 모델을 사용해야 함
언어/도메인에 따라 최적 모델이 달라짐
(예: text-embedding-004, bge-m3 등)
4) 벡터 저장소(Vector DB)
문서를 임베딩하여 벡터 형태로 저장
(Pinecone, Weaviate, Chroma 등)
② 실행 단계: 질의응답 처리
질문이 들어오면 다음 과정을 거칩니다.
1) 질문 임베딩
사용자의 질문을 임베딩하여 “의미 기반 검색”이 가능하도록 변환
2) 검색 단계(Retrieval)
검색 방식은 크게 아래 3가지:
- Vector Retrieval – 의미 기반 검색
- Keyword Retrieval – 정확한 문자열 기반 검색(BM25 등)
- Hybrid Retrieval – 두 가지를 결합해 정확도 향상 (기업에서 가장 많이 사용)
추가적으로 최신 RAG에서는 아래 기술이 자주 사용됩니다.
- Multi-query Retrieval: 질문을 여러 형태로 재작성해 검색 품질 향상
- Re-ranking: 검색된 문서를 LLM 또는 전용 모델이 다시 점수 매겨 정렬
- Filtering: 날짜, 태그, 출처 등으로 추가 필터링
3) 문서 선택 및 압축
검색된 문서를 그대로 LLM에 넣기엔 길기 때문에
- 중요도 높은 문서만 선택
- 필요할 경우 요약(compression)
- LLM에 전달하기 위한 구조화 작업 수행
4) 프롬프트 구성
RAG에서는 프롬프트가 매우 중요합니다.
LLM에게 아래를 명시해야 합니다:
- 제공된 컨텍스트를 기반으로만 답하기
- 근거가 없을 경우 “근거 없음”이라고 답하기
- 문서 내용 우선적으로 반영
- 출처를 함께 제공할지 여부
예시 Prompt 구조:
[사용자 질문]
{{query}}
[관련 문서]
{{context}}
위 문서의 정보를 기반으로만 답하세요.
문서에 없는 내용은 추측하지 마세요.5) LLM이 최종 답변 생성
이제 LLM은 검색된 컨텍스트를 바탕으로 더 정확하고 근거 있는 답변을 만들어냅니다.
4. RAG 활용 사례
RAG은 다양한 산업에서 활용됩니다.
① 기업 내부 지식 관리
- 사내 정책·규정 Q&A 챗봇
- 기술 문서 기반 개발자 지원봇
- 보고서 자동 요약·검색 시스템
② 고객 지원(CS)
- 제품 매뉴얼 기반 고객 챗봇
- FAQ 자동 응답 시스템
- 환불/교환 프로세스 안내 시스템
③ 전문 분야
- 법률 문서 기반 법무 지원
- 의료 지침 기반 의료진 보조
- 연구 논문 기반 연구 성과 분석
④ 교육
- 교재 기반 Q&A 시스템
- e-learning 맞춤 리뷰 시스템
5. RAG의 한계
RAG은 강력하지만 완벽하지 않습니다.
① Chunk가 잘못되면 답변도 틀림
너무 작은 chunk → 문맥 부족
너무 큰 chunk → 검색 부정확
② 임베딩 품질이 성능을 크게 좌우
임베딩 모델이 질문/문서와 맞지 않으면 검색 실패
③ 오래된 문서가 검색될 수 있음
정확히 필터링하지 않으면 최신 정보 반영 어려움
④ 검색 결과에 의존
retriever가 잘못된 문서를 반환하면 LLM도 잘못된 답 생성
⑤ 지속적인 업데이트 필요
문서가 바뀌면 재인덱싱 필요
(대규모 문서일 경우 비용 존재)
6. 최신 RAG 확장 기술
기업·연구 기관에서 최근 많이 사용하는 고급 RAG 방식입니다.
① Multi-hop RAG
여러 문서를 연결해 추론
(예: A→B→C 순으로 참조가 필요한 경우)
② Self-RAG
LLM이 스스로 답변의 근거를 검증하고 보완
③ Graph RAG
지식 그래프(KG)를 활용하여 문서 간 관계 기반 검색
④ Agentic RAG
검색 후 LLM이 도구를 사용해 재검색·요약·검증까지 자동 수행
📌 최종 요약
- RAG은 검색 기반 + 생성 기반을 결합한 기술
- LLM의 할루시네이션·도메인 지식 부족 문제 해결
- Chunking, 임베딩, 검색, 재랭킹이 성능의 핵심
- 프롬프트 구성도 RAG 품질에 매우 중요
- 다양한 산업에서 실용적 활용 가능
- 최신 RAG는 Multi-hop / Graph RAG 등으로 발전 중
'개발 > Dify' 카테고리의 다른 글
| [Dify] RAG 실습 (1) - 지식 기반 RAG (0) | 2025.12.10 |
|---|---|
| [Dify] 지식 생성 (1) | 2025.12.10 |
| [Dify] 챗봇 실습 - 변수를 활용한 챗봇 만들기 (0) | 2025.12.09 |
| [Dify] 챗봇 실습 - 프롬프트를 사용한 간단한 챗봇 만들기 (0) | 2025.12.09 |
| [Dify] 프롬프트 작성법 (0) | 2025.12.09 |