본문 바로가기
NLP/RAG

RAG (2020) 논문 리뷰

by 아르카눔 2025. 1. 11.

RAG는 Retrieval-Augmented Generation 의 약자로 논문의 이름은 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks다. (링크)

 

 

저자는 Patrick Lewis, Ethan Perez, Aleksandra Piktus, Fabio Petroni, Vladimir Karpukhin, Naman Goyal, Heinrich Küttler, Mike Lewis, Wen-tau Yih, Tim Rocktäschel, Sebastian Riedel, Douwe Kiela다.  

 

 

지금의 RAG는 주로 LLM의 답변 생성에 있어서 문맥 context로 주어지는데 본래의 논문에서는 RAG를 활용하여 모델 자체를 파인 튜닝 방법으로 학습한다. 

 

 

Abstract

General-purpose fine-tuning을 위해서 retrieval-augmented generation (RAG)를 제안한다.

 

 

2. Methods

 

 

 

Retriver $p_{\eta}(z | x)$는 주어진 쿼리 $x$를 토대로 텍스트에 대한 top-K 분포를 반환한다.

 

Generator $p_{\theta}(y_i \, | \, x, z, y_{1:i - 1})$은 이전의 $i - 1$개의 토큰와 오리지널 입력 $x$, retrieved passage $z$를 기반하여 다음 토큰 $y_i$를 예측한다. 

 

 

저자들은 2가지 RAG 모델을 제시한다. 

 

RAG-Sequence Model

 

Complete sequence 완전한 문장 시퀀스를 생성하기 위해서 retrieved document를 사용한다.

 

$ p_{\text{RAG-Sequence}} (y | x) \approx \sum_{z \in \text{top-k}(p(\cdot | x))} p_{\theta}(y | x, z) = \sum_{z \in \text{top-k}(p(\cdot | x))} p_{\eta}(z | x) \prod_{i}^{N} p_{\theta}(y_i \, | \, x, z, y_{1:i - 1}) $

 

 

RAG-Token Model

 

개별 타켓 토큰에 대한 서로 다른 latent document를 뽑고 marginalize하는 모델이다.

 

$ p_{\text{RAG-Token}} (y | x) \approx  \prod_{i}^{N} \sum_{z \in \text{top-k}(p(\cdot | x))} p_{\eta}(z | x)  p_{\theta}(y_i \, | \, x, z, y_{1:i - 1}) $

 

 

 

Retriever: DPR

 

Retrieval component $p_{\eta}(z | x)$는 DPR (Dense Passage Retrieval for Open-Domain Question Answering) 논문 (링크) 에서 기반한 방법이다.

 

DPR은 bi-encoder 아키텍처다.  

 

$p_{\eta}(z | x) \propto exp( \textbf{d}(z)^{T} \textbf{q}(x) )$.  $\textbf{d}(z) = \textbf{BERT}_d (z), \textbf{q}(z) = \textbf{BERT}_q (z),$

 

$\textbf{d}(z)$는 BERT base를 사용한 document에 대한 dense representation으로 document encoder다.  

 

$\textbf{q}(z)$는 BERT base를 사용한 document에 대한 query representation으로 queryencoder다.  

 

Top-k document를 계산하는 과정은 input $x$에 대한 가장 높은 확률을 가지는 $ p_{\eta}(z | x) $를 가지는 k개의 문서들이다. 이때 Maximum Inner Product Search (MIPS) 방법으로 찾는다. 말 그대로 유사도를 inner product 내적으로 사용하고 이 값이 최대가 되는 문서들을 k개 뽑는다는 말이다.

 

 

 

 

Generator: BART

 

Generator 성분 $p_{\theta}(y_i \, | \, x, z, y_{1:i - 1})$은 encoder-decoder 구조의 모델을 사용하는데 저자들은 BART-large와 pre-trained seq2seq transformer with 400M을 사용했다.

 

Decoding

Standard Beam Search를 사용한다.

 

 

Beam search는 이 블로그들 (링크1, 링크2, 링크3)를 참고했다. 

  • Exhaustive Search : 전체 조건부 확률을 곱해서 joint probability를 도출하고 이를 통해서 모든 경우를 찾는 Exhaustive Search
  • Greedy Search : 그리고 가장 높은 확률의 토큰만 탐색하는 Greedy Search
  • Beam Search : 위 둘을 절충하여 Top-K개의 토큰만을 탐색하는 방법이 바로 Beam Search다. 

 

 

4. Results

 

 

REALM이라는 또 다른 Retrieval을 사용한 방법이 있고 앞서 언급했던 오리지널 DPR에 비해 대체로 RAG가 더 좋은 성능임을 알 수 있다. 

 

 

 

 

References:

https://medium.com/rate-labs/rag%EC%9D%98-%EC%A7%A7%EC%9D%80-%EC%97%AD%EC%82%AC-%ED%9B%91%EC%96%B4%EB%B3%B4%EA%B8%B0-%EC%B2%AB-%EB%85%BC%EB%AC%B8%EB%B6%80%ED%84%B0-%EC%B5%9C%EA%B7%BC-%EB%8F%99%ED%96%A5%EA%B9%8C%EC%A7%80-53c07b9b3bee

https://littlefoxdiary.tistory.com/4

https://velog.io/@bo-lim/Beam-Search

https://velog.io/@khs0415p/NLP-Beam-search

 

 

 

'NLP > RAG' 카테고리의 다른 글

TAG (2024) 논문 리뷰  (1) 2025.04.27
Self-RAG (2023) 논문 리뷰  (0) 2025.04.17
Self-RAG, RAGAS 그리고 RAG Evaluation by LLM  (0) 2025.04.02
RAGAS의 metric별 required columns  (0) 2025.03.28
RAG에서의 평가 지표  (0) 2025.03.26