[딥러닝] RAG(Retrieval Augmented Generation) 논문 번역

업데이트:

RAG(Retrieval Augmented Generation) 논문 번역

0. Abstract

사전 학습된 대규모 언어 모델(large language model)은 파리미터에서 사실적 지식을 저장할 수 있으며, 다운스트림(downstream) NLP 작업에서 최첨단 성능을 달성하는 것으로 나타났다. 그러나 이러한 모델이 지식에 접근하고 정밀하게 조작하는 능력은 여전히 제한적이라서 지식 집약적 작업에서는 과제 특화적인 아키텍처에 비해 성능이 뒤쳐진다. 또한 의사결정에 대한 출처를 제공하고, 그들 세계의 지식을 업데이트 하는 것은 여전히 해결되지 않은 연구 과제로 남아있다. 명시적인(explicit) nonparametric 메모리에 대해 식별 가능한 접근 메커니즘으로 무장된 사전 학습 모델은 이 문제를 극복할 수 있지만, 현재까지는 추출 기반 다운스트림 작업에 대해서만 연구되었다. 이때 nonparametric이라는 단어의 뜻을 알아보자. 일반적인 언어모델은 학습 과정에서 지식을 모델의 파라미터에 암묵적으로 저장한다. 즉, 신경망 가중치 자체에 정보가 내재한다는 뜻이다. 반면 nonparametric 메모리는 외부 데이터 저장소처럼 작동하며, 학습된 가중치와는 별개로 유지된다. 또한 명시적(explicit)이라는 말은 메모리에 저장된 데이터가 구조적으로 정리되어 있으며, 명확하게 접근가능함을 의미한다. 이는 모델이 필요한 정보를 명확히 요청하고 검색할 수 있다는 것을 내포한다. 우리는 RAG(Retrieval Augmented Generation)를 위한 범용 파인튜닝 방식을 알아볼 것이다. 이때 RAG 모델은 사전 학습된 파라미터 메모리와 nonparameter 메모리를 결합하여 언어 생성을 수행한다. 우리는 이 논문에서 RAG 모델을 소개하는데, parametric 메모리는 사전 학습된 seq2seq 모델이고, nonparametric 메모리는 사전학습된 신경망 검색기(neural retriever)를 통해 접근하는 위키피디아의 밀집 벡터 인덱스(dense vector index)이다. 여기서 검색기(neural retriever)란 검색 쿼리에 대해 적절한 문서를 찾아오는 역할을 담당하는 데이터 검색의 핵심 컴포넌트를 의미한다. 검색기는 검색 쿼리를 해석하고 인덱스 데이터를 활용해 데이터를 찾고, 필터링을 한 후 쿼리와 가장 관련성이 높은 데이터만 선발해 리턴한다. 우리는 두가지 RAG 구성 방식을 비교할 것이다. 첫번째는 생성된 전체 시퀀스에 대해 동일하게 검색된 문서를 조건으로 사용하는 방식이고, 두번째는 토큰마다 다른 문서를 사용할 수 있는 방식이다. 우리는 다양한 지식 집약적인 NLP 작업에서 모델을 파인튜닝하고 평가했으며, 세가지 오픈 도메인 QA 작어벵서 새로운 최고 성능을 달성했다. 이는 파라미터 기반 seq2seq 모델과 과제에 특화된 검색-추출 아키텍처를 능가하는 결과이다. 언어 생성 작업에서, RAG 모델이 최첨단 파라미터 전용 seq2seq 기준 모델에 비해 더 구체적이고 다양하며, 사실적인 언어를 생성한다는 것을 발견했다.



1. Introduction

사전 학습된 신경망 언어 모델은 데이터로부터 상당히 깊이 있는 지식을 학습할 수 있다는 사실이 입증되었다. 이들은 외부 메모리에 접근하지 않고도 매개변수화된(parameterized) 암묵적 지식 베이스로서 이를 수행할 수 있다. 이런 발전은 흥미롭지만, 이와 같은 모델에는 몇가지 단점이 존재한다. 이들은 그들의 메모리를 쉽게 확장하거나 수정할 수 없으며, 그들이 한 예측에 대해 명확한 통찰을 제공하기 어렵고, 때로는 할루시네이션과 같은 잘못된 정보를 생성할 수도 있다. 파라미터 매모리와 non-parametric(즉, 검색기반) 메모리를 결합한 하이브리드 모델은 이러한 문제 중 일부를 해결할 수 있다. 이러한 모델은 지식을 직접 수정하고 확장할 수 있으며, 접근한 지식을 검사하고 해석할 수 있기 때문이다. REALM과 ORQA는 최근 도입된 모델로서, 마스킹된 언어 모델과 미분 가능한 검색기(differentiable retriever)를 결합한 방식을 사용한다. 이들은 오직 오픈 도메인 추출 질문 응답에만 초점이 맞춰져있다. 이때 미분 가능한 검색기(differentiable retriever)에 대해 알아보자. 키워드 매칭이나 규칙 기반으로 검색하는 과거의 전통적인 검색기와는 달리 미분 가능한 검색기(differentiable retriever)는 검색 과정 자체가 신경망으로 구성되어 있어, 딥러닝 모델처럼 학습 가능하다. 이들은 검색 결과를 모델의 손실 함수에 연결하여, 검색기의 파라미털플 미분 및 업데이트 할 수 있다.

(Figure 1.)

여기에서 우리는 NLP의 주력 모델인 seq2seq 모델에 하이브리드 파라미터 메모리와 non-parametric 메모리를 도입한다.

우리는 사전 학습된 파라미터 메모리 생성 모델에 non-parametric 메모리를 추가하여, 검색 증강 생성(Retrieval-Augmented Generation, RAG)라고 부르는 범용(general-purpose) 파인튜닝 방식을 통해 이를 구현한다. 우리는 RAG 모델을 구축했다. 우리가 구축한 RAG 모델에서 파라미터 메모리는 사전 학습된 seq2seq 트랜스포머이고, non-parametric 메모리는 사전 학습된 신경망 검색기를 통해 접근하는 위키핃디아의 밀집 벡터 인덱스(dense vector index)이다. 우리는 이러한 구성 요소를 확률적 모델로 결합하여 엔드투엔드(end-to-end) 방식으로 학습한다. 이는 figure1에서 확인할 수 있다. 검색기(Dense Passage Retriever, 이하 DPR)는 인풋에 따라 잠재 문서를 제공한다. 이후 seq2seeq 모델(BART)은 이 잠재 문서와 입력을 함께 조건으로 사용하여 출력을 생성한다. 우리는 잠재 문서를 통해 상위-K 근사를 사용해 주변화(marginalize)한다. 이는 출력 단위로(모든 토큰에 대해 동일한 문서가 책임진다고 가정) 수행하거나, 토큰 단위로(각 토큰에 대해 다른 문서가 책임진다고 가정) 수행할 수 있다. T5나 BART와 마찬가지로, RAG는 모든 seq2seq 작업에 대해 파인튜닝이 가능하며, 이 과정에서 생성기와 검색기가 공동으로 학습된다.

예전에 광범위한 연구가 있었는데, 이는 특정 작업에 맞춰 처음부터 학습되는 non-parametric 메모리를 시스템에 통합하는 아키텍처를 제안하는 연구였다. 예를 들어, 메모리 네트워크(memory network), 스택 증강 네트워크(stack-augmented network), 그리고 메모리 레이어(momory layer) 등이 이에 해당한다. 이에 반해, 우리는 파라미터 메모리와 non-parametric 메모리 구성 요소가 모두 사전 학습되고 광범위한 지식으로 사전 로드된 설정을 탐구한다. 중요하게도, 사전 학습된 접근 메커니즘을 사용함으로써 추가학습 없이도 지식에 접근하는 능력이 제공된다.

우리가 얻은 결과는 지식 집약적인 작업에서 파라미터 메모리와 non-parametric 메모리를 생성 과정에서 결합했을 때의 이점을 강조한다. 이러한 작업은 외부 지식 출처에 대한 접근 없이는 인간도 합리적으로 수행하기 어려운 과제들이다. 우리의 RAG 모델은 Open Natural Questions, WebQuestions, 그리고 CuratedTrec에서 최고 성능을 달성했으며, TriviaQA에서는 특화된 사전 학습 목표를 사용하는 최신 접근법을 크게 능가하는 성과를 보였다. 이 작업들이 추출 기반 작업임에도 불구하고, 우리는 제약 없는 생성 방식이 이전의 추출 기반 접근법을 능가하는 것을 발견했다. 지식 집약적인 생성 작업을 위해 MS-MARCO 와 Jeopardy 질문 생성 실험을 수행한 결과, 우리 모델이 BART 기준 모델에 비해 더 사실적이고, 구체적이며, 다양성이 높은 응답을 생성한다는 것을 발견했다. FEVER 사실 검증 작업에서, 우리는 강력한 검색 감독(Retrieval Supervision)을 사용하는 최첨단 파이프라인 모델에 비해 4.3% 이내의 성능 차이를 달성했다. 이때 검색 감독(Retrieval Supervision)이란 검색 기반 작업에서 학습 모델이 올바른 검색 결과를 반환하도록 가이드하기 위해 명시적인 정답 데이터를 제공하여 학습시키는 과정을 의미한다. 예를 들어, “Who is the president of the United States?”라는 질문에 검색 감독은 정답으로 “Donald Trump”가 포함된 문서를 지정한다. 마지막으로, 우리는 non-parametric 메모리를 교체하여 세상이 변화함에 따라 모델의 지식을 업데이트 할 수 있음을 증명한다.



2. Methods

우리는 RAG 모델을 탐구한다. 이 모델은 인풋 시퀀스 $x$를 사용해 텍스트 문서 $z$를 검색하고, 이를 타겟 시퀀스 $y$를 생성할 때 추가적인 컨텍스트로 활용한다. Figure 1에서 볼수있듯, 우리 모델은 다음과 같은 두 가지 구성 요소를 활용한다.

(1) 검색기 $p_{\eta}(z | x)$

파라미터 $\eta$를 사용하며, 쿼리 $x$에 대해 텍스트 문서의 분포(상위-K개로 제한됨)를 반환한다.

(2) 생성기 $p_{\theta}(y_{i} | x, z, y_{1:i-1})$

파라미터 $\theta$로 파라미터화 되며, 이전 $i-1$개의 토큰 $y_{1:i-1}$과 오리지널 인풋 $x$, 그리고 검색된 문서 $z$를 기반으로 현재 토큰 $y_i$를 생성한다.

검색기와 생성기를 엔드투엔드로 학습하기 위해, 우리는 검색된 문서를 잠재변수로 간주한다. 우리는 잠재 문서를 주변화(marginalize)하여 생성된 텍스트의 분포를 생성하는 두가지 모델을 제안한다. 이 모델들은 잠재 문서를 처리하는 방식에서 차이를 보인다. 첫 번째 접근법인 RAG-Sequence에서는 모델이 동일한 문서를 사용하여 각 대상 토큰을 예측한다. 두 번째 접근법인 RAG-Token은 각 대상 토큰을 서로 다른 문서를 기반으로 예측할수있다. 다음 절에서는 두 모델을 공식적으로 소개하고, $p_\eta$ 및 $p_\theta$의 구성 요소와 함께 학습 및 디코딩 절차를 설명한다.



2-1. Models

(1) RAG-Sequence model

RAG-Sequence model은 동일한 검색된 문서를 사용하여 전체 시퀀스를 생성한다. 기술적으로, RAG-Sequence 모델은 검색된 문서를 단일 잠재 변수로 취급하며, 이를 주변화(marginalize)하여 상위-K 근사를 통해 seq2seq 확률 $p(y|x)$를 계산한다. 구체적으로, 검색기를 사용하여 상위 $K$개의 문서를 검색하고, 생성기는 각 문서에 대해 아웃풋 시퀀스 확률을 생성한다. 이후, 이러한 확률들을 주변화(marginalize)하여 최종 아웃풋 확률을 계산한다.

$p_{RAG-Sequence}(y|x)\approx \sum_{z\in top-k(p(\cdot|x))}p_{\eta}(z|x)p_{\theta}(y|x,z)$

위 수식에서 우변은 다시 다음 식으로 정리할 수 있다.

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

(2) RAG-Token Model

RAG-Token 모델에서는 각 대상 토큰에 대해 서로 다른 잠재 문서를 선택할 수 있으며, 이에 따라 주변화(marginalization)을 수행한다. 이는 생성기가 답변을 생성할 때, 여러 문서에서 콘텐츠를 선택할 수 있도록 한다. 구체적으로, 검색기를 사용하여 상위 K개의 문서를 검색한 후, 생성기는 각 문서에 대해 다음 출력 토큰의 분포를 생성한다. 이후, 이 분포를 주변화(marginalize)하고, 다음 출력 토큰에 대해 동일한 과정을 반복한다. 이를 공식적으로 정의하면 다음과 같다.

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

마지막으로, RAG는 대상 클래스를 길이가 1인 타겟 시퀀스로 간주하여 시퀀스 분류 작업에도 사용할 수 있다. 이 경우, RAG-Sequence와 RAG-Token은 동등하게 동작한다.

2-2. Retriever: DPR

검색 구성 요소 $p_{\eta}(z|x)$는 Dense Passage Retriever(DPR)에 가반한다. DPR은 다음과 같은 바이엔코더(bi-encoder) 아키텍처를 따른다.

$p_{\eta}(z|x) \propto exp(\textbf{d}(z)^{T}\textbf{q}(x))$

$\textbf{d}(z) = BERT_{d}(z), \textbf{q}(z) = BERT_{q}(z)$

여기서 $\textbf{d}(z)$는 $BERT_{BASE}$ 문서 인코더가 생성한 문서의 밀집 표현(dense representation)을 나타내며, $\textbf{q}(x)$ 또한 $BERT_{BASE}$에 기반한 쿼리 인코더가 생성한 쿼리 표현을 나타낸다. 상위 $k$개의 문서 $z$ 목록을 계산하는 $top-k(p_{\eta}(\cdot|x))$는 사전 확률 $p_{\eta}(z|x)$가 가장 높은 문서들을 찾는 문제로, 이는 최대 내적 검색(Maximum Inner Product Search, MIPS) 문제에 해당한다. 이 문제는 서브 선형 시간(sub-liear time)으로 근사적으로 해결할 수 있다. 우리는 DPR의 사전 학습된 바이엔코더를 사용해 검색기를 초기화하고 문서 인덱스를 구축한다. 이 검색기는 TriviaQA 질문과 Natural Question에 대한 답을 포함하는 문서를 검색하도록 학습되었다. 우리는 이 문서 인덱스를 non-parametric 메모리라고 부른다.

2-3. Generator: BART

생성기 구성 요소 $p_{\theta}(y_i | x, z, y_{1:i-1})$는 종류에 상관없이 어떠한 인코더-디코더 구조를 사용하여도 모델링 할 수 있다. 우리는 BART-large를 사용하는데, 이는 4억개의 파라미터를 가진 사전 학습된 seq2seq 트랜스포머에 해당한다. BART에서 인풋 데이터 $x$와 검색된 콘텐츠 $z$를 결합하여 생성할 때, 우리는 단순히 이들을 연결(concatenate)한다. BART는 노이즈 제거 목적(denoising objective)와 다양한 노이즈 생성 함수(noising function)를 사용하여 사전 학습되었다. BART는 다양한 생성 작업에서 최첨단 성능을 달성했으며, 유사한 크기의 T5 모델을 능가하는 성능을 보여준다. 우리는 BART 생성기 파라미터 $\theta$를 이후 파리미터 메모라라고 지칭할 것이다.



2-4. Training

우리는 어떤 문서를 검색해야 하는지에 대한 직접적인 감독 없이 검색기와 생성기 구성 요소를 공동으로 학습한다. 주어진 인풋/아웃풋 쌍 $(x_j, y_j)$으로 구성된 파인튜닝 학습 말뭉치(corpus)를 사용하여, 우리는 각 대상에 대한 부정적 주변 log-likelihood(negative marginal log-likelihood)를 최소화 한다. 이를 수식으로 표현하면 다음과 같다.

$\sum_{j}-\log{p(y_j | x_j)}$

이를 Adam 옵티마이저를 사용한 확률적 경사 하강법(stochastic gradient descent)로 최적화 한다. 학습 중에 문서 인코더 $BERT_d$를 업데이트 하는 것은 비용이 많이 든다. 이는 REALM이 사전 학습 중 수행하는 것처럼 문서 인덱스를 주기적으로 업데이트 해야하기 때문이다. 우리는 강력한 성능을 위해 이러한 단계가 필요하지 않음을 발견했으며, 문서 인코더(및 인덱스)는 고정된 상태로 유지하고, 쿼리 인코더 $BERT_q$와 BART 생성기만 파인튜닝 한다.

2-5. Decoding

테스트 시, RAG-Sequence와 RAG-Token은 $\text{argmax}_{y}p(y|x)$를 근사화 하기 위해 서로 다른 방식을 필요로 한다.

(1) RAG-Token

RAG-Token 모델은 다음과 같은 전이 확률(transition probability)을 가진 표준 자기 화귀(seq2seq) 생성기로 간주할 수 있다.

$p_{\theta}^{\prime}(y_i | x, y_{1:i-1}) = \sum_{z\in top-k(p(\cdot|x))}p_{\eta}(z_i | x)p_{\theta}(y_i | x, z_i, y_{1:i-1})$

디코딩을 위해, $p_{\theta}^{\prime}(y_i | x, y_{1:i-1})$를 표준 빔 디코더(beam decoder)에 삽입하여 사용할 수 있다.

(2) RAG-Sequence

RAG-Sequence의 likelihood $p(y | x)$는 일반적인 토큰 단위 likelihood로 분리되지 않으ㅏ므로, 단일 빔서치를 사용하여 해결할 수 없다. 대신, 각 문서 $z$에 대해 빔 서치를 실행하며, 각 가설을 $p_{\theta}(y_i | x, z_i, y_{1:i-1})$를 사용해 점수화 한다. 이 방식은 가설의 집합 $Y$를 생성하며, 이 중 일부는 모든 문서의 빔에서 나타나지 않을수도 있다. 가설 $y$의 확률을 추정하기 위해, $y$가 빔에 나타나지 않은 각 문서 $z$에 대해 추가적인 순방향 패스(forward pass)를 실행한다. 그런다음, 생성기의 확률을 $p_{\eta}(z | x)$와 곱한 후 주변화(marginalization)을 위해 빔 전체에서 확률을 합산한다. 우리는 이러한 디코딩 과정을 “Thorough Decoding”이라고 부른다. 아웃풋 시퀀스가 길어질 수록 $|Y|$(가설의 집합 크기)가 커질 수 있으며, 이는 많은 순방향 패스를 필요로 하게 된다. 더 효율적인 디코딩을 위해, 다음과 같은 추가 근사를 적용할 수 있다.

$p_{\theta}(y | x, z_i) \approx 0$

이는 $y$가 $x, z_i$에서의 빔 서치 중 생성되지 않았을 경우에 해당한다. 이 접근법은 후보 집합 $Y$가 생성된 후에는 추가적인 순방향 패스를 실행할 필요를 없애준다. 우리는 이러한 디코딩 과정을 “Fast Decoding”이라고 부른다.