RAG

Naive RAG

indexing

  • 다양한 문서 포맷을 모델이 학습 가능한 텍스트 청크로 나눔
  • 임베딩(벡터화) 하여 벡터 데이터베이스에 저장

retrieval

  • 유저로부터 쿼리를 받으면 해당 쿼리를 임베딩한 후 indexing 에서 저장된 벡터들과 비교하여 유사도가 높은 Top K chunk 를 골라냄

generation

  • 임베딩된 쿼리와 chunk는 자연어 상태의 프롬프트로 합성되어 모델로 입력되고 결과가 생성됨

Naive RAG 의 단점

  • 검색 단계에서 적절한 chunk 가 검색되지 않을 수 있음
  • chunk 단위로 나뉜 정보는 중요한 정보와 중요하지 않은 정보가 섞여있을 수 있고 이로 인해 중요한 정보가 포함된 chunk 가 누락될 수 있음
  • 생성 단계에서 모델이 검색된 chunk를 기반으로 하지 않는 텍스트를 생성할 수 있음
  • 다른 소스로 부터 얻어진 중복된 정보는 중복된 정보의 텍스트를 생성하고 문맥이 매끄럽지 못하거나 일관성 없는 문장을 생성할 수 있음
  • 복잡한 쿼리에서는 한번의 검색이 문맥 정보를 충분히 가져오는데 충분하지 않을 수 있음
  • 생성 모델은 증강된 정보에 의존하여 자체적으로 통찰력있거나 정보들을 조합한 새로운 정보를 추론하지 못하고 검색된 정보를 계속 되풀이하는 결과를 내놓을 수 있음

Advencsed RAG

pre-retrieval

  • 인덱싱된 데이터를 정제하거나 인덱싱 구조를 최적화하거나 정보들을 뒤섞거나 메타데이터를 추가하는 등의 최적화 과정을 거침
  • 유저의 쿼리를 좀더 명확하고 검색단계에 사용하기 좋게 최적화함

post-retrieval

  • 모든 관련있는 chunk 를 생성 모델에 다 넣는 것은 정보의 희석화를 발생시키기 때문에 중요한 정보만을 추리거나 압축함

Modular RAG

  • 앞선 패러다임들과는 다르게 정해진 순서 없이 여러가지 모듈들을 거치면서 결과를 최적화
  • Search: LLM이 코드를 생성하여 검색 엔진, 데이터베이스(SQL 등), 지식 그래프를 직접 넘나들며 검색
  • RAG-Fusion: 유저의 질문을 여러 개의 다른 관점(Multi-query)으로 확장하여 병렬 검색하고 리랭킹
  • Routing: 질문의 성격에 따라 '요약이 필요한지', '특정 DB를 설계해야 하는지' 판단하여 가장 알맞은 이동 경로를 정함
  • Predict: 필요한 문맥(Context)을 데이터베이스에서 찾는 대신, LLM이 직접 먼저 예측·생성하여 노이즈를 줄임
  • Task Adapter: RAG 시스템을 특정 하위 작업에 맞춰 자동 최적화

RAG 성능평가

Quality Scores

  • 문맥 관련성 (Context Relevance) : 검색된 문맥이 얼마나 정확하고 구체적인지, 질문에 대한 연관성이 얼마나 있는지
  • 답변 충실성 (Answer Faithfulness) : 생성된 답변이 검색된 문맥에 얼마나 부합하는지, 얼마나 일관성있고 모순된 답변이 없는지
  • 답변 관련성 (Answer Relevance) : 생성된 답변이 제기된 질문과 얼마나 연관이 있는지

Required Abilities

  • 노이즈 강인성 (Noise Robustness) : 질문과 연관은 있지만 실속없는 무의미한 정보(노이즈)를 걸러내는 능력을 평가
  • 거부 능력 (Negative Rejection) : 검색된 문서에 질문에 답할 핵심 정보가 없을 때 답변을 억지로 생성하지 않고 보류하는 능력을 평가
  • 정보 통합력 (Information Integration) : 여러 문서에 흩어진 정보를 종합하는 능력을 평가
  • 반사실적 강인성 (Counterfactual Robustness): 검색된 문서 내에 있는 명백한 오류나 왜곡된 정보, 모순되는 정보를 스스로 식별하고 무시할 수 있는 능력을 평가

평가 방식

  • 독립 평가: 위에서 언급된 평가 항목들을 RAG 시스템의 검색 부분과 답변 생성 부분을 따로 평가하는 방법
  • 종단 평가: 최종 생성된 답변만 평가하는 방법

평가에 사용되는 지표

평가에 사용되는 프레임워크 및 툴

RAGAS

RAG 평가 분야에서 가장 인기 있는 라이브러리. RAG 전용 핵심 지표를 쉽게 평가 가능

TruLens

RAG 의 핵심 지표를 시각화 대시보드와 함께 제공하여 디버깅하기 좋으나 RAGAS 에 비해 초기 설정 코드가 조금 더 무거운 편

ARES

논문 중심의 학술적 프레임워크. 정확도는 높지만 설정이 매우 복잡하여 간단하게 사용하기에는 부적합

DeepEval

최근 RAGAS 의 강력한 대안이자 pytest 기반으로 동작하여 개발자 친화적. 코드 작성이 직관적이어서 빠르게 테스트하기 적합함

RGB / RECALL / CRUD

RAG 평가용 벤치마크 데이터셋이나 학술 논문에서 제안된 평가 방법론

LangChain

RAG 모듈들과 LLM 모델을 결합하여 쉽게 RAG 시스템을 사용하는 LLM 서비스 (Agent)를 구축하기 위한 프레임워크

Agent

ReAct(Reasoning + Acting) 패턴을 사용

  • 사용자의 질문을 분석하고 어떤 도구를 사용할지 스스로 결정
  • 도구 실행 결과를 바탕으로 추가 작업 수행 여부 판단
  • 최종 답변을 생성할 때까지 반복적으로 추론과 행동을 수행

구성 요소

구성 요소역할
Model추론을 위한 LLM 모델
Tools명확한 정답을 반환할 수 있는 함수
System Prompt동작 지침
Context Schema런타임 컨텍스트 타입
Memory프롬프트 히스토리 관리
Middleware커스텀 로직 삽입
Structured Output출력 형식 지정

Tools

Document Loader (문서 로더)

  • WebBaseLoader
  • TextLoader
  • DirectoryLoader
  • CSVLoader
  • PDF 로더

Text Splitter

  • 가져온 문서를 청크단위로 나누기 위한 모듈

Embedding

  • 유저의 쿼리 및 청크단위로 분리된 텍스트를 벡터화하는 모듈

Vector Store

  • 벡터화한 정보들을 저장하고 검색하는 데이터베이스

Retriever

  • Vector Store 에서 문서를 검색하는 도구

Reference

0개의 댓글