📌 RAG(Retrieval-Augmented Generation)란?
RAG는 LLM의 응답 정확도를 높이기 위해 모델이 학습한 내부 지식뿐만 아니라 외부 데이터베이스에서 관련 정보를 검색하여 함께 활용하는 방식이다.
LLM은 대규모 텍스트 데이터를 사전학습하여 언어 이해와 생성 능력을 갖추고 있지만, 아래와 같은 단점이 한계가 존재한다.
- 학습 이후에 발생한 최신 정보나 특정 조직·서비스 내부에만 존재하는 도메인 지식은 알지 못함
- 또한 학습 데이터에 없는 내용에 대해 그럴듯하지만 사실과 다른 답변을 생성하는 Hallucination 문제가 발생할 수 있음
RAG는 이러한 한계를 보완하기 위해 유사 정보 검색(Retrieval)과 텍스트 생성(Generation)을 결합한 구조를 사용하며, LLM에 외부 지식 베이스를 연결하여 모델의 생성 능력과 사실 관계 파악 능력을 향상시키는 기술이다.
사용자의 질문이 입력되면 1️⃣먼저 질문과 관련된 문서를 벡터 데이터베이스나 검색 시스템에서 찾고, 2️⃣그 결과를 LLM의 입력 프롬프트에 함께 제공하여 답변을 생성한다. 즉, 모델이 자체적으로 모든 지식을 기억하도록 만드는 대신, 필요한 정보를 외부 지식 저장소에서 찾아 활용하도록 하는 방식이다.
따라서 RAG의 기본 형태를 정리해보면 “질문 → 관련 문서 검색 → 검색 결과를 기반으로 답변 생성”의 흐름으로 구성된다.
📌 RAG 동작 과정
1. RAG 구성요소
RAG는 크게 지식 저장소, 임베딩 모델, 검색기, 생성기로 구성되며 각 역할은 아래와 같다.
- 지식 저장소
- 모델이 참고할 외부 데이터를 저장하는 공간
- PDF, 문서, 뉴스, 위키 등 다양한 형태의 텍스트를 저장할 수 있으며, 일반적으로 검색 효율을 높이기 위해 Vector DB 형태로 변환
- 임베딩 모델
- 텍스트를 벡터 형태의 숫자로 변환하는 모델
- 질문과 문서를 동일한 벡터 공간에 표현하여 의미적으로 유사한 문서를 찾을 수 있도록 하며, 같은 의미의 문장은 단어가 완전히 일치하지 않아도 가까운 벡터 값을 가지게 됨
- 검색기
- 사용자의 질문과 의미적으로 유사한 문서를 지식 저장소에서 찾아오는 역할
- 일반적으로 코사인 유사도와 같은 벡터 유사도 계산을 사용
- 필요에 따라 BM25 같은 키워드 기반 검색이나, 검색 결과를 재정렬하는 Reranker 모델을 함께 사용
- 생성기
- 검색된 문서를 참고하여 최종 답변을 생성하는 언어 모델(⇒ GPT와 같은 LLM이 여기에 해당)
- 이때 검색된 문서를 프롬프트에 함께 전달하여, 모델이 해당 내용을 기반으로 답변하도록 유도
2. RAG 동작 과정

- 문서 수집
- 외부 지식으로 사용할 데이터를 준비
- 예를 들어 뉴스 기사, 기술 문서, 사내 매뉴얼, PDF 파일 등이 해당됨
- 문서 분할(Chunking)
- 문서를 일정 길이의 단위(chunk)로 나눔
- LLM은 한 번에 처리할 수 있는 입력 길이가 제한되어 있기 때문에, 긴 문서를 여러 개의 작은 텍스트 조각으로 나누어 저장
- 임베딩 생성
- 각 chunk를 임베딩 모델을 이용해 벡터로 변환
- 이렇게 변환된 벡터는 문장의 의미 정보를 포함
- 벡터 데이터베이스 저장
- 생성된 임베딩 벡터를 벡터 DB에 저장
- 이후 질문이 들어오면 이 벡터들과 비교하여 가장 유사한 문서를 빠르게 찾을 수 있음
- 질문 임베딩
- 사용자의 질문 역시 동일한 임베딩 모델을 사용하여 벡터로 변환
- 유사 문서 검색
- 질문 벡터와 가장 가까운 벡터를 가진 문서(chunk)를 검색
- 일반적으로 상위 k개의 문서를 선택(top-k retrieval)
- 프롬프트 구성
- 검색된 문서를 질문과 함께 LLM의 입력 프롬프트에 포함
- 이를 통해 모델이 외부 지식을 참고하여 답변하도록 만듦
- 답변 생성
- LLM이 검색된 문서를 기반으로 최종 답변을 생성
- 이 과정에서 모델은 자신의 사전학습 지식과 검색된 문서를 함께 활용
💡마치며
RAG의 기본 개념과 전체 동작 과정을 간단히 정리해보았습니다.
다음 글에서는 직접 RAG를 구현하는 과정과 예시 코드를 통해 실제로 어떻게 동작하는지 정리해보겠습니다.