본문 바로가기
AI/Paper Review

[논문 리뷰] Retrieval-Augmented Generation for Large Language Models: A Survey

by hyeok1235 2025. 1. 6.

핵심 : RAG 패러다임의 변화와 구조, Retriaval, Augmentation, Generation에 대한 설명과 한계점 및 추후 연구되어야 할 방향이 정리된 Survey

0. Abstract

LLM의 현재 한계에는 Hallucination, 최신 정보 부재, 불투명한 추론 과정 등이 있다. 이를 해결 하기 위해 외부 데이터베이스의 지식을 가져오는 Retrieval-Augmented Generation이 등장하였다. 이 survey에서는 RAG 패러다임의 변화(Naive RAG, Advanced RAG, Modular RAG)부터 RAG를 구성하는 요소들에 대해서 설명한다. 그리고 현재 RAG가 직면하고 있는 한계점들이나 추후 연구될 수 있는 방향에 대해 소개한다.

1. Introduction

LLM의 성능이 뛰어나지만, domain-specific하거나 knowledge-intensive task에 대해서는 아직 한계가 존재한다. 따라서 외부 지식을 활용할 수 있는 Retrieval-Augmented Generation(RAG)로 LLM의 성능을 향상 시킬 수 있다. RAG가 발전하면서 inference stage뿐만이 아니라 finetuning에서도 활용할 수 있는 기술들이 나타났다.

해당 Survey에서는 여러 RAG 연구들을 소개하고, 사용되는 downstream tasks, 데이터셋, 벤치마크, 평가 방법들을 소개한다.

2. Overview of RAG

RAG의 기본적인 프로세스는 다음과 같다:

User의 Query 입력

Indexing : document들의 chunk를 벡터화한 뒤에 저장

Retrieval : Query와 유사한 document를 가져옴

Generation : retrieve한 정보를 바탕으로 답변 생성

RAG가 발전하면서 패러다임의 변화가 존재한다. 크게 3가지로, Naive RAG, Advanced RAG, Modular RAG로 구분할 수 있다.

 

2.1 Naive RAG

기본적인 RAG 프로세스와 동일하다. raw data를 Indexing하고, 벡터화된 Query와 인덱싱된 chunk의 유사도를 계산해서 적합한 정보를 추출하고 답변을 생성한다.

Naive RAG 방식은 다음과 같은 한계점이 존재한다.

  • Retrieval 과정 : 불필요하거나 관련 없는 정보를 추출해서 답변의 품질을 낮추는 경우가 존재한다
  • Generation 과정 : retrieve한 정보를 충분히 반영하지 못해서 답변의 신뢰성을 낮출 수 있다. 또는 retrieve한 내용에만 너무 의존해서 추가적인 정보를 제공하지 못할 수도 있다.
  • Augmentation 과정 : retrieve한 정보를 각기 다른 task에 적용해야 하는 경우나, 중복되는 정보가 많은 경우에는 어떻게 처리할지 정하는 것이 어렵다.

2.2 Advanced RAG

Naive RAG의 한계점들을 극복하기 위해 Retrieval을 하기 전과 한 다음 단계에서 추가적인 테크닉들을 사용한다.

Pre-retrieval : query와 document들의 인덱싱 구조를 최적화한다. (data granularity, 메타데이터, alignment 최적화 등)

Post-retrieval : query와 retrieve된 context를 효과적으로 통합한다. (reranking, compressing)

 

2.3 Modular RAG

최근에는 Advanced RAG에서 성능과 범용성을 더 높이기 위해서 두가지 접근 방식을 사용한다.

  1. 추가적인 모듈 : Search, Memory, Predict, Task Adaptor 모듈들을 사용해서 retrieval과 처리 능력을 향상시킨다.
  2. 새로운 패턴 : Retrieve와 Read 구조에서 더 변형된 Demonstrate→Search→Predict나 Iterative하게 Retrieve&Read를 하는 패턴 등 모듈들을 활용해서 다양한 패턴을 설계한다.

2.4 RAG vs Finetuning

프롬프트 엔지니어링은 거의 모델의 내부 지식만을 사용한다.

RAG는 더 실시간 정보를 사용 가능하고 동적이라면, Finetuning은 더 정적이지만 모델 자체를 바꾼다는 점에서 customization이 가능하다.

3. Retrieval

Retrieval 단계에서 고려해야 할 부분들은 크게 출처, granularity(단위), 전처리와 embedding 선택이 있다.

 

3.1 Retrieval Source

데이터의 출처 : Structured(Graph), Semi-structured(table, PDF), Unstructured(text), LLM 생성

데이터 Granularity (쪼개는 단위) : token, phrase, sentence, chunks, document 등 여러 단위를 선택할 수 있다. 너무 잘게 쪼개면 의미를 제대로 담지 못하고, 너무 크게 쪼개면 redundacy나 noise가 추가될 수 있다.

 

3.2 Indexing Optimization

document들을 벡터화할 때 어떻게 인덱싱하냐에 따라서 성능이 달라질 수 있다.

앞서 언급된 쪼개는 단위를 설정하는 chunking 전략이나 메타 데이터를 붙일 수도 있다. 계층구조나 Knowledge graph를 바탕으로 인덱싱을 할 수도 있다.

 

3.3 Query Optimization

사용자의 query 자체에도 의존성이 높기 때문에 하나의 query를 여러 개의 query나 sub-query를 생성하는 등 더 의미를 추출하는 시도를 할 수 있다. 또는 Query를 변형해서 LLM에 더 적합한 형식으로 바꿔줄 수도 있다. 메타데이터나 의미를 바탕으로 다른 파이프라인으로 route할 수도 있다.

 

3.4 Embedding

embedding을 바탕으로 유사도를 계산하기 때문에 어떤 식으로 embedding하는지도 중요한 요소이다.

sparse encoder(BM25), dense retriever(BERT), 둘을 혼합하는 Mix/hybrid Retrieval, 파인튜닝을 적용하는 방식 등이 있다.

 

3.5 Adapter

모델을 직접 파인튜닝하는 것은 어려울 수 있어서, retriever나 다른 연결하는 요소들만을 adapter로 활용하는 방식도 존재한다.

4. Generation

retrieve한 정보 전부를 input으로 넣는 것은 바람직하지 못하다. 조정이 필요한데, 1) retrieve한 내용을 조정하거나 2) LLM을 조정할 수 있다.

 

4.1 Context Curation

Reranking : 가장 중요한 문서들을 중점적으로 확인하도록 점수를 매기고 재정렬을 할 수 있다.

Context Selection/Compression : 불필요한 내용과 토큰을 제거하여 노이즈를 줄여서 성능을 향상시킬 수 있다.

 

4.2 LLM Finetuning

파인튜닝을 통해 LLM의 input과 output을 조정함으로써 특정 데이터 형식과 원하는 스타일의 답변을 할 수 있게 된다. 이는 specific domain에서 크기가 비교적 작은 LLM이나 on-premise LLM를 사용할 때 유용하다.

5. Augmentation Process in RAG

가장 기본적인 singular retriever step은 복잡하고 multi-step 추론에는 부족한 경우가 있다. 따라서 retrieval 과정을 최적화해서 augment하는 시도들이 존재한다.

 

5.1 Iterative Retrieval

반복적으로 retrieval을 하는 것이다. robustness는 좋아지지만, noise가 축적될 수도 있다.

 

5.2 Recursive Retrieval

검색된 결과를 바탕으로 query를 더 정제하고, 다시 검색하는 과정이다. query를 개선함으로써 가장 좋은 정보를 선택하게 수렴할 수 있다는 장점이 있다.

 

5.3 Adaptive Retrieval

Toolformer와 같은 모델 agent처럼, 언제 어떤 내용을 retrieve하는게 최적인지를 LLM에게 학습시킨다.

6. Task and Evaluation

RAG를 평가할 때는 downstream task마다의 metric을 사용할 수도 있으나, Retrieval Quality와 Generation quality를 종합적으로 판단해야 한다.

평가하는 점수로는 추출된 정보과 관련이 있는 정보인지, 답변이 주어진 정보를 바탕으로 하는지, 답변이 질문과 관련이 있는지를 고려한다.

가져야하는 능력으로는 Noise Robustness, retrieve된 정보의 유용함을 판단하는 능력, 여러 정보를 합치는 것, misinformation도 인식하고 판단하는 능력이 있다.

정량적으로 평가하기 위한 benchmark와 tool들도 존재한다.

6. Task and Evaluation

  • LLM의 context가 길어지면서 RAG의 중요성도 낮아지는 것처롬 보이나, RAG를 통해 유용한 정보만 retrieve하는 것은 LLM의 성능 향상에도 도움이 된다.
  • RAG robustness : 틀린 정보를 주어도 예상치 못하게 성능이 향상되는 현상도 확인된다.
  • RAG와 파인튜닝을 합치는 Hybrid 접근 방법도 존재한다.
  • LLM과 달리 RAG의 경우 Scaling Law가 유효하지는 않다.
  • RAG의 실용성으로 인해 빠르게 적용될 수 있었는데(Production-ready) , 외부 데이터를 사용하기 때문에 개인정보 위험도 고려해야 한다.
  • Multi-modal : 이미지, 오디오, 비디오, 코드와 같이, 텍스트가 아닌 modal 데이터에도 적용할 수 있다.

7. Conclusion

LLM의 성능을 향상시키는 RAG의 발전, 패러다임 변화, 구성요소에 대해서 설명하였다. 실용성으로 academic과 industrial에서 사용될 수 있다.

 

링크 : 
https://arxiv.org/abs/2312.10997
728x90
반응형