Home / LangChain / LangChain RAG 구축
Note

LangChain RAG 구축

FAISS 벡터 스토어 구축과 LCEL 체인 RAG

⏱ 20분 45 / 189

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 체인