logo

검색 증강 생성

검색 증강 생성(Retrieval-Augmented Generation)

  • LLM이 답변을 생성하기 전에 외부 지식(문서, DB, 검색 결과)을 먼저 검색(retrieval)하고, 그 결과를 프롬프트에 주입하여 생성(generation)하는 방식
  • RAG가 필요한 이유:
    • 환각(hallucination) 감소: 근거 문서를 기반으로 응답 생성
    • 최신 정보 활용: 학습 시점 이후의 데이터 반영 가능
    • 모델 재학습은 비용이 많이 들고, 대량의 데이터가 필요하지만 RAG는 근거 자료만 추가해주면 끝
    • 검증 가능한 답변 구조
  • 한계:
    • 검색 품질이 전체 성능을 좌우
    • 문서 전처리·임베딩 비용
    • 긴 컨텍스트 관리 필요

RAG vs. 미세조정

특징RAG미세조정(Fine-Tuning)
지식 업데이트검색 지식 베이스를 직접 업데이트하여 현재 정보를 유지할 수 있으며, 빈번한 재학습이 필요 없어 동적 데이터 환경에 적합함정적 데이터를 저장하며, 지식과 데이터 업데이트를 위해서는 재학습이 필요함
외부 지식외부 리소스 활용에 능숙하며, 특히 문서나 기타 구조화/비구조화 데이터베이스 접근에 적합함대규모 언어 모델의 사전학습된 지식과 정렬할 수 있으나, 자주 변경되는 데이터 소스에는 실용성이 떨어질 수 있음
데이터 처리최소한의 데이터 처리와 핸들링만 필요함고품질 데이터셋 생성에 의존하며, 제한된 데이터셋으로는 성능 향상이 제한될 수 있음
모델 커스터마이징정보 검색과 외부 지식 통합에 중점을 두지만, 모델의 행동이나 작성 스타일을 완전히 커스터마이징하지 못할 수 있음LLM의 행동, 작성 스타일, 또는 특정 도메인 지식을 특정 톤이나 용어에 맞게 조정 가능
해석 가능성응답을 특정 데이터 소스로 추적할 수 있어 높은 해석 가능성과 추적성을 제공블랙박스와 유사하여 모델이 특정 방식으로 반응하는 이유가 명확하지 않을 수 있어 상대적으로 낮은 해석 가능성을 보임
컴퓨팅 리소스데이터베이스 관련 검색 전략과 기술을 지원하기 위한 컴퓨팅 리소스가 필요함. 또한 외부 데이터 소스 통합과 업데이트 유지가 필요함고품질 학습 데이터셋 준비와 미세조정 목표 정의, 그리고 관련 컴퓨팅 리소스 제공이 필요함
지연 시간데이터 검색이 포함되어 더 높은 지연 시간이 발생할 수 있음미세조정 후 LLM은 검색 없이 응답 가능하여 더 낮은 지연 시간을 보임
환각 감소답변이 검색된 증거에 기반하므로 본질적으로 환각이 덜 발생함특정 도메인 데이터로 모델을 학습시켜 환각을 줄일 수 있으나, 익숙하지 않은 입력에 대해서는 여전히 환각이 발생할 수 있음
윤리 및 개인정보 문제외부 데이터베이스의 텍스트 저장 및 검색으로 인한 윤리적, 개인정보 문제가 발생할 수 있음학습 데이터의 민감한 콘텐츠로 인해 윤리적, 개인정보 문제가 발생할 수 있음

청킹 Chunking

  • 텍스트를 작은 조각으로 잘라서 저장하는 것
  • LLM에 필요한 정보만을 전달하기 위한 목적
  • 정해진 길이(토큰 수 백 개)로 텍스트를 자름(청크들끼리 조금씩 겹치게)
  • BM25와 임베딩을 이용해서 검색

Contextual Retrieval

  • 개별 청크에 충분한 앞뒤 맥락이 없는 경우 문제
    • 예: "회사의 매출이 이전 분기 대비 3% 증가했습니다" (어느 분기인지 알 수 없음)
  • Contextual Retrieval: LLM을 이용하여 청크마다 앞뒤 맥락을 설명으로 추가

Lost in the Middle 현상

  • 프롬프트가 길어지면 중간에 있는 내용은 반영이 잘 안됨
  • 중요한 내용은 맨 앞이나 끝에 배치
  • 검색된 문서를 많이 제시해도 성능 저하

Long-Context Models

  • Google Gemini, Anthropic Claude 는 100만 토큰 이상의 입력을 처리할 수 있음
  • Long-Context Models의 장점:
    • 여러 가지 출처의 정보들 사이의 복잡한 관계를 다룰 수 있음
    • 시스템이 간소화(청킹, 임베딩, 검색 방법 등 불필요)
    • 캐시를 이용한 계산을 절약하는 것도 가능
  • RAG의 장점:
    • 어떤 정보를 바탕으로 출력했는지 알기 쉽기 때문에, 디버깅이 쉬움
    • 최신 정보를 모델에 제공하기 쉬움
    • Lost-in-the-Middle 현상을 피할 수 있음
    • 거의 무한한 데이터를 참고할 수 있음
    • 계산량이 적고 효율적

HyDE Hypothetical Document Embeddings

  • 질문에 대해 LM을 이용해서 가상의 답변을 먼저 생성
  • 가상의 답변의 임베딩과 유사한 문서를 찾음
  • 다른 방법과 달리 질문-답변 쌍의 임베딩 학습 과정이 따로 필요 없음

검색 방법의 성능 차이

  • BEIR로 평가할 경우, HyDE가 대체로 우수한 성능
    • → 별도의 임베딩 학습 방법이 필요X
  • 일부 데이터에서는 다른 방법이 더 좋은 성능을 보임
  • BM25: 키워드 검색에서 가장 많이 사용하는 방법
    • 소수의 특정 문서에만 나오는 키워드에 많은 가중치

RAG 패러다임: Naïve RAG

  • 사용자 입력을 사용하여 관련 문서를 검색 → 프롬프트와 결합하여 모델에 전달 → 최종 응답을 생성
  • 문제점:
    • 낮은 정밀도(관련 없는 문서가 검색됨)
    • 낮은 재현도(관련 있는 문서가 검색 결과에서 누락됨)
    • 더이상 유효하지 않은 오래된 정보가 검색될 수 있음

RAG 패러다임: Advanced RAG

  • 검색 전후에 최적화
  • 검색 전:
    • Query Routing: 질의에 맞는 적절한 처리 경로를 설정
    • Query Rewriting: 검색하기 좋게 질의를 다시 작성
    • Query Expansion: 질의를 확장
  • 검색 후:
    • rerank: 검색 결과의 순위 재조정
    • summary: 요약
    • fusion: 여러 개의 검색 결과를 하나로 합침

rerank

  • dense retriever(벡터 검색)의 장점:
    • 동의어 등을 비롯한 단어/문장의 의미 반영
  • sparse retriever(BM25 등)의 장점:
    • 별도의 모델 및 훈련 과정이 필요 없음
    • 검색 속도가 빠름
    • 학습시키지 않은 분야(out-of-domain)에서 성능이 높음
  • Rerank: 1차 검색 후 별도의 reranker 모델로 순위(rank)를 재(re)평가
  • Re2G: 검색 증강 생성(RAG)에 rerank 단계를 추가, N의 검색 결과 중 상위 K개만 추려서 프롬프팅
  • Reranker 모델: 일반적으로 질문과 후보 텍스트를 BERT에 함께 넣고 0/1로 예측

RAG 패러다임: Modular RAG

  • Naïve & Advanced RAG를 포함하여 다양한 모듈로 구성된 유연한 RAG
  • 모듈:
    • 검색 모듈: RAG에 특화된 검색
    • 메모리 모듈: LLM의 맥락을 확장
    • 예측 모듈: LLM을 통해 직접 컨텍스트를 생성
    • 태스크 어댑터 모듈: RAG를 다양한 다운스트림 작업에 맞춰 줌
  • 패턴:
    • Naïve & Advanced RAG
    • DSP: LM이 수행해야할 작업의 예시를 검색하여 제시(DEMONSTRATE), 검색(SEARCH), 생성(PREDICT)
    • ITER-RETGEN: 검색 → 생성 → 검색 → 생성 … 반복
Previous
증강