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