본문 바로가기
NLP/논문리뷰

[논문 Review] 17. RAG (Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks)

by ㅣlㅣl 2024. 6. 27.
논문의 핵심 내용 한줄 요약
parametric memory + Non-parametric memory로 다양한 태스크에서의 성능을 높이자!

 

그 유명한 RAG 논문 리뷰를 이제서야 하게 되었다..

가짜연구소 컨퍼런스 갔다와서 RAG hands-on 세션을 듣고, 더욱 더 논문을 읽어봐야겠다는 생각을 하게 되었다.

-> 핸즈온 세션에 대한 리뷰와 추가 조사는 다음 포스팅에서!

 

https://arxiv.org/abs/2005.11401

 

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

Large pre-trained language models have been shown to store factual knowledge in their parameters, and achieve state-of-the-art results when fine-tuned on downstream NLP tasks. However, their ability to access and precisely manipulate knowledge is still lim

arxiv.org

 


 

1. Introduction

선행 연구

사전 학습된 LLM은 엄청난 양의 데이터로부터 지식을 학습하는데, 이를 기반으로 외부 메모리에 대한 액세스 없이도 implicit한 knowledge base를 포함하고 있다고 볼 수 있다.

그러나 implicit한 지식 저장방법에는 아래와 같은 단점이 존재한다.

  • 메모리를 쉽게 확장하거나 수정할 수 없음
  • 예측에 대한 근거자료를 명확하게 제시할 수 없음
  • Hallucination 문제가 존재

 

이를 해결하기 위해 parametric memory + non-parametric memory를 결합한 hybrid model이 나왔다.

parametric memory : implicit knowledge, 모델이 사전학습을 통해 얻은 지식
non-parametric memory : explicit knowledge, 외부 데이터 검색 기반

hybrid model은 knowledge memory를 직접 수정 및 확장할 수 있기 때문에 이러한 문제들을 어느 정도 해결할 수 있다.

대표적인 예시로는 MLM과 retriever를 결합한 REALM, ORQA가 있다.

https://ll2ll.tistory.com/31

 

[논문 Review] 06. REALM : Retrieval-Augmented Language Model Pre-Training

retriever - encoder 모델 구조를 통해 QA task에서의 성능을 높이자! https://arxiv.org/abs/2002.08909 REALM: Retrieval-Augmented Language Model Pre-Training Language model pre-training has been shown to capture a surprising amount of world kno

ll2ll.tistory.com

https://ll2ll.tistory.com/90

 

[논문 Review] 16. Dense Passage Retrieval for Open-domain Question Answering

논문의 핵심 내용 한줄 요약Dense passage를 통해 ODQA에서의 성능을 향상시키자! AbstractOpen-domain question answering (ODQA) 태스크는 candidate context 선택을 위해 passage retrieval에 의존하고, 이전에는 retrieval

ll2ll.tistory.com

-> DPR에 ORQA 관련 내용이 일부 언급되어 있다!

 

하지만 이전 연구들은 "extractive" QA에서만 다루어졌기 때문에, 본 논문에서는 hybrid 방식을 NLP의 핵심인 seq2seq 모델에 도입하고자 한다.

 

 

RAG

RAG는 범용적으로 사용될 수 있는 fine-tuning approach로, pre-trained seq2seq (parametric memory) 에 위키피디아의 dense vector index (non-parametric memory) 를 결합하는 방식이다.

그림 1. RAG 전체 아키텍처

  • Retriever : 사용자 쿼리에 관련된 문서를 제공하는 역할
    • (\(P_{\eta}(z|x)\))
    • 주어진 쿼리 x에 대해 상위 K개의 text passages를 반환
    • DPR

  • Generator : 쿼리, 문서들을 바탕으로 출력 답변 생성
    • (\(P_{\eta} (y_i | x, z, y_{1:i-1})\))
    • 이전에 생성된 i-1개의 토큰 \(y_{1:i-1}\), 쿼리 x, 반환된 문서 z를 기반으로 답변을 생성
    • seq2seq (BART)
    • 이외에도 T5 등 다양한 seq2seq 구조 모델에 사용될 수 있음

이러한 RAG 모델은 openNQ, WebQuestions, CuratedTrec에서 SOTA를 달성했다. 또한 non-parametric을 교체하므로써, 세상의 변화에 따른 모델 지식을 보다 쉽게 업데이트 할 수 있음을 보였다. 

 

 

2. Methods

retriever, generator를 end-to-end로 학습하기 위해 retrieved document를 latent variable로 두고, 서로 다른 방식으로 latent variable을 처리하는 두 가지 방식에 대해 실험을 진행한다.

  • RAG-sequence : 모델이 동일한 문서를 사용해 각 대상 토큰을 예측
  • RAG-Token : 다른 문서를 기반으로 각 대상 토큰을 예측

 

2.1 Models

RAG-Sequence Model

RAG sequence model은 동일한 retrieved document를 사용해서 전체 sequence를 생성한다.

 

RAG sequence 수식

Retriever를 사용해 상위 K개의 문서를 검색하고, generator가 각 문서에 대한 출력 시퀀스 확률을 생성한 다음 marginalize 한다.

  1. Retriever로 쿼리와 관련된 K개의 문서를 찾는다.
  2. K개 문서 각각에 대해 정답 시퀀스 y를 끝까지 생성한다.
  3. 2에서 구한 K개의 확률 분포 시퀀스를 합친다. (sequence-level marginalize)

 

이미지 출처 : https://nlp.jbnu.ac.kr/papers/hclt2022_RAG_ODQA.pdf

위 그림과 같이 관련 있는 문서 K개에 대하여 시퀀스 길이 N까지 예측한 확률 분포 시퀀스를 모두 더한 뒤, 각 위치에서 가장 높은 확률을 갖는 토큰들을 뽑아내면 된다. 

 

 

RAG-Token Model

RAG Token model은 각 target token에 대해 서로 다른 retrieved document를 사용한다. 이를 통해 Generator가 답변을 생성할 때 여러 문서에서 text passages를 가져올 수 있다.

RAG token 수식

 

Retriever를 사용해 상위 K개의 문서를 검색하고, generator가 각 문서에 대해 다음 출력 토큰에 대한 분포를 생성한 다음 marginalize 하며, 다음 토큰 출력으로 이어나간다.

  1. Retriever로 쿼리와 관련된 K개의 문서를 찾는다.
  2. i번째 토큰을 생성할 때 K개 문서 각각에 대해서 구한다.
  3. 2에서 구한 확률 분포 시퀀스를 각 timestep마다 합친다 (token-level marginalize)
  4. 이를 시퀀스 길이 N만큼 반복한다.

 

이미지 출처 : https://nlp.jbnu.ac.kr/papers/hclt2022_RAG_ODQA.pdf

매 timestep마다 각 top-k 문서로 토큰 확률분포를 생성하고 marginalize한다.

target sequence를 length = 1로 지정해서 sequence classification task에도 사용될 수 있는데, 이 때는 RAG-sequence, RAG-token 이 동일하다.

 

 

2.2 Retriever : DPR

DPR에 대한 자세한 설명은 이전 포스팅을 참고하자.

https://ll2ll.tistory.com/90

 

[논문 Review] 16. Dense Passage Retrieval for Open-domain Question Answering

논문의 핵심 내용 한줄 요약Dense passage를 통해 ODQA에서의 성능을 향상시키자! AbstractOpen-domain question answering (ODQA) 태스크는 candidate context 선택을 위해 passage retrieval에 의존하고, 이전에는 retrieval

ll2ll.tistory.com

DPR은 bi-encoder 아키텍처로 이루어졌으며, 논문에서는 BERT-base를 사용하였다.

DPR components

  • d(z) : document dense representation
  • q(x) : query representation

 

d(z)와 q(x)의 내적 연산값을 기반으로, 내적값이 높은 top-k documents를 retrieve한다.

retrieval component

이 과정에서 REALM에서 사용되었던 MIPS 알고리즘을 사용해 선형 시간에 가까운 탐색이 가능하게 했다.

MIPS (Maximum Inner Product Search Index) : 쿼리 벡터 q와 답변 후보군 v의 내적을 통해 인덱싱 진행

 

논문에서는 TriviaQA, Natural Questions 데이터셋에 대해 답변이 포함된 문서를 반환하도록 훈련된 pre-trained bi-encoder를 사용해서 retriever를 초기화하고 document index를 구축했다.

구축된 document index를 "non-parametric memory" 로 지칭한다.

 

 

2.3 Generator : BART

기본적으로 모든 encoder-decoder 아키텍처의 모델을 통해 모델링할 수 있는데, 본 논문에서는 비슷한 크기의 T5 모델보다 성능이 좋았던 BART-large를 사용했다.

BART generator의 파라미터 \(\theta\)를 "parametric-memory" 로 지칭한다.

 

2.4 Training

직접적으로 어떤 문서가 반환되어야 하는지에 대한 direct supervision 없이 Retriever & Generator를 jointly하게 훈련했다.

finetuning을 위한 입출력 쌍 \(x_j, y_j\) 가 주어지면, Adam optimizer를 사용해 output sequence에 대해 Negative log likelihood \(\sum_j -log p(y_j|x_j)\) 를 최소화하도록 학습된다.

학습 중에 document encoder BERT_d를 업데이트하면 document indexing을 주기적으로 업데이트해야 하기 때문에 비용이 많이 소모된다.

해당 문제는 REALM 논문에서도 언급된 적이 있다.

https://ll2ll.tistory.com/31
MIPS 적용을 위해 먼저 모든 𝑧∈𝑍 에 대해 𝐸𝑚𝑏𝑒𝑑𝑑𝑜𝑐(𝑧) 를 계산해야 하고 효율적인 search index를 구축해야 한다. 그러나 이 데이터 구조는 𝐸𝑚𝑏𝑒𝑑𝑑𝑜𝑐의 파라미터 𝜃 가 업데이트되면 더 이상 유지되지 않으므로, gradient update 이후에는 search index가 "무효" 상태가 된다.

이를 해결하기 위해 수백 번의 training step마다 모든 문서를 비동기적으로 다시 embedding & indexing하여 index를 새롭게 갱신한다.

-> RAG에서는 비동기적 갱신도 하지 않고, 초기의 document embedding, MIPS index 값을 계속 사용

 

따라서 document encoder (=document index) 는 고정된 상태로 유지하고, query encoder BERT_q와 BART generator에 대해서만 fine-tuning을 진행한다.

 

 

2.5 Decoding

분포를 바탕으로 token decoding을 진행할 때, RAG-sequence, RAG-token은 \(argmax_y p(y|x)\) 를 근사하기 위해 서로 다른 방법이 필요하다.

 

RAG-Token

이미지 출처 : https://nlp.jbnu.ac.kr/papers/hclt2022_RAG_ODQA.pdf

RAG token 모델은 token-level marginalize이기 때문에 기존의 autoregressive seq2seq generator와 크게 다르지 않다. 따라서 transition probability를 decode 하기 위해서는 standard beam decoder에 연결 (=beam search)해주면 된다.

transition probability

 

Transition probability

더보기

state s에서 다음 state s'로 전이할 확률

 

 

RAG-sequence

RAG-sequence의 경우 문서 K개에 대하여 시퀀스 길이 N까지 예측한 sequence-level marginalize이기 때문에 기존의 beam search를 그대로 적용할 수 없다.

 

따라서 각 candidate document z에 대해 transition probability를 사용하여 beam search를 실행하고 각 hypothesis에 점수를 매긴다.

이미지 출처 : https://gbdai.tistory.com/67

이 때, 빨간 색으로 표시된 부분처럼 beam search 과정에서 확률이 나오지 않는 경우가 발생한다.

\(p(y_2|x, z_2)\) : \(x, z_2\) 가 주어졌을 때 output으로 \(y_2\)가 나올 확률
그러나 document \(z_2\)로부터 \(y_1, y_4, y_5\) 만 산출되었기 때문에 확률 값을 모른다.

 

이를 해결하기 위해서는 \(x, z_2\) 를 모델에 넣어 해당 값을 따로 계산하는 과정 (=Thorough decoding) 이 필요하다.

하지만 문장의 길이가 길어질수록 확률을 계산할 수 없는 y_k도 늘어날 것이고, 이를 하나하나 계산하는 것은 매우 비효율적이다.

 

따라서 논문에서는 모르는 확률 값을 0으로 처리한 후 marginalize를 진행하는 Fast decoding 방식을 사용했다.

 

 

3. Experiments

  • 모든 실험에서 non-parametric data source로 Wikipedia를 사용
    • December 2018 버전
    • 100 word 단위로 분할해 총 2100만개의 documents 생성
  • DPR document retriever를 사용해 document embedding 계산
  • 빠른 검색을 위해 FAISS를 사용하여 MIPS index 구축
  • 각 쿼리에 대해 상위 k개의 documents retrieve
    • \(k \in {5, 10}\)
    • dev data의 test time을 기준으로 k를 결정

 

 

3.1 ODQA

QA를 입출력 텍스트 쌍 (x, y)로 두고 NLL을 최소화하는 방식으로 RAG를 훈련했다.

  • 사용 데이터셋
    • Natural Questions (NQ)
    • TriviaQA (TQA)
    • WebQuestions (WQ)
    • CuratedTrec (CT)
  • metric : EM (Exact Match)
  • CT와 WQ 데이터셋은 크기가 작으므로, NQ RAG 모델로 CT, WQ 모델을 초기화했음
  • TQA는 T5와 비교하기 위해 TQA Wiki test set에서도 평가를 진행

 

 

결과표

표 1. ODQA 결과표

  • 4가지 ODQA task에서 모두 SOTA를 달성
  • TQA의 왼쪽 열은 standard test set / 오른쪽 열은 TQA-Wiki test set
    • T5와 비교 가능한 경우만 결과표에 기재
  • RAG는 REALM에서 사용되는 "salient span masking" 사전학습 없이도 좋은 결과를 얻음
  • RAG는 extractive reader, reranking 없이도 좋은 성능을 얻음
  • retrieved documents에 정답이 없는 경우에도 정답을 생성할 수 있기 때문에, extractive model이 0점을 받는 NQ의 경우에도 11.8%의 accuracy를 달성

 

 

 

3.2 Abstractive QA

MSMARCO NLG task v2.1 을 사용해서 RAG의 NLG 능력을 테스트했다.

  • MSMARCO는 questions, 각 question에 대해 검색 엔진으로부터 반환된 10개의 gold passages, full sentence answer로 구성되어있음
  • 이 중 제공된 passage는 사용하지 않고 QA만 사용해서 open-domain abstractive QA task로 만들었음
  • “What is the weather in Volcano, CA?”와 같이 gold passage에 액세스하지 않으면 reference answer와 일치하는 방식으로 답변할 수 없는 일부 질문이 존재하므로 성능이 저하될 수 있음
  • 또한 일부 질문은 wikipedia에 있는 지식 (=non-parametric memory) 만으로는 대답이 불가능
  • RAG는 parametric memory에 의존해 합리적인 답변을 생성

 

결과표

표 2. Abstractive QA 결과표

  • BART보다 우수한 성능 보임
  • SOTA 성능에 근접
    • SOTA 모델은 gold passage에 대한 액세스가 가능
    • gold passage가 없으면 답을 구할 수 없는 문제가 많음
    • Wikipedia만으로 모든 질문에 대한 답을 구할 수 없음

표 3. BART, RAG를 통해서 생성된 답변

  • ? : 사실과 틀린 응답 / * : 부분적으로 정확한 응답
  • RAG-T : RAG-token / RAG-S : RAG-sequence
  • BART 모델에 비해 구체적이고 사실에 입각한 정확한 답변을 생성 -> Hallucination 문제 감소

 

표 5. tri-gram을 통한 generated output의 다양성 측정

  • 답변의 다양성이 BART에 비해 뛰어남
  • token 방식에 비해 sequence 방식이 다양성 측면에서는 더 우수

 

 

3.3 Jeopardy Question Generation

non QA setting에서 RAG의 생성 능력을 평가하기 위해 open-domain question generation을 연구했다.

일반적으로 짧고 간단한 질문으로 구성된 표준적인 open-domain QA 대신 좀 더 까다로운 Jeopardy question을 생성하도록 한다.

 

Jeopardy question?

더보기

"실체에 대한 사실"로부터 해당하는 "실체"를 추론해내는 문제

 

ex. Q :  “In 1986 Mexico scored as the first country to host this international sports competition twice.”

A. “The World Cup”

 

정확하고 사실적인 진술을 해야 QA를 만들어낼 수 있으므로 고난이도에 속하는 생성 작업이라고 볼 수 있다.

  • 사용 데이터셋
    • SearchQA (train : 100,000 / dev : 14,000 / test : 27,000)
  • 새로운 작업이므로 BART 모델을 이에 맞춰 훈련
  • metric
    • 선행 연구[각주:1]에 따라 SQuAD-tuned Q-BLEU-1[각주:2]
      • Q-BLEU : entity matching에 더 높은 가중치를 부여한 BLEU의 변형
        질문 생성에 대해서 일반적인 metric보다 사람의 판단과 더 높은 corr 보임
    • human evaluation[각주:3]
      • 두 가지 평가 기준으로 평가를 요청
        • generation factuality : 신뢰할 수 있는 외부 출처에 의해 진술이 확증될 수 있는지
        • specificity : 입출력 간의 높은 상호 의존성
      • pairwise comparative evaluation
        • BART에서 생성된 질문 / RAG에서 생성된 질문 제공
        • 질문 A가 더 좋음 / 질문 B가 더 좋음 / 둘 다 좋음 / 둘 다 좋지 않음 중 하나 선택

 

결과표

표 2. Jeopardy question generation 결과표

  • RAG-Token이 RAG-sequence보다 더 나은 성능을 보였고, 두 모델 모두 BART보다 좋은 성능을 보임
  • Jeopardy question은 종종 2개의 개별 정보를 포함하는 경우가 존재
    -> 여러 documents를 결합해서 사용하는 token 방식이 더 유리함

 

표 4. Jeopardy question generation에 대한 human eval

  • 452개의 문장 쌍에 대해 human evaluation 진행
  • 과반수 사례에 대해 RAG가 생성한 질문이 더 구체적이고 사실적이라고 평가

 

표 5. tri-gram을 통한 generated output의 다양성 측정

  • 답변의 다양성이 BART에 비해 뛰어남
  • token 방식에 비해 sequence 방식이 다양성 측면에서는 더 우수

 

 

3.4 Fact Verification

  • 사용 데이터셋
    • FEVER : "주장"이 Wikipedia에 나와있는 source knowledge에 의해서 support / refused / not enough info 중 어디에 속하는지를 분류하는 문제
      Wikipedia에서 해당 주장과 관련된 증거를 검색한 후,  이 증거를 토대로 추론해서 분류를 완료해야 함
    • 앞에서 언급한 것처럼 target sequence를 length = 1로 지정해서 sequence classification task에 사용
    • 선행 연구에서 살펴본 이진분류 작업 (support / refused) 에 대해서도 살펴봄

 

결과표

표 2. Fact verication 결과표

  • FVR3 : (support / refused / not enough info)
  • FVR2 : (support / refused)
    • FVR2를 제시한 해당 선행 논문에서 학습한 RoBERTa와의 성능 비교
  • SOTA 모델에서는 retrieval document에 따른 direct supervision이 들어감
  • RAG에서는 이를 사용하지 않고도 성능의 대부분을 따라잡음

 

 

4.5 Additional Results

DPR -> BM25

retriever로 사용되는 DPR을 BM25로 대체하고, p(z|x)를 계산할 때 BM25 score를 logit으로 사용한다.

  • FEVER의 경우 BM25의 성능이 가장 좋음
    -> FEVER는 entity 중심적이기 때문에 word overlap-based 방식인 BM25에 더 적합
  • 나머지 경우에서는 DPR의 성능이 더 좋았고, 특히 가장 중요한 ODQA에서 성능 차이가 크게 났다. 

 

 

Index hot swapping

세계는 끊임없이 변화하므로 지식에 대한 업데이트가 필요하다.

사전학습된 모델은 parametric memory만 가지므로 업데이트를 하려면 추가 학습이 필요한데, RAG는 non-parametric memory를 가지기 때문에 이러한 추가적인 학습이 필요없다.

이를 증명하기 위해 2016년 12월 Wikipedia로 document index를 구축한 경우와 2018년 12월 데이터를 사용한 RAG의 결과를 비교한다. 모델은 동일하게 NQ RAG model을 사용한다.

 

해당 기간 동안 변경이 있었던 82명의 세계 지도자 목록을 바탕으로, "Who is {position}?" 과 같이 쿼리를 넣었다.

ex. “Who is the President of Peru?”
  • 2016년 index -> 2016년 지도자 쿼리 : 70% acc
  • 2018년 index -> 2018년 지도자 쿼리 : 68% acc
  • 2016년 index -> 2018년 지도자 쿼리 : 4% acc
  • 2018년 index -> 2016년 지도자 쿼리 : 12% acc

이를 통해 document index를 교체하는 것만으로 RAG의 knowledge를 업데이트할 수 있음을 보인다.

 

 

Effect of Retrieving more documents

  • NQ dataset에서의 성능 평가
    • RAG-sequence의 경우 k를 늘릴수록 성능이 단조 증가
    • RAG-token의 경우 k=10일 때 최고 성능
  • MS-marco에서의 성능 평가
    • RAG-token의 경우 Rouge-L이 높아지는 대신 Bleu-1이 높아짐
    • RAG-sequence의 경우 그 효과가 덜 뚜렷함

 

 


참고 문헌

https://ratsgo.github.io/insight-notes/docs/qa/answerer

https://gbdai.tistory.com/67

  1. Addressing semantic drift in question generation for semisupervised question answering [본문으로]
  2. Towards a better metric for evaluating question generation systems [본문으로]
  3. Improved dialogue evaluation with optimized questions and multi-turn comparisons [본문으로]