▶️25분
[영상] 랭체인 + RAG 기초 완벽 정리
Day 4: RAG 파이프라인 구축
[영상] 랭체인 + RAG 기초 완벽 정리
RAG 기초 > Day 4: RAG 파이프라인 구축
학습 목표
LangChain의 주요 추상화 계층(Document Loader, Text Splitter, Vectorstore, Chain)을 설명할 수 있다 RetrievalQA 체인으로 제조 문서 Q&A 시스템을 구현할 수 있다 Retriever를 교체해 하이브리드 검색(BM25 + 벡터)으로 전환하는 방법을 설명할 수 있다 LCEL로 체인을 구성하는 최신 패턴을 이전 방식과 비교할 수 있다
영상 핵심 정리 — LangChain + RAG 기초
LangChain 4단계 레이어
① DocumentLoader : PDF/Web/DB → Document 객체
② TextSplitter : Document → 청크 리스트
③ Vectorstore : 청크 → 임베딩 → DB 저장 / 검색
④ Chain : Retriever + Prompt + LLM → 최종 답변
LCEL 최신 패턴
| 구식(v0.1) | 최신 LCEL(v0.3+) |
|---|---|
RetrievalQA.from_chain_type(...) | retriever | prompt | llm | parser |
| 스트리밍 별도 설정 | 기본 스트리밍 내장 |
| 디버깅 어려움 | LangSmith trace 자동 |
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
chain = (
{'context': retriever, 'question': RunnablePassthrough()}
| prompt_template | llm | StrOutputParser()
)
for chunk in chain.stream('3호기 베어링 교체 주기는?'):
print(chunk, end='', flush=True)
EnsembleRetriever 하이브리드
from langchain.retrievers import BM25Retriever, EnsembleRetriever
bm25 = BM25Retriever.from_documents(docs, k=5)
vector = vectorstore.as_retriever(search_kwargs={'k': 5})
hybrid = EnsembleRetriever(
retrievers=[bm25, vector], weights=[0.4, 0.6]
)
한국어 splitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=512, chunk_overlap=50,
separators=['\n\n', '\n', '。', '.', ' ']
)
함정 주의: separators에 한국어 종결 。와 . 모두 안 넣으면 한국어 문장 경계를 놓친다.
다음 task와의 연결
'LangChain RAG 파이프라인 코드'에서 LCEL 체인에 메모리와 소스 인용을 추가해 챗봇으로 발전시킨다.
AI로 학습하기 — 꿀팁
🤖LangChain LCEL RAG 파이프라인 구현AI 학습 팁
AI 에이전트에게 LangChain LCEL 파이프 연산자를 사용해 EnsembleRetriever BM25+벡터 결합 RAG 파이프라인을 구현하게 하고, 4 레이어 아키텍처가 올바른지 검토하세요.
LangChain LCEL 파이프 연산자(|)를 사용해 제조 설비 매뉴얼 RAG 파이프라인을 구현해줘. Loader → Splitter → Vectorstore → LLM Chain 4 레이어 구조로 작성하고, EnsembleRetriever로 BM25와 벡터 검색을 가중치 합산 결합하는 코드를 포함해줘. 스트리밍 내장 LCEL 파이프와 기존 체인 방식의 차이점도 설명해줘.
이 팁이 도움이 됐나요?
핵심 포인트
- • LangChain 4 레이어: Loader → Splitter → Vectorstore → LLM Chain
- • LCEL 파이프 연산자(|): retriever | prompt | llm | parser, 스트리밍 내장
- • EnsembleRetriever: BM25 + 벡터를 가중치 합산으로 결합
- • 제조: PDF → PyPDFLoader → RecursiveCharacterTextSplitter → Chroma → RetrievalQA
