LangGraph 기반 고도화된 RAG 및 에이전트 파이프라인 마스터 가이드

단방향 RAG의 한계를 극복하고 조건부 분기, 순환 연산, 에이전트 아키텍처를 유연하게 구현하는 랭그래프 핵심 개념과 실전 파이프라인 구축 방법을 정리했다.

LangGraph 기반 고도화된 RAG 및 에이전트 파이프라인 마스터 가이드

📌 한 줄 요약: 단방향 RAG의 한계를 극복하고, 조건부 분기·순환 연산·에이전트 아키텍처를 유연하게 구현할 수 있는 랭그래프(LangGraph)의 핵심 개념과 실전 파이프라인 구축 방법을 다룬다.

원본 영상
LangGraph 기반 고도화된 RAG 및 에이전트 파이프라인 마스터 가이드
이 글은 위 영상의 내용을 정리·재구성한 것이다. 원문의 맥락과 뉘앙스는 영상에서 직접 확인할 수 있다.

블루메 AI의 J가 진행하는 9시간이 넘는 대장정의 풀 영상 강의 시리즈에서는 랭글러 공식 문서에서 강조한 내용을 가득 담아 고도화된 에이전트 개발법을 전한다(출처: AI 에이전트 개발, 이 영상 하나로 끝냅니다. (LangChain + LangGraph), 블루메 AI). 이 글을 통해 독자들은 전통적인 단방향 RAG 구조의 한계를 넘어, 순환 연산과 동적인 흐름 제어가 가능한 랭그래프를 활용해 프로덕트 수준의 AI 에이전트 파이프라인을 직접 구축하고 제어하는 실전 노하우를 얻을 수 있다.


💡 주요 내용 및 핵심 인사이트

1. 랭그래프(LangGraph)의 탄생 배경과 전통적 RAG(Naive RAG)의 한계

▶️ 이 구간부터 보기

전통적인 나이브 RAG(Naive RAG)는 데이터 로더, 청크 사이즈, 검색 쿼리, LLM 프롬프트 등이 한 번에 세팅되어 실행되는 단방향(Single-directional) 파이프라인 구조를 가진다. 이러한 단방향 구조는 중간 단계에서 결과가 만족스럽지 않아도 뒤로 돌아가 수정(Backtracking)할 수 없기 때문에, 모든 과정을 한 번에 완벽하게 처리해야 하는 한계에 봉착한다.

우리가 회사 생활을 할 때 보고서 작성을 위해 팀장님께 보고서를 가지고 가서 피드백을 받고 수정하고 다시 가는 과정을 거치듯, 현재 처한 상황은 한 번에 제출을 잘해서 한 번에 통과를 해야 하는 상황이라고 볼 수가 있다. 그래서 여기서 제한된 아이디어가 바로 랭그래프라는 것이다. 이러한 갈증을 해소하기 위해 등장한 랭그래프는 공식 문서에서 고도화된 에이전트를 구축하고 관리하고 배포하기 위한 저수준 즉 로우 레벨의 오케스트레이션 프레임워크이자 런타임이라고 소개하고 있다(출처: AI 에이전트 개발, 이 영상 하나로 끝냅니다. (LangChain + LangGraph), 블루메 AI). 이 로우레벨 저수준이라는 것은 사용자가 개입할 수 있는 디테일한 수준이 아주 깊다는 뜻이며, 그만큼 개발자가 에이전트를 개발함에 있어서 섬세하게 컨트롤할 수 있다는 뜻이다(출처: AI 에이전트 개발, 이 영상 하나로 끝냅니다. (LangChain + LangGraph), 블루메 AI). 랭그래프는 세부 과정을 노드(Node)로 쪼개고, 노드 간의 흐름을 엣지(Edge)로 연결하여 순환(Cyclical) 연산과 동적인 흐름 제어가 가능한 '플로우 엔지니어링(Flow Engineering)'을 지원한다.

2. LangGraph의 핵심 구성 요소: 노드(Node), 엣지(Edge), 상태(State)

▶️ 이 구간부터 보기

랭그래프의 핵심 구성 요소는 노드, 엣지, 그리고 상태로 이루어져 있으며 각각 고유한 역할을 수행한다. 이 기초 문법을 바탕으로 다양한 아키텍처의 에이전트를 구축하는 방법과 오케스트레이션과 워커, 그리고 에루에이터와 옵티마이저 구조를 배우게 된다(출처: AI 에이전트 개발, 이 영상 하나로 끝냅니다. (LangChain + LangGraph), 블루메 AI). 구체적인 구성 요소의 특징은 다음과 같다.

  • 노드(Node): 파이썬 함수(Python Function)로 구현되며, 상태(State)를 입력받아 처리 후 다시 상태를 반환하는 독립적인 단위이다.
  • 엣지(Edge) 및 조건부 엣지(Conditional Edge): 노드와 노드를 연결하는 경로이며, 조건부 엣지를 통해 결과값에 따라 여러 갈래(분기 처리, 라우팅)로 흐름을 다이나믹하게 제어할 수 있다.
  • 상태(State): 독립된 노드 간에 정보를 전달하는 택배 상자와 같은 역할을 하며, 타입디트(TypedDict)를 상속받아 정의한다. 특히 add_messages와 같은 리듀서(Reducer)를 활용하면 데이터가 덮어씌워지지 않고 누적 관리된다.

3. 체크포인터(Checkpointer)와 메모리, 휴먼 인 더 루프(Human-in-the-loop)

▶️ 이 구간부터 보기

메모리와 체크포인터를 활용하면 과거 실행 과정의 스냅샷이 저장되어 멀티턴(Multi-turn) 대화 구현이 매우 쉬워지고, 마음에 들지 않는 단계로 되돌아가는 리플레이(Replay) 기능이 가능해진다. 후속 강의에서는 메모리 파트로 넘어가 메모리를 지원하는 에이전트를 랭그래프에서 구축하고 과거로 돌아가던 시간 여행 즉 타임 트래블과 사건을 되돌리는 포킹에 대해서도 다루게 된다(출처: AI 에이전트 개발, 이 영상 하나로 끝냅니다. (LangChain + LangGraph), 블루메 AI).

쓰레드 아이디(Thread ID)를 기준으로 대화 세션을 분리·관리할 수 있어 카카오톡 단톡방처럼 독립된 대화 방을 유지할 수 있다. 또한 노드 실행 과정에 사람이 직접 개입하여 입력값을 조정하거나 진행 여부를 판단할 수 있는 휴먼 인 더 루프(Human-in-the-loop) 기능을 제공한다. 나아가 마지막 과정에서는 멀티 에이전트를 배워봄으로써 단 하나의 에이전트가 아닌 여러 에이전트가 서로 협업해 업무를 처리하는 서비스를 구현해 볼 수 있다(출처: AI 에이전트 개발, 이 영상 하나로 끝냅니다. (LangChain + LangGraph), 블루메 AI).

4. 나이브 RAG를 LangGraph 기반 파이프라인으로 구현하기

▶️ 이 구간부터 보기

질문 입력부터 문서 검색(Retrieval), LLM 답변 생성(Generation)에 이르는 나이브 RAG 프로세스를 LangGraph의 상태, 노드, 엣지 구조로 마이그레이션할 수 있다. 개발 단계에서는 invoke_graph를 통해 각 노드의 반환값과 상태 변화를 모니터링하며 디버깅할 수 있고, 실서비스 단계에서는 stream_graph를 통해 토큰 스트리밍 출력을 구현할 수 있다. 이 과정에서 파이프라인의 각 단계를 명확히 분리하여 오류 발생 시 원인을 추적하기가 훨씬 수월해진다.

5. 관련성 체크(Relevance Check)와 조건부 엣지 분기

▶️ 이 구간부터 보기

검색된 문서가 사용자의 질문에 적합한지 LLM 저지(LLM Judge)를 통해 관련성 평가(Groundness Check)를 수행한다. 평가 결과가 유효하면 곧바로 답변 생성으로 넘어가고, 유효하지 않으면 웹 검색(Web Search) 모듈이나 쿼리 재작성(Query Rewrite) 모듈로 라우팅하여 정보 공백을 보강한다. 조건부 엣지 분기를 통해 불필요한 연산을 줄이고 답변의 정확도를 높이는 지능적인 흐름 제어가 완성된다.

6. 에이전틱 RAG(Agentic RAG)와 적응형 RAG(Adaptive RAG) ⏱️ [121:01]

▶️ 이 구간부터 보기

에이전틱 RAG는 LLM 에이전트가 스스로 판단하여 문서 검색 도구(Retrieval Tool)를 사용할지 여부를 결정하며, 상식적인 질문은 RAG 없이 즉시 답변하여 속도와 토큰 비용을 최적화한다. 적응형 RAG(Adaptive RAG)는 쿼리 분석을 통해 벡터 스토어 검색과 웹 검색 중 최적의 데이터 소스를 동적으로 라우팅하고, 개별 문서 평가를 통해 노이즈를 제거하여 답변 품질을 극대화한다. 고도화된 아키텍처를 통해 단순한 검색을 넘어 유연하고 지능적인 응답 체계를 구축할 수 있다.


📚 주요 용어 정리 및 설명

  • 랭그래프(LangGraph): LLM 기반 응용 프로그램을 그래프 구조(노드와 엣지)로 정의하여 복잡한 워크플로우, 순환 연산, 에이전트 제어를 쉽게 구현할 수 있도록 돕는 프레임워크다.
  • 상태(State): 랭그래프 내의 노드 간 데이터를 주고받기 위해 공유하는 메모리 객체로, 딕셔너리 기반의 타입디트(TypedDict)로 정의된다.
  • 조건부 엣지(Conditional Edge): 노드 실행 결과에 따라 다음에 실행될 노드를 동적으로 결정하는 분기 처리 기법이다.
  • 체크포인터(Checkpointer): 그래프의 실행 상태와 대화 이력을 메모리나 데이터베이스에 저장하여 세션 관리, 멀티턴 대화, 상태 복원이 가능하게 만드는 모듈이다.
  • 에이전틱 RAG(Agentic RAG): 고정된 파이프라인 형태의 전통적 RAG에서 벗어나, 에이전트가 도구 사용 여부와 검색 전략을 스스로 판단하고 실행하는 고도화된 검색 증강 생성 방식이다.

💬 가슴에 남는 핵심 문장

"우리가 회사 생활을 하실 때도 보고서 작성을 할 때 팀장님께 보고서를 가지고 갔어요. 피드백을 받고 수정하고 다시 가고... 근데 우리는 지금 처한 상황이 어떤 상황이냐면 한 번에 제출을 잘해서 한 번에 통과를 해야 되는 그런 상황이라고 볼 수가 있습니다. 그래서 여기서 제한된 아이디어가 바로 랭그래프라는 거예요."


📎 참고 영상