▶️25

[영상] 랭체인 + 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