728x90
이 글에서는 RAG 시스템을 구성하는 핵심 요소(Component) 4가지를 소개하고,
이들이 어떻게 상호작용하며 전체 검색-생성 흐름을 만드는지 알기 쉽게 정리해드립니다.
✨ RAG 시스템 전체 흐름 요약
먼저 전체 그림을 한눈에 보고 시작하겠습니다.
[사용자 질문]
↓
[문서 검색기 Retriever]
↓ ⟵ 벡터화된 문서 저장소(VectorDB)
[선택된 문서 + 질문]
↓
[LLM (GPT-3.5/4 등)]
↓
[최종 답변 생성]
핵심 키워드: 검색기(Retriever) + 언어 모델(LLM) + 문서 저장소(VectorDB)
📦 RAG 구성 요소 4가지
✅ 1. 문서 임베딩 & 벡터스토어 (Vector Store)
- 역할: 텍스트 문서(예: metadata.json) → 숫자로 표현된 벡터로 변환
- 사용 이유: 문장 간 유사도를 비교해 검색하기 위해
- 사용 도구: OpenAIEmbeddings, ChromaDB, FAISS 등
📌 예시:
from langchain.embeddings import OpenAIEmbeddings
embedding = OpenAIEmbeddings()
vectors = embedding.embed_documents(["table name: products", "table name: orders"])
✅ 2. 검색기 (Retriever)
- 역할: 사용자 질문과 유사한 문서를 벡터스토어에서 검색
- 동작: 벡터 유사도 기반으로 top-k 문서를 반환
- LangChain 객체: VectorStoreRetriever
📌 예시:
retriever = db.as_retriever(search_type="similarity", search_kwargs={"k": 3})
docs = retriever.get_relevant_documents("상품 정보가 담긴 테이블이 뭐야?")
✅ 3. 언어 모델 (LLM)
- 역할: 질문 + 검색된 문서로부터 최종 답변 생성
- 선택 예시: GPT-3.5 / GPT-4 (OpenAI)
- LangChain 객체: ChatOpenAI, LLMChain, RetrievalQA
📌 예시:
from langchain.chat_models import ChatOpenAI
llm = ChatOpenAI(model="gpt-3.5-turbo")
✅ 4. RAG 체인 (QA Chain)
- 역할: 전체 흐름을 묶어주는 통합 처리 체인
- 기능: 검색된 문서 + 질문 → 응답을 만들어냄
- LangChain 객체: RetrievalQA, ConversationalRetrievalChain
📌 예시:
from langchain.chains import RetrievalQA
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=retriever
)
response = qa_chain.run("상품 정보를 담고 있는 테이블이 뭐야?")
🔄 전체 동작 순서 요약
- 문서 벡터화 → 벡터스토어 저장
- 질문 벡터화 → 유사한 문서 검색
- 검색된 문서 + 질문 → LLM 전달
- 최종 답변 생성
💡 실제 활용 예시: Iceberg metadata에 적용하면?
- metadata.json에서 테이블 이름, 컬럼, 파티션 구조를 추출
- 각 테이블을 설명하는 텍스트로 구성 → 벡터화
- 사용자가 "상품 테이블 알려줘"라고 하면, 유사한 테이블 추천 가능!
📎 요약 및 핵심 정리
- RAG는 문서 검색 + LLM 응답 생성을 결합한 구조입니다.
- 핵심 구성요소는 임베딩, 벡터 검색, LLM, 체인 구성입니다.
- 이 흐름을 이해하면 앞으로의 LangChain 실습이 더 쉬워집니다!
728x90
'LLM & Generative AI > RAG in Practice' 카테고리의 다른 글
[LangChain RAG 구축 시리즈 Ep.05] 🧩 왜 metadata.json을 문서처럼 다뤄야 할까? (1) | 2025.04.05 |
---|---|
[LangChain RAG 구축 시리즈 Ep.04] ❄️ Iceberg란? 메타데이터 구조와 RAG 연결 (1) | 2025.04.05 |
[LangChain RAG 구축 시리즈 Ep.03] 🧠 LLM은 어디까지 알고 있을까? 외부 지식의 필요성 (1) | 2025.04.05 |
[LangChain RAG 구축 시리즈 Ep.02] 📦 Embedding의 원리와 벡터의 의미 (1) | 2025.04.05 |
Kubernetes 환경에서 ChromaDB 구축 및 Python 데이터 저장 테스트 (0) | 2025.02.27 |