본문 바로가기
Drawing (AI)/Paper review

[논문 리뷰] RAG: Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

by 생각하는 이상훈 2024. 10. 11.
728x90

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

NeurIPS 2020. [Paper] [Page] [Github]
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
Facebook AI Research | University College London | New York University
22 May 2020


Introduction

사전 학습된 대규모 언어 모델은 매개변수 안에 많은 양의 지식을 내장하고 있어, 다양한 자연어 처리 작업에서 우수한 성능을 발휘합니다. 그러나 이러한 모델들은 지식을 수정하거나 확장하기 어렵고, 예측에 대한 명확한 설명을 제공하지 못하며 Hallucination과 같은 잘못된 정보를 생성할 수 있는 한계가 있습니다. 이를 극복하기 위해 등장한 것이 하이브리드 모델입니다. 이 모델은 기존의 매개변수 기반 메모리 외에도 비매개변수 메모리(검색 기반 지식)를 함께 사용합니다.

 

REALM과 ORQA과 같은 기존의 하이브리드 모델들은 텍스트를 추출하는 질문 응답 작업에서 긍정적인 결과를 보였지만 이러한 접근법은 아직 특정 작업에 국한되어 있었습니다. 이에 대해 본 논문에서는 하이브리드 접근법을 자연어 처리의 핵심 작업 중 하나인 seq2seq모델에 적용한 새로운 방법론을 제시합니다. 이 방법을 RAG(Retrieval-Augmented Generation)라고 부릅니다.

 

RAG 모델은 사전 학습된 seq2seq 모델과 외부 데이터를 검색해 활용할 수 있는 DPR(Dense Passage Retriever)를 결합한 것입니다. 이를 통해 위키피디아와 같은 방대한 지식 기반을 검색해서 보다 정확하고 사실적인 언어 생성을 가능하게 합니다. 이 모델은 검색된 정보를 바탕으로 문장을 생성하며 이를 통해 단순한 매개변수 모델보다 더욱 구체적이고 다양한 결과를 만들어냅니다.

 

논문에서는 두 가지 RAG 접근법을 비교합니다. 하나는 생성되는 모든 문장이 동일한 검색된 문서에 의존하는 방식이고 다른 하나는 각 단어마다 다른 문서를 활용해 더 다양한 지식을 적용하는 방식입니다. 실험 결과, RAG 모델은 Natural Questions, WebQuestions, CuratedTrec 같은 오픈 도메인 QA 작업에서 최첨단 성과를 기록했으며 TriviaQA와 같은 작업에서도 전문화된 학습 방법을 사용하는 모델들을 능가했습니다.


Methods

이 논문에서 다루는 RAG 모델은 입력 시퀀스 x를 사용해 텍스트 문서 z를 검색한 뒤, 이를 타겟 시퀀스 y를 생성하는 추가적인 문맥으로 활용합니다. 이때 모델은 기본적으로 두 가지 주요 구성 요소로 이루어져 있습니다.

Retriever는 주어진 입력 x로부터 텍스트의 분포를 반환하는 역할을 하고 generator는 해당 검색된 패시지와 이전 토큰을 바탕으로 새로운 토큰을 생성합니다.

이때 위의 두 모델을 end-to-end 방식으로 학습하기 위해, 검색된 문서를 잠재 변수로 간주하여 훈련합니다. 잠재 문서를 처리하는 방식에 따라 두 가지 모델이 제안됩니다.

1. RAG-Sequence: 동일한 문서를 사용해 모든 타겟 토큰을 예측합니다.

2. RAG-Token: 각 타겟 토큰을 예측할 때마다 다른 문서를 사용할 수 있습니다.

두 가지 모델을 혼용함으로써 RAG 모델은 다양한 문서로부터 더 풍부한 정보를 끌어내어 더 정확한 텍스트 생성을 가능하게 합니다.


Models

RAG-Sequence Model

RAG-Sequence 모델은 검색된 단일 문서를 사용해 전체 시퀀스를 생성합니다. 이 모델은 검색된 문서를 하나의 잠재 변수로 취급하고 이를 통해 시퀀스-투-시퀀스 확률 p(y|x)를 계산합니다. 구체적으로는 retriever가 상위 K개의 문서를 검색하고 generator가 각 문서에 대해 출력 시퀀스의 확률을 생성한 다음 이를 모두 마지널라이즈(marginalize) 처리하여 최종 출력을 만듭니다.

 

RAG-Token Model

RAG-Token 모델은 각 타겟 토큰마다 다른 잠재 문서를 선택할 수 있습니다. 이 모델은 여러 문서에서 정보를 선택해 답변을 생성할 때 더 다양한 컨텐츠를 반영할 수 있습니다. 구체적으로 retriever가 상위 K개의 문서를 검색한 뒤 generator가 각 문서에 대해 다음 출력 토큰의 분포를 생성하고 이를 마지널라이즈 처리합니다. 이 과정을 반복하여 각 토큰마다 다른 문서를 참고하면서 시퀀스를 생성합니다. 이 방식은 답변 생성 시 다양한 문서에서 내용을 참고할 수 있으므로 더 유연한 생성이 가능하게 합니다.

 

Retriever: DPR

Retrieval component pη(z|x)는 DPR을 기반으로 합니다. DPR은 아래의 bi-encoder 구조를 갖고 있습니다.

 

  • 문서 표현 d(z): 문서는 BERTBASE 기반의 문서 인코더에 의해 밀집 벡터로 변환됩니다.
  • 쿼리 표현 q(x): 쿼리 x 역시 BERTBASE를 기반으로 한 쿼리 인코더에 의해 벡터로 변환됩니다.

이렇게 변환된 문서와 쿼리 벡터 간의 내적을 계산하여 두 벡터 간의 유사도를 측정합니다. top-K(pη(·|x))는 쿼리 x와 가장 높은 내적을 가지는 상위 K개의 문서를 검색하는 문제로 이는 MIPS(Maximum Inner Product Search) 문제로 치환되며 sub-linear 시간 안에 근사적으로 해결될 수 있습니다. 여기서 문서 인덱스는 비매개변수 메모리로 간주됩니다. 이 검색기는 주로 TriviaQA와 Natural Questions와 같은 질문에서 답을 포함하는 문서를 검색하도록 학습되었습니다.

 

Generator: BART

Generator 는 임의의 인코더-디코더를 사용하여 모델링할 수 있다. 본 논문에서는 사전 학습된 seq2seq transformer인 BART-large를 사용하였습니다. BART에서 생성할 때 입력 x와 검색된 콘텐츠 는 간단히 concat되어 결합됩니다. BART generator의 파라미터  parametric memory로 간주되고 입력 x와 검색된 콘텐츠 z를 결합하여 사용합니다. x와 z는 단순하게 concatenate되어 BART에 입력됩니다. 이를 통해 BART는 입력과 검색된 문서를 바탕으로 출력 시퀀스를 생성하게 됩니다.

 

Training

RAG 모델에서는 retriever와 generator를 함께 학습하지만, 어떤 문서를 검색해야 하는지에 대한 direct supervision은 없습니다. 즉 학습 데이터가 어떤 문서를 검색해야 하는지 명시적으로 알려주지 않고 입력/출력 쌍을 바탕으로 최적의 문서를 자동으로 찾아내도록 학습합니다.

 

주어진 학습 데이터셋에는 입력과 출력 쌍 (xj, yj)가 포함되어 있습니다. 모델은 입력 xj를 바탕으로 출력 yj를 생성하는 과정에서 negative marginal log-likelihood를 최소화하도록 학습합니다. 즉, − log p(yj | xj)를 최소화하는 것이 목표입니다. 이 최적화를 위해 SGD와 Adam 옵티마이저를 사용합니다.

 

Document encoder(BERTd)를 학습 과정에서 업데이트하는 것은 매우 비용이 많이 드는 작업입니다. 문서 인코더를 업데이트할 때마다 문서 인덱스도 주기적으로 갱신해야 하기 때문입니다. 이전의 연구에서는 이러한 작업이 필수적이라고 여겼으나 이 논문에서는 이러한 단계가 없어도 된다고 결론 내렸습니다. 따라서 RAG 모델에서는 문서 인코더와 문서 인덱스는 고정된 상태로 유지하며 Query encoder(BERTq)와 BART 생성기만 fine-tuning합니다. 이를 통해 성능을 유지하면서도 효율적인 학습이 가능해집니다.

 

Decoding

RAG 모델의 디코딩 과정은 RAG-Token과 RAG-Sequence 모델에 따라 다른 방식을 사용합니다. 이 두 가지 모델은 출력 시퀀스를 생성할 때, 각 토큰이나 시퀀스에 대해 다르게 처리해야 하므로 디코딩 과정도 달라집니다.

 

RAG-Token 모델은 standard한 autoregressive 시퀀스 생성 모델로 간주될 수 있습니다. 즉 각 토큰을 생성할 때 이전 토큰과 검색된 문서를 기반으로 생성 확률을 계산합니다.

 

위의 결과를 standard beam decoder에 입력하여 decoding할 수 있습니다.

 

RAG-Sequence 모델에서는 시퀀스 전체의 likelihood를 계산할 때 단일 beam search로 해결할 수 없습니다. 왜냐하면 이 모델은 각 문서 z에 대해 별도로 시퀀스를 생성하기 때문입니다. 각 문서 z에 대한 beam search를 독립적으로 수행한 후 각 문서에서 생성된 가설을 모아 가능성 있는 시퀀스 집합 Y를 생성합니다. 일부 가설은 모든 문서의 beam에서 나타나지 않을 수 있습니다. 가설 y의 확률을 추정하기 위해 y가 특정 문서의 beam에서 생성되지 않은 경우에는 추가로 forward pass를 수행해 해당 문서에서의 확률을 계산하고 이를 바탕으로 문서별 확률을 곱한 후 모두 더해 최종 확률을 계산합니다. 이 과정을 Thorough Decoding이라고 부릅니다. Thorough Decoding은 긴 출력 시퀀스에서 매우 많은 계산을 요구하므로 이를 더 효율적으로 처리하기 위해 Fast Decoding이라는 방법을 사용합니다. Fast Decoding에서는 beam search에서 생성되지 않은 시퀀스에 대해 추가 forward pass를 수행하지 않고 이를 확률 0으로 간주하여 효율성을 높입니다.


Experiments

이 논문에서는 RAG 모델을 다양한 knowledge-intensive tasks에서 실험했습니다. 실험에는 위키피디아 2018년 덤프(약 2,100만 개 문서)를 비매개변수적 지식 소스로 사용하며 각 문서를 100단어씩 나누고 FAISS 기반의 MIPS 인덱스를 사용해 빠르게 검색할 수 있도록 설정했습니다. 주요 실험으로는 Open-domain Question Answering, Abstractive Question Answering, Jeopardy Question Generation, Fact Verification이 진행되었습니다.  Open-domain QA 실험에서는 Natural Questions, TriviaQA, WebQuestions, CuratedTrec 데이터셋을 사용해 RAG가 추출형 QA와 폐쇄형 QA 모델보다 더 나은 성과를 보였습니다. Abstractive QA 실험에서는 MSMARCO를 통해 자연어 생성 성능을 테스트했습니다. Jeopardy Question Generation 실험에서는 BART와 비교해 RAG가 더 사실적이고 특정한 질문을 생성하는 능력이 있다는 것을 확인했습니다. 마지막으로 Fact Verification실험에서 FEVER데이터셋을 사용해 RAG의 사실 검증 성능을 실험했으며 이 과정에서 직접적인 검색된 증거에 대한 감독 없이도 우수한 성과를 내는 것을 확인했습니다.


Results

Open-domain Question Answering

 

Abstractive Question Answering

RAG-Sequence는 MS-MARCO NLG 작업에서 BART보다 2.6 BLEU 포인트와 2.6 ROUGE-L 포인트 더 높은 성능을 기록했습니다. RAG는 기존 최첨단 모델과 성능이 비슷했는데 이는 RAG 모델이 학습 데이터에서 gold passages에 접근할 수 없었음에도 불구하고 비슷한 수준의 성과를 보였다는 점에서 놀라운 결과입니다. 특히 많은 질문이 위키피디아만으로는 답변이 불가능하지만, RAG는 사실적으로 더 정확한 답변을 생성하며 hallucination이 적었습니다. 또한 RAG는 BART보다 다양한 답변을 생성하는 것으로 나타났습니다.

 

Jeopardy Question Generation

RAG-Token은 제퍼디 질문 생성에서 RAG-Sequence보다 우수한 성능을 보였으며, BART보다 Q-BLEU-1 점수가 더 높았습니다. 인간 평가에서도 RAG는 더 사실적인 질문을 생성했고 42.7%의 경우에서 BART보다 더 정확한 사실을 생성한 것으로 나타났습니다. RAG는 또한 BART보다 더 구체적인 질문을 생성하는 능력이 우수했습니다. 제퍼디 질문은 보통 두 개의 서로 다른 정보를 포함하는데 RAG-Token은 여러 문서에서 정보를 결합하여 답변을 생성할 수 있는 능력 덕분에 더 좋은 성과를 보였습니다.

 

Fact Verification

아래의 결과를 통해 Hemingway라는 입력에 대해 RAG-Token 모델은 첫 번째 문서에서 "A Farewell to Arms"를 생성할 때 posterior probability가 높았고, 두 번째 문서에서 "The Sun Also Rises"를 생성할 때 posterior probability가 높았습니다. 이를 통해 어떤 문서를 통해 판단하느냐에 따라 모델이 해당 문서에 맞춰서 더 높은 확률을 할당하는 모습을 확인할 수 있습니다.

아래의 예시를 통해 RAG 모델이 더 구체적이고 사실적으로 정확한 응답을 생성한다는 것을 확인할 수 있습니다.

?는 사실이 잘못되었다는 뜻이고 *는 부분적으로 사실이라는 뜻입니다.

 

Jeopardy Question Generation Task에 대한 사람의 평가(좌)와 생성 작업에서 전체 tri-gram 중 고유한 tri-gram 의 비율(우) 입니다.

 

Dev set에서의 Ablation studies결과 입니다. FEVER는 분류 작업이므로 두 RAG 모델은 동일하게 작동합니다.

 

 

더 많은 문서를 검색했을 때의 NQ(Natural Questions) 성능(좌)

NQ에서의 검색 리콜 성능(중)

더 많은 문서를 검색했을 때의 MS-MARCO에서의 Bleu-1 및 Rouge-L 성능(우)


728x90