LangChain RAG 구축
FAISS 벡터 스토어 구축과 LCEL 체인 RAG
파이프 연산자로 LLM 애플리케이션을 조립한다
LangChain 1.0 + Amazon Bedrock — LCEL 파이프라인으로 RAG까지 빠르게 구축
🔍
RAG 체인
retriever | prompt | llm | parser — LCEL로 조립
PART 5 · RAG 체인
RAG 체인
파이프 4개로 완성하는 RAG와 그 한계
🔍
파이프 4개로 RAG 완성
VectorStore를 as_retriever()로 Runnable로 바꾸면, 검색부터 답변 파싱까지 LCEL 한 줄로 조립됩니다.
- retriever | prompt | llm | parser — 4단계 파이프라인
- as_retriever() — VectorStore를 Runnable 컴포넌트로
- 한계 — 조건 분기 · 루프 · 에러 재시도 불가
takeaway
파이프 4개로 RAG가 완성됩니다 — 직선으로 부족해지는 순간이 LangGraph로 넘어가는 신호입니다.
PART 5 · RAG 체인
RAG = 4단계 LCEL
retriever | prompt | llm | parser — 파이프 4개로 완성
python
from langchain_aws import ChatBedrockConverse, BedrockEmbeddings
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
from langchain_community.vectorstores import FAISS
# 0. 모델 준비 — LLM + 임베딩
llm = ChatBedrockConverse(model="us.anthropic.claude-sonnet-4-6")
embeddings = BedrockEmbeddings(model_id="amazon.titan-embed-text-v2:0")
# 1. Retriever — 벡터 검색
vectorstore = FAISS.load_local("./index", embeddings, allow_dangerous_deserialization=True)
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})
# 2. Prompt — 검색 결과 + 질문 조합
prompt = ChatPromptTemplate.from_template(
"아래 컨텍스트만 사용하여 질문에 답하세요.\n컨텍스트: {context}\n질문: {question}"
)
# 3. LCEL 체인 조립
rag_chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)
answer = rag_chain.invoke("서울에서 가볼 만한 관광지는?") # 4. 실행
PART 5 · RAG 체인
LCEL RAG의 한계
직선 파이프라인의 한계 — 루프·분기가 필요한 순간
LCEL
LangGraph
조건 분기
불가 — 항상 같은 경로
→
add_conditional_edges()
재시도 루프
불가 — 검색 실패 시 멈춤
→
순환 엣지로 재검색
검증 단계
없음 — 생성 결과 그대로 반환
→
Self-RAG 검증 노드
상태 관리
없음 — 호출 간 상태 유실
→
TypedDict State + Checkpointer
takeaway
LCEL은 빠르게 만들기, LangGraph는 프로덕션 제어 — 둘은 보완 관계입니다.
PART 5 · RAG 체인
프레임워크 선택 — LangChain vs Strands
기존 투자와 배포 타겟이 가르는 선택 — LangChain 자산은 유지·확장, 신규 AWS 네이티브는 Strands 검토
LangChain 유지
기존 코드베이스 + LCEL
- 기존 LangChain 코드 유지보수 · 확장
- RAG 중심 — LCEL 조립이 간결
- 방대한 커뮤니티 · 통합 생태계
- 에이전트 확장은 LangGraph로
Strands 전환
AWS 네이티브 에이전트
- 신규 프로젝트 + AgentCore 배포
- 멀티에이전트 · MCP/A2A 네이티브 지원
- 도구 단위 점진 전환 가능
- 상세는 Strands SDK 모듈에서
takeaway
정답은 코드베이스에 있습니다 — 기존 LangChain 자산이 있으면 유지·확장, 신규 AWS 네이티브 프로젝트면 Strands를 검토합니다.
PART 5 · RAG 체인
LangChain — 조립식 파이프라인
LCEL로 조립, 분기·루프가 필요해지면 LangGraph로 확장
🦜
파이프 연산자로 LLM 애플리케이션을 조립한다
LangChain은 조립식 파이프라인 — 조건 분기·루프가 필요해지는 순간 LangGraph로 확장합니다.
파이프 연산자로 조립하고, 루프가 필요해지면 LangGraph로 확장합니다.
ChatBedrockConverse · LCEL · @tool · TextSplitter · FAISS · RAG 체인