▶️151

[영상] 랭체인 + 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 EnsembleRetriever
from langchain_community.retrievers import BM25Retriever
# BM25Retriever와 EnsembleRetriever는 서로 다른 패키지에 있다.
# 한 줄로 함께 import 하면 ImportError가 난다.

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]
)

BM25는 낱말을 세는 방식이라 한국어에서는 토큰을 어떻게 나누는지가 결과를 좌우한다. 기본 설정은 띄어쓰기로 나누므로 "프레스가"와 "프레스를"이 서로 다른 낱말이 된다. 하이브리드 검색은 W3의 주제이고, 여기서는 이런 것이 있다는 것까지만 본다. 형태소 분석을 붙이는 방법은 그때 다룬다.

한국어 splitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=512, chunk_overlap=50,
    separators=['\n\n', '\n', '. ', ' ', '']
)

여기서 자주 넘어진다: 기본 구분자에는 문장 경계가 없다. 한국어 문장은 마침표와 띄어쓰기('. ')로 끝나므로 그것을 직접 넣어야 문장 중간에서 잘리지 않는다. 일본어 구두점 는 한국어 문서에 나오지 않으므로 넣어도 하는 일이 없다.

다음 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
용어