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

 

LLM 공부를 시작하다보면 RAG (Retrieval Augmented Generation) 이라는 용어가 자주 등장하게 된다.

RAG model은 검색 증강 생성 방식을 통해 외부 Document에서 가져온 정보를 통해 LM 모델의 성능과 정확도를 향상시키는 방법 중 하나이다.

챗 GPT와 같은 Generate LM들이 보다 정확한 정보를 제공할 수 있도록 정확도를 향상시킬 수 있는 방법이라고 보면 될 것 같다.

 

 

논문은 2020년 5월 발표되었으며,

원문 링크는 아래에서 확인할 수 있다.

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

 


 

Abstract

 기존의 Pre-trained Language Model들은 Factual Knowledge를 매개변수에 저장하고 Downstream NLP task에 대하여 Fine-tuning을 수행하면서 좋은 결과를 얻어 왔다. 하지만 지식기반 정보들에 접근하고 이를 정확하게 조작하는 것은 여전히 어려운 문제이기 때문에 Knowledge-intensive task에 대해서는 Task specific architecture 보다 성능이 떨어진다는 단점이 존재 해 왔다.

 

 따라서 이런 단점들을 보완하기 위해, RAG model이 제안되었으며, RAG 모델은 pre-trained parametric 과 non-parametric momery를 결합하여 언어 생성에 사용한다.

 

RAG에서 제안된 pre-trained parametric model은 seq2seq 모델을 이용하며 non-parametric memory는 Wikipedia의 dense vector들과 pre-trained neural retriever를 사용한다.

 

모델에 관하여 더 자세한 내용들은 method 챕터에서 다루도록 하고, 

본 모델은

 

  1. QA Task
  2. Outperforming parametric seq2seq models
  3. Task-specific retrieve-and-extract architectures

에서 SOTA (State of the Art)를 달성했다고 한다. 즉 위의 Task들에 특화된 모델이라고 생각하면 좋다.

또 추가로, RAG model의 경우 기존의 SOTA를 달성 했던 parametric-only based seq2seq 모델에 비해 언어 생성 task에서 보다 더 구체적이고 다양하며 사실적인 언어를 구현한다는 사실을 확인할 수 있다고 한다.

 

 

Introduction

 기존의 모델들은 메모리를 쉽게 확장하거나 수정할 수 없다는 단점이 존재했고, 따라서 Hallucination (환각) 현상이 생기기 쉬웠다. 하지만 Parametric memory와 Non-parametric memory (검색 기반 memory)를 합침으로써 RAG 모델은 지식확장 및 검색이 가능해지고 또한 접근한 지식 정보에 대한 검토 및 해석이 가능해진다. 

 

 RAG 모델을 통해 잠재적 문서 (Latent Documents)를 상위 K 근사치로 마진화 한다. 이는 출력 당 기준으로 수행 될 수 있으며 (동일한 문서가 모든 토큰에 대한 역할을 한다고 가정), 또는 토큰 당 기준으로 수행된다. (다른 문서가 서로 다른 토큰에 대한 역할을 한다.)

T5, BART, RAG와 같은 모델들은 seq2seq task에 의해 파인튜닝 될 수 있으며 Retriever와 Generator는 함께 공동으로 학습된다.

특정 Task들(사람들이 외부 지식 소스를 가져오는 방법에 대해 추론하지 못하는 부분)에서 non-parametric memory에 대해 발전시키고자 하는 많은 논문들이 제안되어 왔었지만, parametric & non-parametric memory를 함께 사용하고 pre-train 매커니즘을 도입하면서 기존과는 달리 지식 접근에 대한 능력을 훈련시킬 수 있다는 것이 가장 큰 강점이다.

 

 

 Method

 

 RAG 모델은 input sequence $x$와 retrieve text document $z$를 이용하여 target sequence인 $y$를 생성한다. 단순하게 수식으로 나타내면 조건부 확률로 표현할 수 있는데, Retriever에서는 k근사치를 이용한 값으로 $q$ query랑 비슷한 분포를 parameter에 기반한 조건부 확률에 의해 제공하게 되고 Generator에서는 $\theta$에 의해 previous token($y_i-1$)과 original input $x$, retrieved passage $z$를 기반으로 current token을 생성해낸다.

 

 

 RAG 모델은 크게 두 가지로 나뉘는데, 쉽게 정리하면,

 

RAG-Sequence Model : 각 Target token을 예측하기 위해 Same Document를 사용

RAG-Token Model : 각 Target token을 예측하기 위해 다른 Document 사용

 

이라고 생각하면 된다.

 

또한 마지막으로 RAG 가 대상 클래스를 길이가 하나인 대상 시퀀스로 간주함으로써 시퀀스 분류 작업에 사용될 수 있다는 점에 주목하였으며, 이 경우 RAG-Sequence와 RAG-Token은 동등하다.

 

- Retriever : DPR

  Retriever는 DPR 모델을 기반으로 구성되었으며, DPR모델은 bi-encoder architecture를 띄고 있다. 따라서 이를 수식으로 나타내면 다음과 같다.

 

$$P_n(z|x)\propto exp(d(z)^Tq(x))$$가 되고, 

$d(z)$, $q(x)$ 는 BERT 모델을 의미한다. $d(z)$는 BERT 기반의 document encoder를 의미하고, $q(z)$는 BERT 기반의 query encoder를 통해 나온 query representation을 의미한다. 이를 K 근사치를 이용하여 가장 높은 근사치를 가진 상위 k-z 쌍을 계산해낸다.

k 근사치를 계산하는 방법은 최대 내적 검색(MIPS)를 이용하며, linear time 내 계산될 수 있다.

이러한 Pre-train된 bi-encoder DPR 모델을 이용해서 Retriever을 초기화하고 Document의 index를 설정하는 역할을 한다. 

이렇게 계산된 Document index들은 모두 non-parametric memory로 간주된다.

 

- Generator : BART

 Generator 부분은 어떠한 Encoder-Decoder를 사용해도 괜찮도록 모델링되어 있다. 본 모델에서는 BART-large 모델과 400M Parameter로 Pre-train된 seq2seq transformer 모델을 사용하였다. query input $x$와 retrieve content $z$를 결합하여 BART로부터 토큰을 생성하기 위해서, 두 $x, z$를 concatenate 하였고 BART 모델은 Denoising과 다른 다양한 nosing 함수를 사용하여 Pre-train 되어 있다. 또한 BART Generator의 매개변수 $\theta$는 매개변수 메모리(parametric memory)로 간주된다.

 

- Training

 트레이닝을 진행할 때에는, 어떤 Document에서 검색을 수행해야 되는지에 대한 사전 정보를 주지 않고, finetuning 한 input/output 형태의 형태소쌍만 제공한다. 또한 Document Encoder부분은 고정한채로 query encoder BERT 모델과 BART generator 만 finetuning을 거쳐 학습을 진행하는 방식으로 학습된다.

 


 

 

  결론적으로 RAG model은 BERT 모델을 이용하여 query, document에 대한 index를 의미하는 토큰들을 생성해내고 그 쌍을 계속 훈련데이터로 제공해주면서 최적의 검색 Document를 찾아 대답할 수 있도록 고안된 모델인 것 같다.

 

 GPT-4-turbo, Google Gemini가 발표되고 multimodal을 지원하는 llm 모델들이 대거 등장하면서, 또 기존의 llm의 고질적인 문제들을 해결해 나가고자 하면서 이런 검색기능이나, API 기능 등 외부 지식 혹은 모듈들을 호출할 수 있는 기능의 중요성이 더욱 중요해지면서 RAG와 같은 모델의 중요성이 점차 커지고 있다고 느껴진다. 앞으로 이런 부분에 대한 고민들이 더 필요해지는 연구들이 많이 나와야 하지 않을까..!!