본문 바로가기
Data Science/LLM & GenAI

RAG란? (RAG 개념과 활용)

by En.Lee 2025. 1. 17.

 

RAG(Retrieval-Augmented Generation)는 LLM이 외부 지식 베이스나 문서 저장소에서 질문과 관련된 정보를 검색하고, 이를 프롬프트에 포함시켜 더 정확하고 신뢰성 있는 답변을 생성하는 기술입니다. 이 기술은 LLM의 학습 데이터에 포함되지 않은 최신 정보나 도메인 특화 지식을 활용할 수 있게 해주며, 할루시네이션(Hallucination) 현상을 줄이는 데 도움을 줍니다.


RAG의 개념과 특징

1. RAG 개념이 생기게된 이유

ChatGPT-3 모델이 큰 관심을 받으면서 사용자들이 다양한 결과물을 공유하던 시기가 있었습니다. 그중 "세종대왕 맥북프로 던짐 사건"[1]은 한동안 인터넷에서 화제가 된 밈이었죠. (세종대왕 맥북 던짐 사건 나무위키)

이 사건을 계기로 GPT와 같은 AI의 할루시네이션(잘못된 정보나 허구의 내용을 생성하는 문제)이 치명적인 단점으로 인식되었습니다.

흥미로운 점은 LLM 연구자들이 이미 이러한 거짓 정보 문제를 인지하고 있었다는 것입니다. 다만 '할루시네이션'이라는 용어 대신 '정확성 부족'이라고 표현했을 뿐이죠. 이 문제를 해결하기 위해 주로 Fine-Tuning 기법을 사용했지만, 대규모 모델의 재학습에 따른 번거로움과 느린 업데이트 속도가 한계로 작용했습니다.

sLLM, Fine-Tuning, 프롬프트 엔지니어링 등 LLM 모델의 할루시네이션을 해결하기 위한 다양한 접근법이 연구되었습니다. 하지만 기존 신경망에 특정 도메인 데이터를 추가로 학습시키고 모델을 fine-tuning하는 과정에서 높은 계산 비용이 발생해 쉽게 해결책을 찾지 못했습니다.

이러한 문제를 해결하기 위해 새로운 접근법이 도입되었습니다. 학습 데이터셋을 추가하는 대신, 도메인별 특화 데이터베이스와 기존 학습 데이터를 통합하는 방식을 채택했는데, 이것이 바로 RAG(Retrieval-Augmented Generation, 검색 증강 생성)입니다.

 

2. RAG 정의와 발전

RAG는 LLM이 외부 지식 베이스에서 관련 정보를 검색하고 이를 활용하여 더욱 정확하고 신뢰성 있는 답변을 생성하는 기술입니다.

초창기 RAG는 사전 학습된 검색기(Retriever)와 생성기(seq2seq 모델)를 결합하여 지식을 해석 가능하고 모듈화된 방식으로 처리했습니다.[2] 검색기로 질문에 대한 관련 정보를 찾고, 이를 바탕으로 답변을 생성하는 방식이었죠.

RAG 기본 개념도

 

ChatGPT 출시 이후 RAG 연구가 급격히 증가했습니다. RAG는 거대 모델의 재학습이나 fine-tuning 없이도 비용 효율적으로 모델의 생성 능력을 강화할 수 있는 기술이었기 때문입니다.

2022년부터 RAG 연구는 크게 3가지 패러다임으로 발전했습니다. 기본적인 검색과 생성을 통합한 Naive RAG, 검색 과정을 고도화하여 검색 품질에 집중한 Advanced RAG, 그리고 전통적인 검색 방법에 전처리와 후처리 과정을 모듈화하여 추가한 Modular RAG가 대표적입니다. 이러한 세 가지 RAG 유형에 대해서는 뒤에서 자세히 설명하겠습니다.

 

3. RAG의 핵심 특징

RAG는 쉽게 이해할 수 있는 개념입니다. 사람이 정답을 찾는 과정과 비슷하기 때문인데요. 우리는 보통 궁금한 문제에 대한 개념을 먼저 찾고, 그 개념을 이해하고 정리하면서 정답에 도달합니다.

 

사람이 답을 찾는 과정 (질문 -> 검색 -> 결론)

 

위 그림처럼 서울역에 가는 가장 빠른 경로를 찾을 때, 우리는 보통 지도 앱을 실행하여 현재 위치에서 서울역까지의 최단 시간 경로를 검색합니다.

만약 GPT와 같은 LLM으로 이 답을 찾으려면, LLM은 질문자의 현재 위치부터 목적지까지의 모든 경로와 시간 정보를 사전에 학습해야 합니다. 하지만 전 세계의 위치 정보와 각국의 대중교통, 소요 시간 등을 정확하게 학습하는 것은 현실적으로 불가능합니다.

 

RAG 프로세스 활용 예시

 

이런 맥락에서 RAG를 적용하면, 지도 앱이 검색기 역할을 하고 그 결과를 기반으로 LLM이 답변을 생성하게 됩니다. 즉, LLM이 모든 정보를 추가로 학습할 필요 없이 외부 지식을 입력받아 참고하면서 답변을 만들 수 있습니다. 이러한 RAG 방식은 답변의 정확도와 관련성을 높이고, LLM의 할루시네이션 문제를 줄이며, 전반적인 신뢰성을 향상시킬 수 있습니다.

 


 

RAG의 3가지 패러다임

세가지 RAG 패러다임 개념도

 

RAG(Retrieval-Augmented Generation)의 발전 과정에서 Naive RAG, Advanced RAG, Modular RAG는 각기 다른 수준의 복잡성과 기술적 정교함을 갖춘 접근 방식입니다.

 

1. Naive RAG

Naive RAG는 RAG의 가장 기본적인 개념을 구현한 방식입니다. 이는 인덱싱(Indexing), 검색(Retrieval), 생성(Generation)이라는 RAG의 기본 프로세스를 충실히 따르며, 간단히 '검색과 읽기'로 요약할 수 있습니다.

이는 기본적인 검색 시스템과 유사하게 작동합니다. 외부 지식베이스의 내용을 토큰 임베딩으로 데이터베이스화한 뒤, 사용자 질문과 관련된 지식을 데이터베이스에서 검색하여 LLM에 전달하고 답변을 생성하는 방식입니다.

Naive RAG 프로세스

 

Naive RAG 핵심 컴포넌트

  • Document Chunking(문서 조각화)

외부 지식베이스를 만들기 위해서는 문서를 더 작은 조각으로 나누는 것부터 시작합니다. 문서를 그대로 입력하는 대신, 관리와 검색이 용이하도록 세분화합니다. 예를 들어, 여러 문서를 하나로 통합한 문서나 긴 문서의 경우 세그먼트 단위로 나누어 정보 검색 성능을 최적화합니다.

  • Embedding Model(임베딩모델)

임베딩 모델은 RAG의 핵심 요소입니다. 외부 지식을 담은 문서 조각과 사용자의 질문을 수학적으로 표현하여 텍스트를 벡터화하는 모델입니다.

Naive RAG, 사용자 질문에 대한 문서를 검색하는 프로세스

 

  • Vector Database

문서의 임베딩 결과값은 벡터 데이터베이스에 저장됩니다. 벡터 데이터베이스는 임베딩을 효율적으로 저장하고 검색할 수 있도록 설계되었습니다. 사용자의 질문을 쿼리로 변환하여 데이터베이스의 임베딩과 비교함으로써 가장 관련성 높은 문서 조각을 찾아냅니다.

  • Retrieval(검색)

벡터 데이터베이스가 관련 문서 조각을 식별하면 관련성이 높은 문서를 검색합니다. 이 검색 과정은 최종 응답 생성에 사용할 정보를 선별하는 필터 역할을 합니다.

  • LLM

LLM은 검색된 관련 문서를 처리하여 사용자의 질문에 대한 일관성 있고 적절한 응답을 생성합니다. 사용자의 질문과 검색된 문서 조각을 활용하여 맥락적으로 적합한 응답을 제공하며, 데이터를 해석하여 이해하기 쉬운 자연어로 응답을 구성합니다.

  • Response Generation(응답 생성)

마지막 단계에서 시스템은 LLM이 처리한 정보를 바탕으로 응답을 생성합니다. 생성된 응답은 사용자가 찾고자 한 정보를 명확하고 간결하게 전달합니다.이러한 질문에서 응답까지의 데이터 흐름을 통해 Naive RAG 시스템의 각 구성 요소가 정확하고 관련성 높은 정보를 제공하는 데 중요한 역할을 함을 알 수 있습니다.

 


2. Advaned RAG

고급 RAG(Advanced RAG)는 Naive RAG를 기반으로 프로세스를 한층 더 정교화한 시스템입니다. Naive RAG가 검색된 정보를 단순히 응답에 통합하는 것과 달리, Advanced RAG는 응답의 관련성전반적인 품질을 최적화하기 위한 추가 처리 단계들을 포함합니다.

Advanced RAG 프로세스

 

Advanced RAG 핵심 컴포넌트

  • Query Optimization (Query Rewriting - Pre-Retrieval Process)

Naive RAG는 사용자의 질문을 바로 임베딩해 벡터 데이터베이스에서 질의하는 것과 달리, Advanced RAG에서는 사용자의 질문을 한 번 더 최적화하는 단계가 포함됩니다.

 

사용자의 질의를 분석하고 전처리하여 검색 정확도를 향상시키는 것을 목표로 하며, 쿼리 확장(Expansion)이나 쿼리 재구성을 통해 사용자의 의도를 더 정확하게 반영하도록 수정합니다.

  • Dynamic Embeddings (동적 임베딩)

Naive RAG는 대체로 모든 데이터 유형에 단일 임베딩 모델을 사용합니다. 반면 Advanced RAG는 특정 작업이나 도메인에 맞춰 임베딩을 fine-tuning하고 조정합니다. 이를 통해 임베딩 모델이 특정 유형의 쿼리나 데이터셋에 필요한 맥락적 이해(특징점)를 더 정확하게 포착할 수 있게 됩니다.

 

  • Hybrid Search (하이브리드 검색)

하이브리드 검색은 쿼리의 특성과 관계없이 높은 관련성을 가진 정보를 검색할 수 있도록 보장하는 기법입니다.

Advanced RAG는 벡터 데이터베이스의 검색 성능을 향상시키기 위해 여러 검색 전략을 결합합니다. 키워드 기반 검색, 의미 검색, 신경망 검색 등 다양한 검색 기법을 통합적으로 활용하는 것이 특징입니다.

 

  • Post-Retreval Processing (검색 후 처리)

벡터 데이터베이스에서 검색한 이후에도 검색된 데이터를 추가로 처리하여 최종 출력물의 검색 결과 품질과 관련성을 높입니다.

검색 후 처리에는 Re-Ranking(재정렬)이 포함되며, 이 과정을 통해 사용자 질문에 가장 관련성과 유용성이 높은 데이터에 우선순위를 매깁니다.

  • Re-Ranking (재정렬)

Advanced RAG는 검색 과정 이후에 정보를 더욱 정제하는 추가 단계를 수행합니다. 사용자의 질문을 중심으로 검색된 정보의 관련성과 맥락성을 평가하여 우선순위를 부여합니다.

이 과정에서 검색된 결과를 쿼리와의 의미적 관련성과 맥락 적합성을 기준으로 재평가하고 정렬합니다. 가장 관련성이 높은 정보를 상위에 배치함으로써 응답의 정확성과 일관성을 보장하는 것을 목표로 합니다.

Re-Ranking 개념도

 

  • Context Compression (맥락 압축)

필터링과 재정렬 알고리즘을 사용한 후에도 사용자 쿼리에 답변하는 데 불필요한 데이터가 남아있을 수 있습니다. 이러한 불필요한 데이터를 제거하는 과정을 맥락 압축(Context Compression)이라고 합니다.

 

이 단계는 관련 문서를 LLM에 전달하기 직전에 적용되어, LLM이 가장 관련성 높은 정보만을 받도록 합니다. 이를 통해 LLM은 최상의 결과를 생성할 수 있습니다.


Advanced RAG의 특징 정리

재정렬을 통한 더 나은 관련성

  • 재정렬(Re-ranking)은 가장 관련성 높은 정보를 우선순위로 배치해 최종 응답의 정확성과 논리적 흐름을 향상시킵니다.

맥락을 더 잘 반영하는 동적 임베딩

  • 동적 임베딩(Dynamic Embeddings)은 특정 작업에 맞춰 최적화되어, 시스템이 다양한 쿼리를 더 정확하게 이해하고 응답할 수 있게 합니다.

하이브리드 검색을 통한 더 정확한 검색

  • 하이브리드 검색(Hybrid Search)은 여러 검색 전략을 통합해 데이터를 더 효과적으로 찾아내고, 결과의 관련성과 정확도를 높입니다.

맥락 압축을 통한 효율적인 응답

  • 맥락 압축(Context Compression)은 불필요한 정보를 제거하여 처리 속도를 향상시키고, 더욱 명확하고 고품질의 답변을 제공합니다.

사용자 쿼리 이해도 향상

  • 쿼리를 검색 전에 재작성하거나 확장함으로써, Advanced RAG는 사용자의 의도를 정확히 파악하여 더 적절하고 관련성 높은 결과를 제공합니다.

3. Modular RAG

모듈 RAG는 Naive, Advanced보다 훨씬 더 복잡한 개념의 RAG입니다. 이번 RAG의 개념과 활용 포스팅에서는 간단히 정리만하고 자세한 내용은 별도의 포스팅으로 정리해보겠습니다.

 

모듈 RAG 프레임워크 (모듈 구성)

 

모듈 RAG의 핵심은 말 그대로 "모듈(module)"입니다. 모듈의 구조와 작동 방식에 따라 그 특성이 달라집니다. 각 모듈은 RAG 프로세스에서 특정 작업을 처리하고, 시스템 전체의 기능을 유지하는 데 중요한 역할을 합니다.

 

Modular RAG 핵심 컴포넌트

1. 인덱싱 모듈 (Indexing Module) 

인덱싱 모듈은 RAG 시스템이 검색할 방대한 데이터를 조직화하고 구조화하는 역할을 합니다.

  • 주요 작업
    • 문서를 관리 가능한 크기로 나눔.
    • 임베딩을 생성하고 이를 효율적으로 검색할 수 있도록 저장.
  • 모듈의 목적
    • 콘텐츠를 정확하게 표현하여 시스템이 쿼리와 가장 관련성 높은 조각을 효과적으로 매칭할 수 있도록 보장.

 

2. 검색 모듈 (Retrieval Module)

검색 모듈은 사용자의 쿼리를 기반으로 가장 관련성 높은 데이터 조각을 선택하는 핵심 역할을 수행합니다.

  • 주요 작업
    • 쿼리 확장(Query Expansion) 수행.
    • 검색된 조각을 재정렬(Reranking)하고 불필요한 데이터를 필터링.
  • 모듈의 목적
    • 검색 프로세스를 정교하게 개선하여, 후속 생성 단계에서 가장 유용하고 맥락적으로 적합한 정보를 반환.

 

3. 생성 모듈 (Generation Module)

생성 모듈은 관련 데이터가 검색된 후 응답 생성 작업을 수행합니다.

  • 주요 작업
    • 검색된 데이터를 활용하여 최종 출력(예: 쿼리 응답, 요약 등)을 생성.
    • 서브 모듈: 출력의 정확성, 일관성, 사용자 요구에 맞춘 최적화를 수행.
  • 모듈의 목적
    • 사용자의 요구에 부합하는 정확하고 일관된 응답을 생성.

4. 오케스트레이션 모듈 (Orchestration Module)

Modular RAG에서 가장 혁신적인 요소 중 하나로, 각 모듈 간의 조정 및 관리를 담당합니다.

  • 주요 역할:
    • 시스템 내 데이터와 작업의 흐름을 제어.
    • 쿼리의 특정 요구 사항에 따라 어떤 모듈을 활성화할지 결정.
  • 모듈의 목적
    • 프로세스를 조율함으로써 시스템이 다양한 시나리오에 동적으로 적응할 수 있도록 지원.
    • 시스템의 유연성과 효율성을 극대화.

RAG모델 평가 방법

RAG의 목적은 LLM의 단점을 해결하기 위한 것입니다. 그렇기 때문에 RAG 모델들의 성능 지표도 어느정도 정형화 되어있습니다.

평가지표

  • 응답의 정확도
  • 할루시네이션(환각) 감소 수준
  • 투명성과 출처 인용 품질

맺음말

RAG의 기본 개념부터 패러다임, 평가방법까지 프로세스 중심으로 정리했습니다.

 

RAG는 LLM의 주요 단점인 할루시네이션 문제를 해결하기 위해 개발된 기술입니다. 외부 지식을 활용하여 더 정확하고 신뢰성 있는 답변을 생성할 수 있게 되었죠. RAG는 외부 지식을 생성 능력에 동적으로 통합함으로써 LLM의 한계를 극복하는 혁신적인 접근 방식입니다.

 

RAG는 Naive, Advanced, Modular 등 다양한 형태로 발전했으며, 궁극적인 목적은 "정확성"과 "효율성"에 있습니다. 기업이나 서비스에서 RAG에 주목하는 이유가 명확합니다. 자체 데이터를 외부에 노출하지 않고, 고비용 학습 없이도 LLM의 장점을 극대화할 수 있기 때문이죠.

 

2024년부터 국내에서도 RAG를 적극적으로 도입하기 시작했습니다. RAG의 개념을 이해하면서 기술적인 경험을 쌓아보는 건 어떨까요?

 

 

참고 문헌

[1] https://namu.wiki/w/세종대왕%20맥북프로%20던짐%20사건?uuid=8f18b777-9009-4e52-a170-755574a38a1f

[2] Retrieval-augmented generation for knowledge-intensive nlp tasks, Lewis et al., 2020

[3] Retrieval-Augmented Generation for Large Language Models: A Survey

[4] https://myscale.com/blog/naive-rag-vs-advanced-rag/