서버인프라
📚 RAG 시스템 완전 정복: 개념, 아키텍처, LangChain 기반 구현까지
techwold ted
2025. 6. 4. 16:27
대형 언어 모델(LLM)은 놀라운 언어 생성 능력을 보여주지만, 자체 학습된 정보만을 기반으로 하기 때문에 최신 정보 반영이나 사내 데이터 활용에 한계가 있습니다.
이를 해결하는 접근 방식이 바로 RAG(Retrieval-Augmented Generation) 시스템입니다.
이 글에서는 RAG의 개념부터 전체 시스템 아키텍처, 구현 방법까지 자세히 정리합니다.
🔍 RAG란 무엇인가?
**RAG (Retrieval-Augmented Generation)**는
외부 지식 소스를 검색(Retrieval)하고, 그 정보를 기반으로 응답을 생성(Generation)하는 LLM 기반 시스템입니다.
✅ 핵심 아이디어:
“LLM에게 모든 정보를 기억시키지 말고, 필요한 정보를 실시간으로 찾아와서 활용하자”
🧱 RAG 시스템 아키텍처 개요
RAG 시스템은 두 단계로 나뉩니다.
🔧 1. 사전 구축 단계 (Preprocessing)
문서를 처리하여 **벡터 데이터베이스(Vector DB)**에 저장해 두는 단계입니다. 질문이 들어오기 전 미리 수행됩니다.
[문서 수집]
↓
[문서 청크 분할]
↓
[청크 임베딩 생성] ← OpenAI / Cohere / HuggingFace
↓
[벡터 DB 저장] ← FAISS / Qdrant / Weaviate
- PDF, TXT, HTML 등 다양한 문서를 작은 단위로 나누고
- 의미 기반 벡터로 변환한 후
- 빠른 검색을 위해 벡터 DB에 저장합니다.
💬 2. 사용자 질의 및 응답 단계 (Query-Time)
실시간으로 사용자의 질문을 처리하고, 관련 정보를 검색해 응답을 생성합니다.
[사용자 질문 입력]
↓
[질문 임베딩]
↓
[유사 문서 검색 from 벡터 DB]
↓
[문서 + 질문 → LLM 전달]
↓
[정확한 응답 생성]
이때 LLM은 **문맥(Context)**이 포함된 프롬프트를 입력받기 때문에
"단순 생성"이 아니라 "문서 기반 정확한 생성"이 가능합니다.
🧠 왜 RAG가 필요한가?
한계RAG로 해결
LLM은 최신 정보가 부족함 | 실시간 검색으로 최신 정보 반영 |
사내 비공개 문서 접근 불가 | 문서를 임베딩하여 LLM에 간접 제공 |
잘못된 정보 생성 (할루시네이션) | 검색 기반 응답으로 신뢰도 향상 |
LLM 파인튜닝 비용 높음 | 벡터 검색만으로 커스터마이징 가능 |
🛠️ LangChain으로 RAG 시스템 구현하기
LangChain은 LLM, 벡터DB, 검색기, 프롬프트 조합기 등을 모듈화된 체인 형태로 구성할 수 있는 프레임워크입니다.
✅ 기본 예시 코드
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.llms import OpenAI
from langchain.chains import RetrievalQA
from langchain.document_loaders import TextLoader
# 1. 문서 로드 및 임베딩
loader = TextLoader("company_policy.txt")
documents = loader.load()
embedding = OpenAIEmbeddings()
db = FAISS.from_documents(documents, embedding)
# 2. 검색기 생성
retriever = db.as_retriever()
# 3. LLM QA 체인 구성
llm = OpenAI(temperature=0)
qa_chain = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)
# 4. 질의 실행
query = "우리 회사의 연차 사용 규칙은?"
print(qa_chain.run(query))
🔗 벡터DB는 어떤 걸 써야 할까?
벡터 DB특징
FAISS | 로컬 환경, 가볍고 빠름 |
Qdrant | Rust 기반 고성능, API 지원 |
Weaviate | GraphQL 기반 질의, 클라우드 지원 |
Pinecone | 완전 관리형 SaaS, 생산환경에 적합 |
📊 요약: RAG 시스템의 핵심 정리
구성 요소설명
문서 → 청크 | 문서 분할로 정보 단위 관리 |
임베딩 생성 | 의미 벡터로 변환 |
벡터 검색 | 질문과 유사한 문서 검색 |
LLM 프롬프트 | 질문 + 문서 context 조합 |
응답 생성 | 신뢰도 높은 자연어 응답 |