논문 리뷰

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

aaa0843 2025. 4. 14. 23:19
  • 학회: NeurIPS 2020
  • 키워드: RAG, BART, DPR, 오픈 도메인 QA, 지식 집약형 작업, 검색 기반 생성

1. 연구 배경 및 문제의식

배경

  • 기존의 대형 언어 모델(예: GPT, BERT 등)은 사전 학습된 파라미터에 내재된 지식만 사용하여 문장을 생성함.
  • 하지만 이 접근은 지식의 최신성, 정확성, 확장성에 문제가 있음.
  • 특히 질의응답(QA), 요약, 사실 검증 등 지식 기반 작업에서는 한계가 명확.

문제 제기

  • 모델의 파라미터에만 의존하면 모델 크기를 키우는 것만으로 지식 확장이 어려움.
  • 이를 해결하기 위해 외부 지식 베이스를 활용하는 retrieval-augmented generation(RAG) 접근이 필요.

2. RAG의 핵심 개념

Retrieval-Augmented Generation (RAG)

  • 정보 검색기(retriever)와 텍스트 생성기(generator)를 결합한 프레임워크
  • 입력 질의에 대해 관련 문서 N개를 검색하고, 이를 기반으로 문장을 생성함
  • 생성기는 단순히 입력만 보고 문장을 생성하는 것이 아니라, 검색된 문서의 내용을 참조

주요 구성 요소

  1. Retriever:
    • DPR(Dense Passage Retrieval)을 사용
    • 입력 질의와 문서 모두를 벡터로 임베딩하고, 가장 가까운 문서 N개를 검색
  2. Generator:
    • 사전 학습된 BART를 사용
    • 입력 질의 + 검색된 문서를 입력으로 받아 문장을 생성

3. 두 가지 RAG 구조

RAG-Sequence

  • N개의 검색 문서 각각에 대해 문장 전체를 독립적으로 생성
  • 이후 N개의 출력 중 가장 가능도 높은 것을 선택

RAG-Token

  • 문장 내 각 토큰(token)을 생성할 때마다 모든 문서에 대해 분포를 계산하고, 확률을 평균
  • 더 미세하고 유연한 방식으로 성능이 일반적으로 우수함

4. 실험 설정

실험 대상 작업

  1. 오픈 도메인 질의응답 (Open-domain QA):
    • Natural Questions, WebQuestions, CuratedTREC, TriviaQA
  2. 사실 검증 (Fact Verification):
    • FEVER
  3. 대화 응답 생성 (Dialog Response Generation):
    • Wizard of Wikipedia

비교 모델

  • BART (단독)
  • BERT+DPR
  • REALM (retrieval-based LM)
  • Fusion-in-Decoder (FiD)

5. 주요 결과

성능 요약 (예시: QA Accuracy)

모델 TriviaQA NaturalQuestions
BART 54.7 42.0
REALM 68.6 64.4
RAG-Token 72.1 69.3
  • RAG 모델은 거의 모든 데이터셋에서 기존 모델보다 성능이 우수함
  • RAG-Token > RAG-Sequence > 다른 baseline 순으로 성능이 좋음

6. 분석 및 ablation 실험

  • retriever 없이 생성만 하는 모델과 비교했을 때, retriever의 기여가 매우 큼
  • 검색된 문서 수(k)를 늘리면 성능이 좋아지지만 계산 비용도 증가
  • retriever를 고정했을 때보다, joint fine-tuning(동시 학습)을 하면 더 좋은 성능을 얻음

7. 결론 및 기여

  1. Retrieval + Generation을 결합한 RAG 구조 최초 제안
  2. RAG-Token이라는 효율적이고 강력한 구조 제시
  3. 다양한 지식 기반 작업에서 SOTA 달성
  4. 추론 중 외부 문서 접근 가능 → 모델 업데이트 없이도 지식 확장 가능

프로젝트에서 얻을 수 있는 것

  • DiverseVul 기반 코드베이스 보안 분석
    • 질의(ex. "이 함수에 문제가 있어?")에 대해 취약점 예시/문서 검색 후 LLM이 종합
  • 프롬프트 설계 부담 완화
    • 전체 코드 넣지 않고, 핵심 관련 부분만 RAG로 검색해서 프롬프트로 구성
  • 최신 취약점 정보 연계
    • LLM은 사전 학습된 것만 아는 반면 RAG는 CVE 설명, 취약점 데이터베이스 등 최신 정보와 연결
  • 시각화와 연결
    • 검색된 문서와 코드 상 위치를 매칭 → 어떤 코드가 어떤 취약점과 관련 있는지 시각화 가능
  • RAG-Token 방식 → 코드-취약점 연결과 분석으로 좋지 않을까,,