본문 바로가기
  • 책상 밖 세상을 경험할 수 있는 Playground를 제공하고, 수동적 학습에서 창조의 삶으로의 전환을 위한 새로운 라이프 스타일을 제시합니다.
Natural Language Processing

[2024-2] 백승우 - Retrieval-Augmented Generation for Large Language Models: A Survey

by BaekDaBang 2024. 11. 11.
 

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

0. Abstract

LLM(Large Language Model)은 뛰어난 성과를 보이지만, hallucination, outdated knowledge, non-transparent한 추론 과정 등의 문제를 겪었다. 이러한 문제를 해결하기 위해, RAG(Retrieval-Augmented Generation)는 외부 데이터베이스에서 관련 정보를 검색하고 이를 기반으로 LLM의 생성 결과를 개선하는 방식으로, Knowledge-intensive task에서 정확성과 신뢰성을 높였다.

  • RAG의 발전 과정을 Naive RAG,Advanced RAG,Modular RAG라는 세 가지 주요 패러다임
  • 검색생성증강이라는 세 가지 핵심 요소를 통합하여 RAG 시스템을 형성할 방법
  • 최신의 평가 프레임워크와 벤치마크 dataset
  • RAG의 발전과 그 응용 분야에 대한 미래 연구 방향

 

1. Information

LLM은 뛰어난 성공을 거두었지만, domain-specific하거나 knowledge-intensive task와 같이 학습 데이터 이외의 데이터를 다루거나 실시간 정보를 요구하는 질문에서 hallucination을 발생시키는 문제를 일으켰다. RAG는 외부 지식 베이스(external knowledge base)에서 관련 문서 덩어리(relevant document chunk)를 검색하여 LLM의 생성 작업에 반영하는 방법으로, 외부 지식을 참조함으로써 사실에 기반한 정확한 콘텐츠를 생성할 수 있도록 도와준다. 사실적 오류 문제를 줄이고, 실시간으로 지식 업데이트가 가능하며, domain-specific information을 통합할 수 있다는 장점이 있습니다 .

RAG를 활용하는 단계는 크게 pre-training, fine-tuning, inference로 나뉜다. 초기에는 Transformer 아키텍처의 등장과 함께 PTM(Pre-Training Models)을 통해 LLM을 강화하는 데 집중했다. 이후 ChatGPT의 등장으로 LLM의 ICL(In-context Learning, 문맥 내 상황 학습) 능력이 크게 향상되었고, RAG 연구는 추론(Inference) 단계에서 더 복잡하고 지식 집약적인 작업을 처리할 수 있도록 발전하였다.

 

RAG의 발전 과정은 Naive RAGAdvanced RAGModular RAG이다. 각 패러다임은 RAG의 기술적 진전을 보여주며, 특히 검색(Retrieval)생성(Generation)증강(Augmentation) 기술들이 어떻게 통합되어 RAG 시스템을 구성하는지를 보여줬다. 또한, RAG의 발전과 함께 현재까지의 연구 방법론을 정리하고, RAG의 평가 시스템과 벤치마크에 대한 분석도 포함했다.

 

2. Overview of RAG

A. Naive RAG

Naive RAG는 RAG의 초기 형태로, 검색생성정보 통합의 기본적인 과정(Retrieve-Read 방식)으로 이루어져 있다. 이 방식은 정보 검색 후 생성된 내용을 읽고 답변을 생성하는 방식이다.

  • Indexing : 문서 데이터를 다양한 포맷(PDF, HTML, Word 등)에서 추출하여 텍스트로 변환하고, 이를 작은 chunk로 분할하여 벡터화한 후 벡터 데이터베이스에 저장한다.
  • Retrieval : 사용자의 query가 입력되면 query는 벡터화되어, 데이터베이스에서 가장 관련성 높은 K개의 document query를 검색한다.
  • Generation : 검색된 document query와 원본 질문을 합쳐서 언어 모델에 입력하고, 이를 기반으로 최종 답변을 생성한다.

B. Advanced RAG

Advanced RAG는 Naive RAG의 한계를 극복하기 위한 개선한 형태로, 검색 품질을 향상시키기 위한 전략이 추가되었다. 이를 위해 pre-retrieval(사전 검색) 및 post-retrieval(후처리 검색) 기법이 도입되었다.

  • pre-retrieval Indexing 최적화와 query 최적화를 통해 검색된 정보의 품질을 높이고, 다양한 데이터 세분화와 메타데이터 추가 등으로 검색 결과를 개선한다. Query rewriting(transformation)이나 query expansion 기법을 활용하여 사용자의 쿼리를 더 명확하고 관련성 있게 만들어 검색 성능을 높인다.
  • post-retrieval Reranking 기법을 사용하여 가장 관련성 높은 정보를 강조하고, 중복 정보를 줄이는 방식으로 검색된 데이터를 개선한다.

C. Modular RAG

두 가지 RAG 패러다임을 발전시킨 방식으로, 여러 개별 모듈을 조합하여 더욱 효율적인 검색과 정보 통합을 가능하게 만든다.

  • New Modules : 여러 기능 모듈을 추가하여 검색 과정에서 필요한 기능을 세분화하고 최적화할 수 있습니다. 예를 들어, 메모리 모듈은 LLM의 메모리를 활용하여 검색을 보다 효율적으로 이끕니다. 예측 모듈은 LLM이 불필요한 중복 정보를 줄이고, 핵심적이고 중요한 정보를 선택하도록 돕습니다 .
  • New Patterns : RAG-Fusion과 같은 전략을 통해 사용점에서 확장하고, 여러 벡터 검색을 병렬로 실행하여 더욱 효과적인 지식 검색을 구현한다.

D. RAG vs Fine-tuning

Fine-tuning은 미리 훈련된 모델을 특정 작업이나 도메인에 맞춰 추가로 훈련시키는 방식이다. 모델은 특정 작업에 최적화되고, 일관된 성능을 발휘한다. 그러나 최신 정보 반영이 어렵고, 많은 자원을 소모하는 단점이 있다. 반면, RAG는 외부 지식베이스에서 실시간으로 정보를 검색하고 이를 기반으로 답변을 생성하는 방식이다. 최신 정보를 반영할 수 있고, Knowledge-intensive task에서 강점을 보인다. 다만, 검색의 정확도가 모델 성능에 큰 영향을 미쳐, 검색된 정보가 부정확하거나 불완전하면 생성된 답변도 부정확해진다.

 

3. Retrieval

외부 지식 기반에서 관련 문서를 효율적으로 검색하는 방법

A. Retrieval Source (검색 소스)

  • Unstructured Data : 일반적으로 텍스트 데이터를 의미하며, 주로 위키백과와 같은 공개적인 문서나 대형 데이터셋이 사용된다.
  • Semi-structured Data : PDF 문서나 표가 포함된 데이터로, 기존 검색 시스템에서 다루기 어렵기 때문에 RAG 시스템에서는 특별한 처리가 필요하다.
  • Structured Data : Knowledge Graph와 같이 미리 구조화된 데이터, 정보의 정확성을 보장할 수 있는 장점이 있지만, 구축과 유지 관리가 어렵다.

또한 최근 연구에서는, LLM's-Generated Content를 검색 소스로 사용하는 방식도 탐구되고 있다. 이 방법은 외부 데이터에 의존하지 않고, LLM이 생성한 정보를 검색하여 시스템을 개선하는 방법이다.

B. Retrieval Granularity (검색 세분화)

검색 단위의 크기(Granularity)에 따라 검색 정확도에 큰 영향을 미친다. 검색 효율성과 검색 정확도 간의 균형을 맞추는 것이 중요하다.

  • Fine-grained Retrieval (조밀한 검색 단위) : 예를 들어, 문장을 단위로 검색할 경우 더 세부적인 정보가 제공될 수 있지만, 문맥이 부족할 수 있다.
  • Coarse-grained Retrieval (거친 검색 단위) : 큰 단위(문서 단위)로 검색하면 더 많은 문맥을 얻을 수 있지만, 정보가 중복되거나 불필요한 내용을 포함할 위험이 있다.

C. Indexing Optimization (인덱싱 최적화)

Indexing 단계는 문서를 처리하여 검색할 수 있도록 준비하는 과정이다.

더보기

Chunking

여러 개의 품사로 구(pharase)를 만드는 것을 Chunking이라 하고, 이 구(pharase)를 chunk라 한다.
문장을 각 품사로 구분하고, Chunking에 의해 구로 구분하면 문장의 의미를 파악하기 용이해 진다.
문장에서 (DT + JJ + NN), (DT + JJ + JJ + NN), (JJ + NN), 등의 시퀀스는 모두 명사구 (NP : Noun phrase)로 판단한다.

  • Chunking Strategy : 문서를 작은 chunk로 나누어 검색한다. 예를 들어, 문서를 일정한 토큰 수로 분할하는 방식이 있으며, 이는 너무 많은 노이즈를 포함하거나 문맥을 잘라내는 문제가 발생할 수 있다. 이를 해결하기 위한 방법으로 슬라이딩 윈도우 기법이나 재귀적인 분할 기법이 사용된다.
  • Metadata Attachments : 각 chunk에 metadata(페이지 번호, 파일 이름, 작성자 등)를 추가하여, 검색할 때 범위를 좁히거나 특정 정보를 필터링하는 데 도움을 주어, 더욱 효율적인 검색을 할 수 있게 한다.
  • Structural Index : 문서 내에서 논리적인 관계를 고려하여 문서들을 계층적으로 구성하는 방법이다.

D. Query Optimization (쿼리 최적화)

사용자가 제공한 원본 질문을 검색에 적합하게 바꾸는 과정이다.

  • Query Expansion (쿼리 확장) : 단일 query를 여러 개로 확장하여 더 많은 맥락을 제공함으로써 검색 정확도를 높인다. 확장된 query는 병렬로 실행된다.
  • Query Transformation (쿼리 변환) : 원본 query를 다른 형태로 변환하여 검색에 더 적합하게 만드는 방법이다. 예를 들어, query를 다시 작성하여 검색에 필요한 중요한 정보를 강조하거나, HyDE(가설 문서 생성) 기법을 사용하여 query의 의미를 추론하는 방식이 있다.

E. Embedding (임베딩)

Query와 문서 chunk 간의 유사성을 측정하는 데 사용된다. Embedding 모델은 문서나 질문을 벡터 형식으로 변환한 후, 이 벡터들 간의 유사도를 계산하여 가장 관련성이 높은 문서를 검색한다. 일반적으로 사용되는 embedding 모델은 BM25와 BERT 기반의 모델이다.

또한 Hybrid Retrieval(혼합 검색) 방식을 사용하여 Dense Retrieval(조밀한 임베딩)과 Sparse Retrieval(희소 임베딩)을 결합하여 더 정확한 검색 결과를 얻는 방법도 있다. 이 방식은 dense 모델이 잘 처리할 수 없는 희귀한 entity(데이터 모델링에서 사용되는 객체)를 처리하는 데 유용하다.

F. Retrieval Optimization (검색 최적화)

  • 검색 효율성 향상 : 검색 시간을 줄이기 위해 데이터의 분할, 쿼리 캐싱, 적절한 인덱스 구축 등이 필요하다.
  • 정확성 향상 : 검색의 정확도를 높이기 위해 Re-ranking이나 문서 중요도 점수 매기기 등의 기법을 사용하여 결과를 개선할 수 있다.

5. Augmentation Process in RAG

RAG의 정보 증강 과정으로, 검색된 정보를 효율적으로 활용하여 생성 단계의 성능을 높인다. 일반적으로, RAG에서는 singular(once) retrieval step(한 번의 검색)과 generation(생성)으로 이어지는 흐름이 일반적이지만, 복잡한 문제를 해결하기 위해서는 multi-step reasoning(다단계 검색이나 반복적 검색)이 필요하다.

A. Iterative Retrieval (반복적 검색)

초기 쿼리와 그동안 생성된 텍스트를 기반으로 지식 베이스를 여러 번 검색하여 점진적으로 더 많은 정보와 맥락을 제공하는 방식이다. 추가적인 컨텍스트를 제공하여 생성된 답변을 더 풍부하고 정확하게 만든다. 그러나 검색과 생성이 반복되면서 관련되지 않은 정보가 축적될 수 있어, 의미적 불일치나 정보의 중복 문제가 발생할 수 있다. Iterative Retrieval(반복적 검색)과 Recursive Retrieval(재귀적 검색)은 더 정교한 정보 검색과 추론을 가능하게 하며, Adaptive Retrieval(적응형 검색)은 시스템의 효율성을 높인다.

B. Recursive Retrieval (재귀적 검색)

검색 결과를 바탕으로 쿼리를 점진적으로 다듬어가며 검색을 반복하는 방식이다. 이 방법은 복잡한 문제를 해결하는 데 유용하며, 서브 문제로 나누어 점차 해결책을 도출해 나간다. IRCoT(Iterative Reasoning with Chain of Thought) 모델은 chain-of-thought(연쇄적 사고)를 이용해 문제를 해결하고, 검색 결과를 기반으로 사고 과정을 재정립하는 방식이다.

C. Adaptive Retrieval (적응형 검색)

RAG 시스템이 언제 외부 지식 검색이 필요한지, 그리고 검색과 생성 과정을 언제 종료할지를 스스로 결정하는 방식이다. LLM이 생성 과정에서 특별한 token을 이용해 검색 여부를 제어하도록 하여, 더 효율적인 정보 활용이 가능하게 한다.

 

6. Task and Evaluation

A. Downstream Tasks

B. Evaluation Targets

Retrieval Quality(검색 품질)과 Generation Quality(생성 품질)가 RAG 모델의 평가에서 중요하다. 

  • Retrieval Quality : RAG 시스템에서 retriever가 얼마나 잘 관련 정보를 선택했는지를 평가한다.
  • Generation Quality : 검색된 정보를 바탕으로 모델이 얼마나 잘 답변을 생성했는지를 평가한다.

평가에 사용되는 주요 지표

  • Retrieval Quality : Hit Rate, Mean Reciprocal Rank (MRR), Normalized Discounted Cumulative Gain (NDCG) 등의 지표 사용
  • Generation Quality : BLEU, ROUGE 및 Exact Match (EM), F1 등과 같은 task-specific 지표 사용

C. Evaluation Aspects

품질 점수 (Quality Scores)

  • Context Relevance (문맥 관련성) : 검색된 문맥이 질문과 얼마나 잘 일치하는지 평가
  • Answer Faithfulness (답변 충실도) : 생성된 답변이 검색된 문맥에 얼마나 충실한지를 평가
  • Answer Relevance (답변 관련성) : 생성된 답변이 질문에 얼마나 관련이 있는지 평가

필요한 능력 (Required Abilities)

  • Noise Robustness (노이즈 강건성) : 모델이 질문과 관련이 있지만 정보가 부족한 문서를 처리할 수 있는 능력을 평가
  • Negative Rejection (부정적 거부) : 검색된 문서가 부족할 경우 모델이 잘못된 답변을 피할 수 있는 능력을 평가
  • Information Integration (정보 통합) : 여러 문서에서 정보를 결합하여 복잡한 질문에 답하는 능력을 평가
  • Counterfactual Robustness (반사실 강건성) : 문서 내의 잘못된 정보를 식별하고 이를 무시할 수 있는 능력을 평가

D. Evaluation Benchmarks and Tools

  • RGB, RECALL, CRUD : 검색 품질과 생성 품질을 평가하는 benchmark
  • RAGAS, ARES, TruLens : RAG 시스템을 자동으로 평가하는 tool