Develop/AI

RAG (검색 증강 생성) 알아보자.

YOOZI. 2025. 3. 15. 22:18
728x90
최신 정보 활용을 통한 정확한 응답 생성

 

 

 

오늘은 RAG (검색 증강 생성) 알아보자.

오늘의 배움
  • RAG 개념
  • RAG 구조 (Vector DB와 LLM 결합)
  • RAG 성능 최적화 기법

1. RAG 

 

  • 정의: RAG구조는 벡터 데이터베이스(Vector DB)와 언어 모델(LLM)을 결합하여, 사용자가 입력한 질문을 바탕으로 검색된 데이터를 활용해 문맥에 맞는 자연어 응답을 생성하는 기술이다.
  • 한 줄 요약: RAG는 최신 정보를 활용해 문맥에 맞는 정확한 답을 제공하는 시스템이다.
  • 작동 원리
    1. 벡터화: 텍스트 데이터를 임베딩 벡터로 변환해 Vector DB에 저장
    2. 유사도 검색: 사용자의 질문을 벡터로 변환해 관련 데이터를 검색
    3. 응답 생성: 검색된 데이터를 컨텍스트로 사용해 LLM이 자연어 응답 생성
  • 특징:
    • 최신 정보 활용
    • 정확도 높은 응답 생성
    • 특정 도메인에 맞춘 응답 가능
  • 필요성:
    • 기존의 언어 모델은 학습 후 업데이트가 불가능하지만, RAG는 검색 기능을 통해 최신 데이터를 사용할 수 있어 정보의 최신성을 유지할 수 있다.
  • 장점/단점:
    • 장점: 최신 정보 반영, 정확한 답변 생성, 환각 현상 감소
    • 단점: 데이터 품질이 중요, 검색 성능 최적화 필요
  •  RAG Workflow:
    1. 사용자 질문 입력
    2. Embedding 모델을 사용해 질문을 벡터화
    3. Vector DB에서 유사한 문서 검색
    4. 검색된 문서를 LLM이 응답 생성에 활용
    5. 사용자에게 응답 반환

 


 

2. 핵심 개념 정리

2-1. 벡터화 (Embedding)

  • 정의: 텍스트를 고정된 길이의 벡터로 변환하는 과정
  • 작동 원리: 텍스트를 수치 벡터로 변환하여 유사도를 계산하고, 이를 바탕으로 관련 데이터를 검색
  • 특징: 유사도 기반 검색, 벡터 형태로 저장된 데이터 활용
  • 장점/단점:
    • 장점: 텍스트의 의미를 수치적으로 표현, 빠르고 효율적인 검색
    • 단점: 벡터화된 데이터가 부족하면 정확도가 떨어질 수 있음
      • 속도 문제 해결
        • 캐싱(Cache) 활용: 동일한 질문이 반복될 경우, LLM 호출 없이 기존 응답을 반환하면 속도를 향상시킬 수 있다.
          • 예제
        from functools import lru_cache
        
        @lru_cache(maxsize=100)
        def retrieve_cached_answer(query):
            return qa_chain.run(query)
        • 사전 연산(Pre-processing)
          • 중요한 문서를 미리 벡터화하여 빠르게 검색할 수 있도록 준비한다.
            • RAG 실행 전에 자주 검색되는 질문과 답변을 DB에 저장하여 속도를 개선한다.
      • 데이터 품질 문제 해결
        • 데이터 정제(Data Cleaning)
          • OCR 문서, 웹스크래핑한 데이터 등에서 불필요한 공백, 특수 문자 등을 정리한다.
          • 정제된 데이터만 벡터화하여 검색 정확도를 향상시킬 수 있다.
        • 지식 그래프(Knowledge Graph) 연동
          • RAG가 단순한 문서 검색을 넘어 개념 간의 관계를 파악하도록 지원한다.
            • 예시: 의료 데이터 → 질병과 치료법 간의 연결 강화
  • 예시: "RAG 모델을 위한 문서입니다..." 텍스트를 임베딩 벡터로 변환하여 저장

 


 

2-2. 검색 성능 최적화 기법

 

  • 정의: 데이터 전처리, 임베딩 모델 선택, 검색 전략을 최적화하여 RAG의 성능을 향상시키는 기법
  • 작동 원리: 문서를 일정 크기 단위로 분할하여 벡터화하거나, 더 적합한 임베딩 모델을 선택하여 검색 성능을 향상시킨다.
  • 특징: Chunking 전략, 임베딩 모델 선택, 검색 전략
    • Chunking 전략 (데이터 단위 분할)
      • 문서를 일정 크기의 단위(Chunk)로 나누어 벡터화하면 검색 정확도가 향상된다.
      • 일반적으로 문장 단위, 패러그래프 단위, 슬라이딩 윈도우 방식 등이 사용된다.
      • 예제
from langchain.text_splitter import RecursiveCharacterTextSplitter

text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100)
chunks = text_splitter.split_text("RAG 모델을 위한 문서입니다...")
  • Embedding 모델 선택
    • RAG에서 벡터화를 수행하는 모델 선택이 중요하다.
    • 주요 임베딩 모델 
      모델 장점  단점
      text-embedding-ada-002 OpenAI 제공, 높은 성능 API 비용 발생
      Sentence-BERT 오픈소스, 빠른 검색 가능 LLM에 비해 정확도 낮을 수 있음
      Cohere Embeddings 다국어 지원 설정이 다소 복잡
  • Retrieval 전략 (검색 최적화)
    • Top-K 검색: 관련성이 높은 상위 K개의 문서를 검색 한다. (일반적으로 K=3~5)
    • Re-ranking 기법: 검색된 문서들을 다시 정렬하여 가장 관련성이 높은 문서만 활용한다.
    • Hybrid Search: 벡터 검색 + 전통적인 키워드 검색 조합을 사용하는 전략이다.

 

  • 장점/단점:
    • 장점: 정확한 검색, 다양한 데이터 활용 가능
    • 단점: 최적화 기법에 따라 구현이 복잡해질 수 있음

 

3. RAG 활용 사례

3-1. 기업 내 문서 검색 시스템

  • ChatGPT Enterprise
    • 기업 내 사내 문서(R&D 문서, 매뉴얼, 내부 보고서)를 검색하는 AI 챗봇 시스템
      • 기존의 키워드 검색보다 문맥을 이해하는 응답 제공
      • OpenAI의 API와 Pinecone을 활용하여 구축 가능

3-2. 뉴스 및 연구 데이터 검색

  • Google’s Gemini + RAG
    • 최신 뉴스, 연구 논문을 검색하고 LLM을 활용하여 요약 및 분석 제공
      • 예를 들어, 사용자가 "2024년 AI 관련 주요 연구"를 질문하면, 최신 논문을 검색 후 요약 응답

 

4. 비교분석표

구분 벡터화 (Embedding) 검색 성능 최적화 RAG 응답 생성
항목 텍스트 벡터화 데이터 전처리, 검색 전략 문맥에 맞는 자연어 응답 생성
특징 의미 있는 수치적 표현 Chunking, 임베딩 모델, 검색 전략 LLM과 데이터 결합
장점 빠르고 효율적인 검색 정확도 향상 정확도 높은 응답 생성
단점 벡터화 데이터 부족 시 정확도 하락 복잡한 최적화 필요 데이터 품질 의존성
작동 원리 텍스트 → 벡터 → 검색 데이터 분할, 모델 선택 검색된 데이터 → LLM 응답 생성
예시 코드 embedding(text) chunk_text(text) generate_response(query, DB)
활용사례 추천 시스템, 검색 엔진 기업 문서 검색 시스템 뉴스 및 연구 데이터 요약

 

728x90

'Develop > AI' 카테고리의 다른 글

파인튜닝을 알아보자.  (0) 2025.03.16
프롬프트 엔지니어링 - Chain of Thought (CoT) 알아보자.  (0) 2025.03.16
LangChain을 알아보자.  (0) 2025.03.15
벡터 데이터베이스를 알아보자.  (0) 2025.03.15
ollama 사용 설정  (0) 2025.03.15