논문

Retrieval-Augmented Generation for Large Language Models: A survey

khseon7 2025. 1. 10. 17:01

https://arxiv.org/abs/2312.10997

 

Retrieval-Augmented Generation for Large Language Models: A Survey

Large Language Models (LLMs) showcase impressive capabilities but encounter challenges like hallucination, outdated knowledge, and non-transparent, untraceable reasoning processes. Retrieval-Augmented Generation (RAG) has emerged as a promising solution by

arxiv.org

Introduction

LLM은 뛰어난 성능을 보였으나 훈련 데이터 외의 질의 처리 또는 최신 정보 요구 시 환각 문제 등 한계를 보인다.

 

이러한 문제를 줄이기 위해 외부 데이터베이스를 사용하는 RAG(검색 증강 생성)로 부정확한 콘텐츠 생성 문제를 줄이고, 현실적인 응용 가능성을 높였다.

 

RAG의 초기에는 Transformer 아키텍처와 사전 학습 모델(PTM)을 활용해 언어 모델의 성능을 높이는 데 초점이 맞춰졌으며, ChatGPT 등장 이후에는 추론 단계로 발전했다.

Technology Tree of RAG research.


Overview of RAG

사용자의 질문 쿼리가 들어왔을 때, RAG에서는 대표적으로 Indexing, Retrieval, Generation 3단계의 과정이 있다.

Representative instance of the RAG process

Naive RAG

Naive RAG는 Retrieve-Read 프레임워크 기반의 RAG로 Indexing(인덱싱), Retrieval(검색), Generation(생성) 3단계로 구성된다.

  1. 인덱싱
    • 다양한 형식의 데이터를 정리 및 통합된 텍스트로 변환
    • 텍스트를 작은 청크로 나눠 임베딩 모델로 벡터화 후 벡터 데이터베이스에 저장
  2. 검색
    • 사용자의 질문 쿼리를 벡터로 변환하고, 벡터 데이터베이스 내 청크 벡터와의 유사도를 계산
    • 유사도 높은 상위 K개의 청크를 선택해 프롬프트로 사용
  3. 생성
    • 질의와 검색된 문서를 결합해 프롬프트 생성
    • 모델은 고유한 지식 또는 제공된 문서 기반으로 답변 생성
    • 대화의 맥락 유지를 위해 기존 대화 기록을 통합할 수도 있다.

진행 순서

  1. 데이터를 벡터화하여 벡터 데이터베이스에 저장
  2. 사용자의 쿼리를 벡터화 한 후 벡터 데이터베이스에서 유사도를 비교
  3. 비교 후, 상위 K개의 프롬프트들을 사용해 답변을 생성

단점

  1. 검색 문제: 질문 쿼리와 맞지 않는 청크 선택하거나 중요 정보를 놓치는 문제
  2. 생성 문제: 환각 문제 또는 부적절하거나 편향된 출력 생성
  3. 보강 문제: 단순 정보를 반복하거나 추가적인 통찰이나 종합적 정보를 제공 못하는 문제

Advanced RAG

Advanced RAG는 이전 Naive RAG의 한계를 극복하기 위해 검색 품질을 향상시키고, 사전 검색사후 검색 전략을 도입했다.

 

개선 사항

  1. 인덱싱 최적화
    • 슬라이딩 윈도우 접근법, 세밀한 데이터 분할, 메타데이터 추가 활용
    • 인덱스 구조를 최적화하고 데이터의 품질을 높임.
  2. 사전 검색 최적화
    • 인덱싱 최적화: 데이터 세분화, 메타데이터 추가, 혼합 검색 등
    • 질의 최적화: 사용자의 원래 질문을 더 명확하게 변환하여 검색에 적합하게 만든다.
  3. 사후 검색 최적화
    • Rerank: 검색된 청크를 재정렬하여 가장 관련성 높은 정보를 강조
    • 문맥 압축: 핵심 정보를 추출하고 불필요한 세부 정보를 줄여 모델의 처리 부담을 줄여줌

이를 통해 검색 과정의 정확성을 높이고, 생성 단계에서 중요 정보를 효율적으로 활용하여 답변 품질을 개선하는 데 중점을 두었다.

Modular RAG

Modular RAG는 새로운 모듈과 패턴을 도입하여 앞선 2가지 RAG의 한계를 넘어, 적응성유연성을 강화한 구조이다.

 

New Module

  • Search: 다양한 데이터 소스에서 직접 검색을 수행
  • RAG-Fusion: 다중 질의와 병렬 벡터 검색을 통해 지능형 재정렬을 통해 명시적 지식과 숨겨진 패턴을 발견
  • Memory: LLM 메모리를 활용해 검색을 개선하고, 반복적 향상으로 데이터 분포에 최적화된 무제한 메모리를 구축
  • Routing: 질문에 적합한 데이터 소스나 경로를 선택하여 효율적인 정보를 검색
  • predict: 중복과 노이즈를 줄이고, LLM이 생성한 문맥을 활용해 답변의 관련성과 정확성을 개선
  • Task Adapter: 제로샷/퓨샷 학습에 최적화된 적응형 모듈로, 다운스트림 작업에 효율적으로 대응한다.

New Pattern

  • Rewrite-Retrieve-Read: 질의를 재작성하고 피드백을 활용
  • Generate-Read: LLM이 생성한 콘텐츠를 활용
  • Recite-Read: 모델 내부 가중치에서 지식을 추출하여 검색 단계를 대체
  • Hybrid retrieval strategy: 키워드, 의미론, 벡터 검색을 통합해 다양한 질의에 효과적으로 대응
  • Demonstrate-Search-Predict(DSP): 검색 결과를 예측 모듈과 결합
  • ITER-RETGEN: 검색과 읽기 단계를 반복적으로 수행
  • HyDE: 가상의 문서 임베딩을 생성하여 관련성 증가

Modular RAG는 적응형 검색, 유연한 모듈 통합, 그리고 모델 재학습 및 강화 학습을 결합해 상황에 맞는 최적의 접근 방식으로 검색과 생성 성능을 극대화한다.

The three paradigms of RAG.


RAG vs Fine-tuning(FT)

LLM의 최적화 방법인 RAG, Fine-tuning(FT), Prompt Engineering은 각기 다른 특징과 활용성을 가진다.

  RAG Fine-tuning Prompt Engineering
특징 외부 지식 소스를 활용해 실시간 정보 업데이트 가능 모델의 내부 지식을 업데이트해 특정 구조나 스타일 복제 가능 최소한의 외부 지식 및 모델 적응 필요
장점 동적인 환경에서 유리하며 높은 해석 가능성을 제공 깊은 커스터마이징 가능, 환각 감소 모델의 기존 능력을 활용하는 간단한 방법
단점 데이터 검색으로 인한 지연, 데이터 윤리 문제 새로운 지식 학습의 어려움, 높은 계산 비용 및 데이터셋 준비 필요 복잡한 지식 업데이트나 정교한 작업에는 한계가 있음

최적화 방식은 데이터 역동성, 커스터마이징 요구사항, 컴퓨팅 자원 등 응용 상황에 따라 달라지며, RAG와 FT를 조합한 반복적 최적화가 최적 결과를 제공할 수 있다.


Retrieval

RAG에서는 데이터 소스에 관련 문서를 효율적으로 검색하는 것이 중요하다.

Retrieval Source

RAG는 외부 지식을 활용하여 LLM을 강화하며, 검색 소스 유형과 검색 단위의 세분성이 결과 생성에 영향을 미친다.

Data Structure

  1. Unstructured Data
    • 주로 텍스트로 이루어진 데이터(ex. Wikipedia, 도메인의 특정 데이터)
  2. Semi-structured Data
    • 텍스트와 표가 혼합된 데이터
    • 문제점: 텍스트 분할 시 표 손상 발생, 표와 텍스트의 통합 검색이 복잡
    • 해결법: LLM의 코드 기능으로 Text-to-SQL 질의 실행, 표 데이터를 텍스트 형식으로 변환
    • 현재 해결책은 최적이 아니며, 개선의 가능성이 크다.
  3. Structured Data: 구조화 데이터
    • Knowledge Graph가 대표적으로 검증된 정보를 제공하여 정확도가 높다.
    • 제약: 데이터베이스 구축, 검증, 유지 보수가 필요
    • G-Retriever: 그래프 신경망(GNN), LLM, RAG를 통합해 그래프 이해 및 질문 응답 능력 향상
  4. LLM 생성 콘텐츠
    • 외부 정보의 한계를 보완하기 위해 LLM 자체 지식을 활용
    • SKR: 질문을 '알려진/모르는' 범주로 분류 후 선택적으로 검색
    • GenRead: 검색기를 LLM 생성기로 대체, LLM 생성 콘텐츠가 사전 학습 목표와 더 잘 맞아 정확도 증가
    • Selfmem: 반복적으로 생성된 결과를 메모리 풀에 저장하여 자체 성능을 강화

Retrieval Granularity

RAG에서 중요한 요소 중 하나는 검색 데이터의 세분화이다.

  1. 조밀한 검색 단위: 문제와 관련된 더 많은 정보를 제공할 수 있으나, 중복된 내용이 포함되어 방해를 받을 수 있음
  2. 세밀한 검색 단위: 검색 부담이 증가하지만, 의미적 일관성과 필요한 지식을 보장하지 않을 수 있음

텍스트에서의 검색 단위

  • 단위: Token, Phrase, Sentence, Proposition, Chunks, Document
  • DenseX는 Proposition을 검색 단위로 제안하며, 정확도와 관련성 향상을 목표로 함

KG에서의 검색 단위

  • 단위: Entity, Triplet, sub-Graph(추천 작업에선 Item ID, Sentence pairs)

검색 단위 세분화는 리트리버 성능과 다운스트림 작업의 성과를 높이는 중요한 요소로, 단위 선택에 따라 효율성이 달라진다.

Indexing Optimization

인덱스 품질은 검색 단계에서 올바른 문맥을 얻을 수 있는지 결정하는 중요하나 요소이므로 인덱싱 최적화가 필요하다.

  1. Chunking Strategy
    • 고정된 토큰 수로 문서를 나누는 방법
    • 큰 청크: 더 많은 문맥 포착 가능하지만 노이즈가 많고 처리 시간이 길어진다.
    • 작은 청크: 노이즈가 적으나 필요한 문맥을 충분히 전달하지 못할 수 있다.
    • Small2Big: 작은 단위를 사용하고, 앞뒤 문장으로 큰 문맥을 제공한다.
  2. Metadata Attachments
    • 청크에 메타데이터를 추가해 검색 범위를 제한
    • 시간 인식 RAG를 통해 최신 정보를 반영하고, 오래된 정보는 제외할 수 있다.
    • 가공된 메타데이터를 사용해 문서와 질문 간의 의미적 차이를 줄이는 방법도 사용된다.
  3. Structural Index
    • 계층적 인덱스 구조를 사용해 문서의 정보를 더 효율적으로 검색
    • Knowlege Graph Index
      → 문서 간의 논리적 관계를 KG로 구축하여 검색의 일관성을 높이고, LLM이 더 정확한 지식 검색과 문맥에 맞는 응답을 생성할 수 있도록 한다.
      →KGP 방식은 여러 문서 간의 인덱스를 구축하여 문서 구조와 의미적 유사성을 기반으로 지식 검색 및 추론 문제를 해결한다.

Query Optimization

명확하고 정확한 질문을 만드는 것이 어려워, 불완전하거나 부적절한 질문, 언어의 복잡성이나 모호함이 문제를 일으킬 수 있어 질의를 최적화하는 것이 중요하다.

  1. Query Expansion
    • Multi-Query: 질의를 다중 쿼리로 실행하여 최적의 관련성을 확보
    • Sub-Query: 질의를 간단한 하위 질의로 나눠서 검색
    • Chaiin-of-Verification(CoVe): 확장된 질문을 LLM으로 검증하여 환각을 줄이고 신뢰성 높임
  2. Query Transformation
    • Query Rewrite: LLM으로 질문을 재작성
    • HyDE: 가상 문서를 만들어 문제와 답변 간 유사성을 찾기
    • Step-back Prompting: 원래 질문과 이를 추상화하여 만든 상위 개념 질문, 2가지 질문을 함께 사용하여 답변을 생성
  3. Query Routing
    • Metadata Router/Filter: 질문에서 키워드를 추출하고, 해당 메타데이터를 바탕으로 검색 범위를 좁혀 검색
    • Semantic Router: 질문의 의미적 정보를 바탕으로 라우팅
    • Hybrid Routing: 메타데이터와 의미적 방법을 결합

Embedding

RAG에서 검색은 임베딩 간 유사도를 계산하여 이루어지므로, 임베딩 모델의 의미적 표현 능력은 중요한 역할을 한다.(ex. AnglE, Voyage, BGE)

  1. 혼합/하이브리드 검색
    • 희소 검색 모델(BM25)과 밀집 검색 모델(BERT)은 서로 다른 관련성 특징을 포착하여, 서로 보완적으로 활용될 수 있다.
      → 희소 검색 모델로 밀집 검색 모델의 학습을 위한 초기 검색 결과를 제공
      → 또한, 밀집 검색 모델의 제로 샷 검색 능력을 강화하고, 드문 엔터티를 포함한 쿼리에 대해 더 잘 대응하게 도와준다.
  2. 임베딩 모델 파인튜닝
    • 특정 분야에서 기존 학습 데이터와 큰 차이가 있는 경우, 해당 분야의 데이터셋을 사용하여 임베딩 모델을 FT하는 것이 중요하다.
    • LSR(LM-supervised Retriever): LLM 결과를 지도 신호로 사용하여 검색기와 생성기를 정렬
    • Promptagator: LLM을 활용해 다중 샷 쿼리 생성기를 생성
    • Replug: 검색기와 LLM을 이용해 문서의 확률 분포 계산 & KL 발산을 통해 지도 학습 수행
    • RLHF(Reinforcement Learning Human Feedback): LLM 기반 피드백으로 검색기를 강화

Adapter

FT 모델은 API를 통한 기능 통합이나 제한된 로컬 컴퓨팅 자원으로 인한 제약 등 여러 가지 도전 과제를 직면할 수 있는데, 이를 해결하기 위해 외부 어댑터를 활용해 모델의 정렬을 돕는 접근법들이 제시되고 있다.

  1. UPRISE: 사전 구축된 프롬프트 환경에서 주어진 제로샷 작업 입력에 적합한 프롬프트를 자동으로 검색하는 경량화된 프롬프트 검색기를 훈련시켜 LLM의 다중 작업 기능을 최적화
  2. AAR: 여러 하위 작업을 수용할 수 있는 범용 어댑터를 도입
  3. PRCA: 특정 작업의 성능을 향상시키기 위해 보상 기반의 컨텍스트 어댑터를 추가
  4. BGM: 검색기와 LLM을 고정, 그 사이에 Bridge Seq2Seq 모델을 훈련시켜 검색된 정보를 LLM이 효과적으로 처리할 수 있는 형식으로 변환하여 쿼리마다 동적으로 passage를 선택 & 재정렬을 수행
  5. PKG: 화이트 박스 모델에 지시적 FT를 통해 지식을 통합하는 방법 & 검색기 모듈을 대체하고 쿼리에 맞는 관련 문서를 생성

Generation

검색이 끝나고, 검색된 모든 정보는 조정한 후 LLM에 입력하는 것이 좋다.

Context Curation

긴 문맥은 LLM이 시작과 끝에만 집중하는 경향이 있어서, RAG에서는 검색된 내용을 추가로 조정해야한다. 과도한 정보는 방해가 될 수 있다.

  1. 재정렬
    • 문서 조각을 재정렬하여 가장 관련 있는 정보를 먼저 강조하고, 더 정밀한 입력을 제공
    • 재정렬은 규칙 기반 또는 모델 기반 접근 방법이 존재
  2. 문맥 선택/압축
    • 관련 있는 문서만 선택해서 문맥을 압축하는 것이 효과적
    • 작은 언어 모델(SLM)을 사용하여 중요하지 않은 토큰 제거, 문서 수를 줄이는 방법이 존재

LLM FT

특정 시나리오와 데이터 특성에 맞춰 LLM을 FT하여 더 나은 성과를 도출하는 방식으로 특정 데이터 형식에 적응하거나, 지정된 스타일로 응답을 생성할 수 있도록 모델의 입력과 출력을 조정할 수 있다는 장점이 있다.

ex.

  • SANTA 프레임워크: 구조적 데이터와 의미적 요소를 캡슐화하기 위해 3 단계의 훈련 방식을 사용 & 강화학습을 활용해 LLM의 출력을 사람이나 검색기의 선호도에 맞출 수 있다.
  • GPT-4와 같은 더 강력한 모델 사용, 검색기와 생성기 간 선호도를 맞추는 방법, KL 발산을 활용하는 방법이 존재

Augmentation process in RAG

RAG에서 표준 관행은 단일 검색 단계와 생성 단계를 포함하지만, 이는 비효율성을 초래할 수 있으며, 제한된 범위의 정보를 제공하기 때문에 다단계 추론을 요구하는 복잡한 문제에는 일반적으로 충분하지 않다. 이 문제에 대응하는 많은 연구에서 검색 프로세스를 최적화한다.

Retrieval Process

Iterative Retrieval

  • 초기 쿼리와 생성된 텍스트를 기반으로 지식베이스를 반복적으로 검색
  • 장점: LLM은 추가적인 컨텍스트 확보 & 생성의 강건성 향상
  • 단점: 의미 불연속성이나 불필요한 정보 축적
  • Iterretgen: 검색 강화 생성 + 생성 강화 검색, 반복적인 검색과 생성 과정을 통해 정보를 향상시킴

Recursive Retrieval

  • 검색 쿼리와 결과를 기반으로 검색을 반복적으로 개선하여, 점진적으로 가장 관련 있는 정보를 도출
  • IRCoT: Chain-of-Thought 방식으로 검색을 안내 & ToC는 쿼리의 모호한 부분을 최적화하는 트리 구조 생성
    → 복잡한 시나리오나 전문화된 정보에 유용
  • Multi-hop retrieval 그래프 구조의 데이터에서 연관된 정보를 추출

Adaptive Retrieval

  • LLM이 검색의 최적 시점과 내용을 능동적으로 결정
  • Flare, Self-RAG: LLM이 자율적으로 언제 검색을 시작할지 결정
    → Flare: 생성 확신도가 낮을 때 검색 활성화
    → Self-RAG: relation tokens를 사용해 모델이 자가 반성 후 검색을 수행하거나 비평적 점수를 통해 검색을 개선
  • WebGPT: GPT-3가 검색 엔진을 자율적으로 활용하여 텍스트 생성을 돕는다.

Task and Evaluation

RAG 평가의 주요 목적은 다양한 응용 시나리오에서 RAG 모델의 성능을 이해하고 최적화하는 것이다.

Downstream Task

주요 다운스트림 작업으로는 질문 응답(QA), 정보 추출(IE), 대화 생성, 코드 검색 등이 있음, 각 작업에 적합한 데이터셋도 존재한다.

Evaluation Target

  1. 검색 품질: Hit Rate, MRR, NDCG와 같은 검색 엔진 관련 지표가 사용된다.
  2. 생성 품질: 검색된 컨텍스트에서 일관되고 적절한 답변을 생성하는 능력을 평가(정확성, 관련성, 유해성 등)

Evaluation Table of RAG

Evaluation Aspects

RAG 모델의 현대적 평가 관행은 3가지 품질 점수와 4가지 필수 능력을 강조한다.

 

품질 점수

  • Context Relevance: 검색된 컨텍스트의 정확성과 구체성을 평가 & 관련성과 불필요한 콘텐츠 최소화
  • Answer Faithfulness: 생성된 답변이 검색된 컨텍스트와 일치하고 모순 없이 일관성을 유지하는지 평가
  • Answer Relevance: 생성된 답변이 질문과 직접적으로 관련이 있고 핵심적인 질문에 잘 답하는지 평가

필수 능력

  • Noise Robustness: 질문과 관련된 noise 문서를 처리하는 능력 평가
  • Negative Rejection: 답변에 필요한 지식이 없는 문서를 찾았을 때 반응을 거부하는 능력 평가
  • Information Integration: 여러 문서에서 정보를 통합하여 복잡한 질문을 처리하는 능력 평가
  • Counterfactual Robustness: 문서 내 알려진 부정확성을 인식하고 무시하는 능력 평가

Evaluation Benchmarks and Tools

  • 모델의 필수 능력 평가 벤치마크: RGB, RECALL, CRUD
  • 품질 점수 평가 자동화 도구: RAGAS, ARES, TruLens

Represents a benchmark and a tool


Discussion and Future Prospects

RAG 기술에 심층적이니 연구가 필요한 과제들

RAG vs Long Context

  • LLM이 처리할 수 있는 토큰이 늘어나면서 RAG에 대한 의존도를 줄이지만, RAG는 검색 결과를 빠르게 제공하고, 생성된 답변을 검증할 수 있게 도와주는 중요한 역할을 한다.
  • 향후 연구는 초기 문맥에 맞춘 RAG 방법 개발을 할 것으로 예상된다.

RAG Robustness

  • 검색에서 노이즈나 모순된 정보에 대한 RAG의 강인성을 개선하려는 연구가 진행 중이다.
  • 노이즈 문서가 정확도를 30% 이상 높일 수 있다는 연구 결과가 존재
  • RAG와 언어 생성 모델을 통합하는 전략 개발의 중요성을 강조

Hybrid Approachees

  • RAG와 RAG를 어떻게 최적화할지, 그리고 어떻게 통합할지에 대한 연구
  • RAG 결과를 바탕으로 특정 기능을 가진 언어 모델(SLM)을 RAG에 통합하는 방법도 주목받고 있다.

Scaling Laws of RAG

  • LLM의 스케일링 법칙은 RAG 모델에 완전히 적용되지 않는다.
  • 작은 모델이 큰 모델보다 더 뛰어난 성능을 낼 수 있는 역 스케일링 법칙에 대한 연구가 필요

Production-Ready RAG

  • RAG에서 대규모 지식 데이터베이스에서의 문서 검색 효율성 향상, 문서 소스나 메타데이터의 유출 방지 등은 여전히 해결해야 한다.
  • LangChain, LLamaIndex: ChatGPT의 등장으로 인기를 얻었으며, RAG 관련 API를 제공하는 중요한 도구로 자리잡음
  • Flowise AI, HayStack, Meltano, Cohere Coral 등도 주목받고 있음
  • Weaviate의 Verba와 Amazon의 Kendra와 같은 기존 소프트웨어 및 클라우드 서비스 제공업체들도 RAG 중심 서비스를 확대해가고 있다.
  • RAG 기술 개발은 맞춤화, 단순화, 특수화 라는 세 가지 방향으로 나아가고 있으며, 기술 스택의 발전이 RAG 모델의 성장과 밀접하게 연결되어 있다.

Multi-modal RAG

  • 이미지: 텍스트와 이미지를 결합하여 비주얼 언어 학습을 구현(RA-CM3, BLLIP-2)
  • 오디오 및 비디오: 오디오 클립을 결합하여 음성 번역 데이터 생성(GSS), 음성 인식 성능 향상(UEOP), 시간적 마커를 추가해 이벤트 예측 및 텍스트 설명 개선(Vid2Seq)
  • 코드: 개발자의 목표에 맞는 코드 예제를 검색하여 작은 규모의 학습 작업을 개선(RBPS), 지식 그래프를 활용한 질문 응답 성능 향상(CoK)

Conclusion

  • RAG가 LLM의 성능을 향상시키고, 파라미터화된 언어 모델 지식과 외부 지식 베이스의 비파라미터화된 데이터를 통합하여 가능성을 확장시켰다는 것을 강조
  • RAG의 발전과 응용, 세 가지 발전적 패러다임(단순, 고급, 모듈형)을 설명
  • FT와 RL 같은 다른 AI 방법론과의 통합으로 능력을 확장했지만, 강인성과 긴 문맥 처리에 대한 연구 기회가 존재
  • RAG는 멀티모달 분야로 확장되며 AI 배치에 실용적 의미를 가짐
  • RAG 관련 응용 프로그램의 증가와 도구 발전은 생태계 성장을 보여주고, 평가 방법론 개선이 필요함이 강조됨

RAG ecosystem