[TIL] RAG (Retrieval-Augmented Generation) 훑어보기

2025. 1. 12. 11:31·NLP
반응형

오늘 PRML 스터디에서 다뤘던 내용을 정리한다 ㅎㅎ 새해에는 active 하게 공부하는게 목표!! 
아래 게시글은 이 survey 논문을 기반으로 하고 있다. 


Overview 

LLM의 더 정확한 답변을 위해 document를 이용해 정보를 retrieval 하여 이 정보를 이용해 LLM이 답변하게 하는 방법이다. Hallucination을 예방하는데 큰 도움을 줄 것 같다. User의 query를 document knowledge로 augment 한다는 측면에서 augmentation 이라는 말을 쓴다고 한다. 

아래와 같은 순서로 진행된다고 직관적으로 이해했다. 

Direction 1. Naive RAG

1. 먼저 Document를 어떻게 indexing 할건가도 중요한데, PDF, HTML 등의 파일을 embedding model로 encoding 하는 단계이다. 이런 인코딩된 vector 들은 database에 저장된다. 

2. User의 query도 마찬가지로 encoding한다. 

3. 위 document vector (i.e., document chunks) 와 user query의 유사도 (주로 cosine similarity)를 구해 Frozen LLM에게 넣어준다. LLM에게 넣어줄 때는 그냥 prompt로 document 정보를 붙여서 넣어주면 된다. 

 

Direction 2. Advanced RAG

Original query에 indexing structure를 optimize하는 방법이다.

1. Pre-retrieval: User의 query를 rewriting하거나, transform 하거나, expansion 하는 방법이다. Retrieval이 잘 되게 하도록 하는 것이 목적이다. 약간 Prompt engineering과 비슷하다고 이해했다. 

2. Post-retrieval: Retrieval 후 LLM에게 document 정보를 잘 입력할 수 있는 방법? Reranking 같은 방법들이 있다고 한다.

 

Retrieval 에 대한 고민  

당연히 몇십억개에 해당하는 document를 retrieval을 잘 하는게 가장 중요할거다. 아래는 주요 고민거리라고 한다.

  • Retrieval Source: Document의 source에 대한 고민 
  • Indexing Optimization: 임베딩을 어떻게 할건지?에 대한 고민 
  • Query Optimization: user의 initial query에 대한 reliance를 어떻게 반영할건지? 에 대한 고민 
  • Embedding: Bi-encoder vs Cross encoder에 대한 고민 (몇십억개에 해당하는 document를 모두 cross encoder로 similarity를 계산할 수는 없어서, 주로 frozen encoder를 사용한다고 한다) 

좌 bi-encoder, 우 cross-encoder

 

Generation 

LLM을 통해 어떻게 잘 Generation 할까? LLM에게 document 정보를 어떻게 잘 넣어줄 것인가에 대한 고민이다. 

일단 아래와 같이 reranking을 해주는 방법이 대표적이다. LLM에 넣어줄 top-k document chunk를 reranking한다.

Augmentation process in RAG 

Retrieval step을 iterative하게 물어보는 방법이다. 아래 예시처럼 질문을 decompose해서 물을 수 있다. 

반응형
저작자표시 (새창열림)

'NLP' 카테고리의 다른 글

[Daily] Self-Correct Reasoning / Verification of LLM  (0) 2025.03.21
[LLM] 미뤄두었던 DeepSeek-R1, DeepSeek-V3에 대하여 (1)  (0) 2025.02.26
[TIL] In-context Learning with Long-context LLMs  (0) 2024.09.13
[TIL] LLM as reward models/evaluators (#RLHF, #Self-improvement)  (0) 2024.08.30
[NLP] LORA : Low-Rank Adaptation of Large Language Models 논문 리뷰  (0) 2023.04.04
'NLP' 카테고리의 다른 글
  • [Daily] Self-Correct Reasoning / Verification of LLM
  • [LLM] 미뤄두었던 DeepSeek-R1, DeepSeek-V3에 대하여 (1)
  • [TIL] In-context Learning with Long-context LLMs
  • [TIL] LLM as reward models/evaluators (#RLHF, #Self-improvement)
당니이
당니이
씩씩하게 공부하기 📚💻
  • 당니이
    다은이의 컴퓨터 공부
    당니이
  • 전체
    오늘
    어제
    • 분류 전체보기 (136)
      • Achieved 👩🏻 (14)
        • 생각들 (2)
        • TIL (6)
        • Trial and Error (1)
        • Inspiration ✨ (0)
        • 미국 박사 준비 🎓 (1)
      • Computer Vision💖 (39)
        • Basic (9)
        • Video (5)
        • Continual Learning (7)
        • Generative model (2)
        • Domain (DA & DG) (5)
        • Multimodal (8)
        • Multitask Learning (1)
        • Segmentation (1)
        • Colorization (1)
      • RL 🤖 (1)
      • Autonomous Driving 🚙 (11)
        • Geometry (4)
        • LiDAR 3D Detection (1)
        • Trajectory prediction (2)
        • Lane Detection (1)
        • HDmap (3)
      • Linux (15)
      • PyTorch👩🏻‍💻 (10)
      • Linear Algebra (2)
      • Python (5)
      • NLP (10)
        • Article 📑 (1)
      • Algorithms 💻 (22)
        • Basic (8)
        • BAEKJOON (8)
        • Programmers (2)
      • ML (1)
        • 통계적 머신러닝(20-2) (1)
      • SQL (3)
      • 기초금융 💵 (1)
  • 블로그 메뉴

    • 홈
    • About me
  • 링크

    • 나의 소박한 github
    • Naver 블로그
  • 공지사항

  • 인기 글

  • 태그

    conda
    알고리즘
    백트래킹
    Incremental Learning
    domain generalization
    pytorch
    Python
    NLP
    til
    continual learning
    자료구조
    리눅스
    domain adaptation
    dfs
    CL
    CV
    코딩테스트
    백준
    Linux
    LLM
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
당니이
[TIL] RAG (Retrieval-Augmented Generation) 훑어보기
상단으로

티스토리툴바