본문 바로가기

카테고리 없음

[AI] RAG(Retrieval-Augmented Generation)

1. RAG 정의와 개념

RAG(Retrieval-Augmented Generation)는 '검색 증강 생성'이라고도 불리며, 기존 생성 AI 모델에 검색 기능을 결합한 방식으로 기존의 LLM이 가진 한계를 극복하고, 더 정확하고 최신의 정보를 제공할 수 있게 해주는 기술이다.

2.  RAG의 장점

2-1. 최신 정보 반영

- 실시간 데이터 업데이트 가능
- 학습 데이터의 시간적 한계 극복
- 동적 지식 베이스 활용

2-2. 환각(Hallucination) 현상 감소

- 실제 데이터 기반 응답 생성
- 검증 가능한 정보 제공
- 소스 추적 가능

2-3. 정확한 맥락 기반 응답

- 관련 문서 직접 참조
- 도메인 특화 지식 활용
- 상황 맥락 이해 향상

 

3. RAG의 작동 원리

3-1. 검색 단계 (Retrieval)

from langchain.document_loaders import DirectoryLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

# 문서 로딩
loader = DirectoryLoader('./documents')
documents = loader.load()

# 문서 분할
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)
splits = text_splitter.split_documents(documents)

 

3-2. 증강 단계 (Augmentation)

from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma

# 임베딩 생성 및 저장
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(
    documents=splits,
    embedding=embeddings
)

# 검색 결과 증강
retriever = vectorstore.as_retriever(
    search_type="similarity",
    search_kwargs={"k": 3}
)

 

3-3. 생성 단계 (Generation)

from langchain.chains import RetrievalQA
from langchain.llms import OpenAI

# RAG 체인 구성
qa_chain = RetrievalQA.from_chain_type(
    llm=OpenAI(),
    chain_type="stuff",
    retriever=retriever,
    return_source_documents=True
)

 

4.  RAG 핵심 컴포넌트

4-1. Document Loaders

  • 다양한 소스의 문서를 로드하는 컴포넌트
  • 지원 형식
    • PDF, Word, Excel
    • HTML, Markdown
    • 데이터베이스
    • API 응답 등

4-2. Text Splitters

  • 긴 문서를 관리 가능한 청크로 분할
  • 주요 분할 방식
    • Character Text Splitter
    • Recursive Character Text Splitter
    • Token Text Splitter
    • Semantic Text Splitter

4-3. Embeddings

  • 텍스트를 벡터로 변환하는 모델
  • 주요 임베딩 모델
    • OpenAI Embeddings
    • HuggingFace Embeddings
    • Cohere Embeddings
    • Custom Embeddings

4-4. Vector Stores

  • 임베딩 벡터를 저장하고 검색하는 데이터베이스
  • 주요 벡터 저장소
    • Chroma
    • FAISS
    • Pinecone
    • Weaviate

4-5. Retrievers

  • 관련 문서를 검색하는 컴포넌트
  • 검색 방식
    • Similarity Search
    • MMR (Maximum Marginal Relevance)
    • Hybrid Search

4-6. LLMs (Large Language Models)

  • 최종 응답을 생성하는 언어 모델
  • 지원 모델
    • OpenAI GPT 모델
    • Anthropic Claude
    • Local LLMs
    • Custom Models