수민 '-'

플오그래밍

제가 작성하는 모든 글은 절대 상업적인 이용이 아니며, 그저 개인적인 공부 용도로만 사용하는 것임을 밝힙니다.

AI Agent - RAG·MCP·LangGraph로 보는 에이전트 워크플로우

AI Agent는 환경으로부터 정보를 지각(Perception)하고, 주어진 목표를 달성하기 위해 의사결정(Decision Making)을 거쳐 적절한 행동(Action)을 수행하는 지능형 주체다. 단순히 입력에 반응하는 프로그램과 달리, 에이전트는 데이터와 경험을 바탕으로 학습하며 상황에 맞게 적응한다.

최근에는 텍스트·이미지·음성 등을 동시에 다루는 멀티모달 모델, 외부 지식을 검색해 활용하는 RAG, 그리고 도구·서비스·DB와 연결해 실행 능력을 확장하는 MCP 같은 기술이 결합되면서 “말만 잘하는 모델”에서 “일을 하는 시스템”으로 빠르게 진화하고 있다. (원문 흐름은 AI Agent 내용을 바탕으로 정리했다.)


1. AI Agent 한 줄 정의

AI Agent = “상황을 보고(지각) → 판단하고(의사결정) → 행동한다(실행)”

여기서 중요한 건, 단순 챗봇처럼 답변만 생성하는 게 아니라:

  • 환경(웹, 문서, DB, 앱, 센서 등)과 상호작용하고
  • 목표(예: 고객 문의 해결, 리포트 작성, 주문 실행)를 기준으로
  • 필요한 도구 호출반복 루프까지 포함하는 “작업 단위 시스템”이라는 점이다.

2. RAG: 외부 지식을 끌고 와서 답하는 방식

RAG(Retrieval-Augmented Generation)는 생성형 AI가 답변을 만들 때, 모델 파라미터에만 의존하지 않고 관련 문서를 검색(Retrieval) 한 뒤 이를 입력 맥락에 포함시켜 답변을 생성(Generation) 하는 방식이다.

왜 중요한가?

  • 모델이 학습 시점 이후의 최신 정보나 사내 문서 같은 도메인 지식을 활용할 수 있다.
  • 환각(hallucination)을 줄이고 답변 신뢰도를 올릴 수 있다.

대표 적용:

  • 고객 지원(FAQ + 내부 정책 문서)
  • 법률/계약 문서 검색
  • 논문·기술 문서 요약

원문 참고: AI Agent


3. MCP: 에이전트가 “도구”를 표준 인터페이스로 쓰게 해주는 연결고리

MCP(Model Context Protocol)는 에이전트가 외부 도구, 서비스, 데이터베이스를 표준화된 방식으로 연결해 호출할 수 있도록 설계된 프로토콜이다.

기존에는:

  • 도구마다 API가 다르고
  • 인증/요청/응답 스키마가 제각각이라
  • 에이전트가 “실행 능력”을 확장하려면 붙이는 비용이 컸다.

MCP는 공통 인터페이스를 제공해:

  • 문서 검색
  • DB 질의
  • 외부 애플리케이션 실행

같은 작업을 더 일관된 구조로 다루게 해준다. 원문 참고: AI Agent


4. AI Agent 대표 사례

원문에 나온 사례를 “지각 → 의사결정 → 행동” 관점으로 다시 보면 구조가 더 선명해진다.

1) 로봇청소기 (iRobot Roomba 등)

  • 지각: 센서/카메라로 집 구조 인식
  • 의사결정: 이동 경로 계획
  • 행동: 청소 수행

2) 자율주행 자동차 (Tesla Autopilot, Waymo)

  • 지각: 카메라·라이다 등 센서로 환경 인식
  • 의사결정: 교통 상황에 맞는 주행 판단
  • 행동: 가속/감속/조향 실행

3) 스마트 스피커 (Alexa, Google Assistant, Clova)

  • 지각: 음성 입력으로 요청 인식
  • 의사결정: 의도 분석
  • 행동: 음악 재생, 날씨 안내, IoT 제어 등 실행

4) 금융 트레이딩 에이전트 (로보어드바이저)

  • 지각: 시장 데이터 실시간 분석
  • 의사결정: 투자 전략 수립
  • 행동: 매수/매도 주문 실행

5) 게임 AI (AlphaGo, OpenAI Five, AlphaStar)

  • 지각: 게임 상태 인식
  • 의사결정: 수 선택/전략 판단
  • 행동: 실제 플레이 실행

5. AI Agent 대표 프레임워크(흐름 이미지)

원문에서 정리된 프레임워크 흐름 그림이다.


6. 워크플로우(Workflow): 에이전트를 “일하는 시스템”으로 만드는 설계도

워크플로우(Workflow)는 어떤 작업을 달성하기 위해 사람이든 시스템이든 따라야 하는 단계적 절차나 흐름을 뜻한다.

AI 에이전트 관점에서 워크플로우는 대략 이런 질문에 대한 답이다.

  • 무엇을 어떤 순서로 할까?
  • 언제 검색하고, 언제 생성하고, 언제 검증할까?
  • 실패하면 어디로 돌아가 재시도할까?

즉 “목표를 이루기 위해 어떤 노드들을 어떤 흐름으로 연결할지”를 정의하는 실행 계획이다.


1. n8n: 워크플로우 자동화 레고 블록

n8n은 오픈소스 워크플로우 자동화 도구로, 노드를 이어 붙여 다양한 서비스와 AI 모델을 연결할 수 있게 해준다.

  • 이메일, DB, Slack 같은 협업 도구
  • OpenAI, HuggingFace 같은 AI API

까지 연결해서 “데이터 수집 → 전처리 → AI 호출 → 결과 전달” 같은 파이프라인을 빠르게 만들 수 있다.


2. RAG 워크플로우: 직선형 파이프라인

RAG 워크플로우는 보통 다음처럼 고정된 순서로 움직이는 단일 경로 구조다.

질문 입력
  → 임베딩/쿼리 생성
  → 문서 검색(Vector DB 등)
  → 컨텍스트 합치기
  → 답변 생성

빠르고 단순해서 FAQ나 사내 문서 QA처럼 “질문-답”이 명확한 문제에 잘 맞는다.


3. 에이전틱 RAG 워크플로우: 분기/반성/재검색이 있는 반복형

에이전틱 RAG(Agentic RAG)는 RAG 흐름 위에 에이전트의 자율성을 얹는다.

  • 질문을 분석하고 “검색이 필요한지” 판단
  • 쿼리를 재작성해 여러 번 검색
  • 검색 결과를 평가·반성하고 부족하면 재시도

이런 반복 루프가 들어가면서, 복잡한 리서치/멀티홉 질문/장기 과제에 강해진다.


4. 멀티홉 질의(Multi-hop Query)

멀티홉 질의는 단일 질문에 답하기 위해 여러 정보 조각(문서, 문단, 사실)을 순차적으로 연결해 추론해야 하는 질문을 말한다.

  • Single-hop: 질문 → 한 문서/사실만 찾아도 답 가능
  • Multi-hop: 여러 정보원을 찾아 순차적으로 이어야 답 가능

에이전틱 RAG가 강해지는 대표 케이스가 여기다. “한 번 검색으로 끝”이 아니라, 중간 결과를 보고 재검색/재정리가 필요한 경우가 많기 때문이다.


7. LangChain과 LangGraph: “에이전트 워크플로우”를 코드로 만들기

원문 참고: 랭그래프

7-1. LangChain

LangChain은 LLM 앱을 만들 때 자주 반복되는 기능들을 묶어 둔 프레임워크다.

  • 프롬프트 관리
  • 문서 검색(Retrieval)
  • 벡터 DB 연동
  • 체인(Chain) 구성
  • 외부 도구(Tool) 연결

RAG나 에이전트 같은 시스템을 빠르게 구성할 때 유용하다.

7-2. LangGraph

LangGraph는 “에이전트나 RAG를 단계별로 구성하고 실행하는 그래프 기반 오케스트레이션”에 초점이 있다.

  • 기존 RAG가 직선형 파이프라인이라면
  • LangGraph는 노드/엣지로 분기, 반복, 조건 처리, 에이전트 루프를 명확하게 표현한다.

그래서 “검색 → 답변 생성 → 자기평가 → 재검색” 같은 흐름을 설계/디버깅하기 좋다.


8. LangGraph의 필수 구성요소: Node, Edge, State, Flow Control

LangGraph는 구성요소를 4개로 잡고 보면 이해가 쉽다. 원문 참고: 랭그래프

1) 노드(Node)

노드는 그래프 안에서 실행되는 “작업 단위”다.

  • 질문 임베딩하기
  • 벡터 DB에서 문서 검색하기
  • LLM으로 답변 생성하기

같은 단계가 각각 하나의 노드가 된다.

2) 엣지(Edge)

엣지는 노드와 노드를 연결하는 실행 흐름이다.

  • “검색 → 답변 생성”
  • “답변 평가 → 재검색”

같은 연결을 엣지로 표현한다.

3) 상태(State)

상태는 워크플로우 실행 중 공유되는 데이터 저장소다.

  • user 질문
  • 검색 결과 문서
  • 답변 초안
  • 다음 행동(재검색할지 종료할지)

같은 값들이 state에 들어가고, 각 노드는 state를 읽고 업데이트한다.

4) 조건 분기와 루프(Flow Control)

조건 분기는 상태에 따라 다음 노드를 바꾸고, 루프는 특정 단계를 반복 실행한다.

에이전틱 RAG의 “재검색-재생성” 루프를 코드로 구현할 때 이 구조가 핵심이 된다.


9. (실습 맛보기) StateGraph로 “한 노드짜리” 그래프 만들기

원문 예시 스타일을 최대한 유지해, 가장 작은 형태만 맛보기로 정리한다. 원문 참고: 랭그래프

from typing_extensions import TypedDict
from langgraph.graph import StateGraph, START, END


class InputState(TypedDict):
    question: str


class OutputState(TypedDict):
    answer: str


class OverallState(InputState, OutputState):
    pass


def answer_node(state: InputState):
    # 실제로는 여기에서 LLM 호출이나 RAG 검색을 붙이는 형태로 확장된다.
    return {"answer": "bye", "question": state["question"]}


graph_builder = StateGraph(OverallState, input_schema=InputState, output_schema=OutputState)
graph_builder.add_node(answer_node)
graph_builder.add_edge(START, "answer_node")
graph_builder.add_edge("answer_node", END)
graph = graph_builder.compile()

result = graph.invoke({"question": "hi"})
print(result)

이렇게 작은 단위로 시작해, 노드를 “검색/생성/평가/재검색”으로 늘리면 Agentic RAG 워크플로우를 그래프로 구성할 수 있다.


마치며

  • AI Agent는 지각 → 의사결정 → 행동의 구조를 가진 “목표 지향 시스템”이고, 최근에는 멀티모달/RAG/MCP 같은 기술과 결합하면서 실행 능력이 빠르게 확장되고 있다.
  • RAG는 외부 지식을 검색해 컨텍스트로 붙여 답변 품질을 올리는 방식이고, MCP는 도구/서비스/DB 연동을 표준화해 에이전트를 더 쉽게 “일하는 시스템”으로 만든다.
  • LangGraph는 노드/엣지/상태/루프로 워크플로우를 표현해, 직선형 RAG부터 반복형 Agentic RAG까지 구조적으로 설계·디버깅하기 좋다.

참고