본문 바로가기
카테고리 없음

[Paper Review] Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

by hyeon827 2025. 4. 20.

 

논문 원본 : 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

  • 사전학습된 신경망 언어 모델은 데이터로부터 상당히 깊이 있는 지식을 학습할 수 있음을 입증
  • 이러한 모델들은 외부 메모리에 접근하지 않고도, 매개변수화된 암묵적 지식 베이스로서 가능할 수 있음
  • 하지만 해당 모델들은 다음과 같은 한계점을 가지고 있음
    • 메모리를 손쉽게 확장하거나 수정할 수 없으며. (=새로운 지식을 배우려면 다시 학습시켜야 함)
    • 예측에 대한 명확한 근거를 제공하기 어렵고,
    • 종종 "환각(hallucination)" 현상을 일으킴
  • 이러한 문제들을 해결하기 위해, 매개변수적(parametric) 메모리와 비매개변수적(non-parametric) 메모를 결합한 하이브리드 모델들이 제안되어 왔음
  • 이러한 하이브리드 모델은 지식을 직접 수정하고 확장할 수 있으며, 검색된 정보를 사용자 입장에서 해석하고 점검할 수 있다는 장점을 가짐
  • 본 논문에서는 이러한 하이브리드 메모리 구조를 Seq2Seq 모델에 확장하여 적용
  • Retrieval-Augmented Generation (RAG) 이라는 일반적인 fine tuning 접근법을 통해, 사전학습된 매개변수적 생성 모델에 비매개변수적 메모리를 결합
    • 매개변수적 메모리 : 사전학습된 seq2seq Transformer 모델
    • 비매개변수적 메모리 : 위키피디아의 dense vector 인덱스이며, 사전학습된 신경 검색기 (DPR: Dense Passage Retriever)로 접근
  • 이 구성요소들은 확률 모델로 결합되어, end-to-end 학습이 가능
  • Retriever는 입력을 기반으로 관련 문서들을 latent 문서로 반한화며, seq2seq 모델 (BART) 은 이 문서들과 입력을 함께 조건으로 사용하여 출력을 생성
  • 이때 문서 마진은 두 가지 방식으로 근사화
    • 출력 단위로 동일한 문서에 기반한다고 가정하는 top-K 근사 방식
      • 가정 : 답 전체는 한 문서에 기반해서 만들어질 것이다
    • 토큰 단위로 서로 다른 문서에 기반한다고 가정하는 방
      • 가정 : 문장 내 각 단어는 서로 다른 문서에서 정보를 얻을 수 있음
  • RAG는 사전학습된 모델들을 조립해서 사용
    • 생성기 : BART
    • 검색기 : DPR
    • 외부 지식 창고 : Wikipedia 벡터 인덱스
    • -> 따로 다 처음부터 학습 안 해도 되고, 검색기도 이미 훈련되어 있으니 지식을 바로 가져다 쓸 수 있음
  • RAG는 외부 문서 (Wikipedia 벡터 인덱스)만 교체하면, 최신 정보로 모델 지식을 업데이트 할 수 있음

 

 

2. Method

  • 본 연구는 입력 시퀀스 x를 사용하여 텍스트 문서 z를 검색하고, 이를 추가 문맥으로 활용해 목표 시퀀스 y를 생성하는 RAG 모델 탐구
    • 쉽게 말해서 질문이 들어오면, 관련 문서를 찾아와서 그걸 참고해서 답을 만들어보자

   

   2.1 Models

  • RAG-Sequence
    • "가장 관련이 있는 문서 하나만 골라서 그걸로 전체 답변을 만들자"
    • 예 : 답 전체가 위키 문서 하나에 있다고 가정
    • 1) 입력 x에 대해 top-K개의 문서를 검색하고
    • 2) 각 문서에 대해 시퀀스 생성 확률을 계산한 뒤,
    • 3) 이들을 마진화하여 최종 확률을 계산

  • RAG-Token
    • "답의 각 단어마다, 가장 잘 맞는 문서를 골라서 만들자!"
    • 예 : 첫 단어는 문서 A에서, 둘째 단어는 문서 B에서...
    • 1) top-K 문서를 먼저 검색하고
    • 2) 각 토큰마다 문서들에 대해 확률을 계산한 뒤,
    • 3) 마진화 과정을 반복
    • 참고 : RAG를 Classification에 사용할 경우, 정답 클래스 하나만 출력하면 되기 때문에, RAG-Squence와 RAG-Token은 동일하게 동작

 

   2.2 Retriever : DPR

  • Retriever는 Dense Passage Retriever에 기반
  • DPR은 bi-encoder 구조를 따르며 다음과 같이 계산
    • d(z) : 문서 z를 BERT로 인코딩한 벡터
    • q(x) : query x를 BERT로 인코딩한 벡터
    • 즉, query와 문서의 inner product을 기준으로 유사도를 계산 (최대 내적 검색(MIPS))
  • 우리는 TriviaQA, Natural Questions 정답 문서를 찾도록 학습된 사전학습된 DPR을 사용
  • 이 문서 인덱스가 비매개변수적 메모리 역할

 

 

   2.3 Generator : BART

  • 본 모델은 BART-large를 사용
  • BART 파라미터 θ는 RAG에서 매개변수적 메모리로 사용

 

 

   2.4 Training

  • 어떤 문서를 검색해야 하는지에 대한 직접적인 supervision 없이, retriever와 generator를 공동 학습
  • 각 target yj에 대해 마진화된 negative marginal log-likelihood -log p (yj | xj)를 Adam optimizer를 사용하여 SGD로 최소화
  • 문서 encoder BERTd는 freeze
  • 질문을 벡터로 바꾸는 BERTq와 생성 모델 BART만 fine-tuning

 

   2.5 Decoding

  • RAG-Token
    • 토큰 하나 만들 때마다 여러 문서를 참고해서 확률 평균함
      • Obama는 문서 A에서 0.6, B에서 0.9, C에서 0.5
      • 평균 내서 최종 확률을 뽑음
    • 이걸 Beam Search에 넣어서 문장 전체 생성
    • 일반적인 생성기처럼 동자감 -> 빠르고 효율
  • RAG-Sequence
    • 문서 A,B,C 각각 따로 문장을 만들어봄 (beam search 3번)
    • 나온 후보 문장들을 모은 다음에, 각 문서에서 그 문장을 얼마나 잘 만들 수 있었는지를 확인
    • 그리고 각 문서의 기여도를 확룰로 곱해서 최종 점수 계산
    • 정밀 디코딩 (Thorough Decoding)
      • 모든 문서 다 확인해서 정확히 계산 (느림)
    •  빠른 디코딩 (Fast Decoding):
      • “이 문장, 아예 생성되지 않았던 문서에선 기여도 0으로 치자!” → 추가 계산 생략 (빠름)