딥러닝 모델의 학습 한계: 학습된 데이터 이외의 정보에 취약함
LLM은 사전학습 시에 받아들인 정보 외의 것은 배우지 못한다.
LLM은 입력값의 길이가 길어지면 계산량이 크게 늘어나, 대부분의 모델이 단일 입력값에 대해 길이 제한이 존재함.
RAG(Retrieval-Augmented Generation)는 AI 모델이 외부 데이터베이스에서 관련 정보를 검색하고, 이를 활용하여 더 정확하고 최신의 응답을 생성하는 기술.
이를 통해 LLM이 가진 한계를 극복할 수 있음.
사용자의 질문이나 프롬프트 입력
입력 내용 분석 → 키워드/의미 추출
추출된 정보 기반으로 DB에서 관련 정보 검색
벡터 유사도 기반 검색 기술 활용
검색된 정보와 사용자의 원래 질문/프롬프트 결합
정보의 적절성과 품질 평가 → 선별
선별된 정보를 프롬프트에 추가하여 보강된 입력 생성
문맥, 문체, 정보 양 등에 맞춰 조정
정확하고 관련성 높은 응답 생성을 위한 기반 마련
보강된 프롬프트를 LLM에 입력
LLM이 이를 기반으로:
최종적으로 사용자에게 적절한 응답 제공
RAG 시스템은 외부 지식 기반에서 정보를 검색해 답변을 생성하지만, 정확한 응답을 위해 검색 단계의 정교함이 매우 중요함.
검색 과정을 크게 두 단계로 나눔:
사용자 질문 → 벡터 DB에서 검색 → 관련 문서 조각(Retrieved Chunk) 추가 → 응답 생성
문제: 검색 정확도가 낮으면 잘못된 문서를 기반으로 한 부정확한 응답 발생 가능
문서 → 분할(Chunking) → 임베딩(Embedding) → 벡터 DB에 저장
고려할 점:
이 단계가 부실하면 검색 품질이 전체적으로 낮아짐
시행착오가 필수적!
사용자 질문 → 임베딩 → 벡터 DB에서 검색 → 관련 문서 조각 검색
하지만...
검색 후에도 불필요하거나 오래된 정보 제거, 유사 문서 통합 등 후처리 작업 필요
RAG 성능을 높이려면:
구분 | LLM | RAG | AI 에이전트 |
---|---|---|---|
역할 | 두뇌 | 정보 수집 | 작업 관리자 |
주요 기능 | 질문 이해, 자연어 처리, 응답 생성 | 외부 DB 또는 웹에서 정보 검색 | 목표 설정, 계획 생성, 작업 실행, 재계획 |
항목 | LLM | RAG | AI 에이전트 |
---|---|---|---|
핵심 역할 | 텍스트 생성 | 검색 + 생성 | 작업 계획 + 실행 + 재계획 |
구성 요소 | 단일 LLM | LLM + 검색 엔진 | LLM + 계획 + 메모리 + 실행 |
도구 사용 | 불가능 | 제한적 (검색 도구만) | 광범위 (API, 코드 실행 등) |
정보 출처 | 훈련 데이터만 사용 | 훈련 데이터 + 검색 데이터 | 훈련 데이터 + 웹 검색 + 작업 결과 |
실시간 정보 | ✕ | 웹에서 실시간 검색 가능 | 웹 검색, 작업 실행 |
목표 지향성 | 단일 질문에 대한 응답만 | 단일 질문에 대한 응답만 | 사용자의 목표에 맞춰 스스로 작업 실행 |
자율성 | 낮음 | 중간 | 높음 |
복잡한 작업 수행 | 단일 응답 생성만 가능 | 지식 기반 응답만 가능 | 다단계 작업 수행 가능 |
사용자 질문 → 임베딩 → 웹 검색 → 문서 조각화 → **유사도 평가** → 정보 선별 → LLM 응답 생성
AI는 좁은 작업만 가능한 수준에서부터 사람처럼 사고하고 추론할 수 있는 수준까지 진화하는 흐름으로 설명됨.
: 특정 업무(또는 분야)에 특화된 인공지능
정의: 단 하나의 작업만 잘 수행하는 AI. 범용성이 없음.
기술적 특징:
예시:
: 다양한 콘텐츠를 생성하고, 여러 감각 정보를 이해하는 인공지능
Single Modal (단일 모달)
: 하나의 형태(모달리티)에 집중된 생성 AI
Multi Modal (다중 모달)
: 텍스트 + 이미지 + 오디오 + 비디오 등 여러 정보를 함께 처리
Actuation with Perception (감각 기반 제어)
: 인공지능이 **행동(Action)**과 **감지(Perception)**를 통합해서 실제 동작을 수행
: 인간 수준의 광범위하고 유연한 추론, 학습 능력을 가진 AI (아직 존재하지 않음)
목표: 사람처럼 사고하고, 여러 분야에서 자유롭게 문제 해결
특징:
*더 나아가면 → ASI (초지능)**로 진화 가능성도 있음
구분 | 설명 | 예시 |
---|---|---|
ANI | 특정 업무 전용 AI | 얼굴 인식, 추천 시스템 |
G.AI | 생성 + 이해 + 행동 기반 AI | ChatGPT, DALL·E, GPT-4V |
AGI | 인간처럼 다방면 문제 해결 가능한 AI | 아직 없음 (연구 중) |
AI Agent는 크게 Tool과 LLM으로 이루어짐
Tools(도구)는 Agent, Chain, 또는 LLM이 외부 시스템이나 기능과 상호작용할 수 있게 하는 인터페이스입니다.
LangChain에서는 도구를 두 가지 방식으로 제공/정의할 수 있습니다:
LangChain에서 기본 제공하는 사전 정의된 도구와 툴킷(toolkit)
Tool: 하나의 기능을 수행하는 단위 도구
Toolkit: 여러 개의 Tool을 묶어 하나로 구성한 도구 모음
대표 예시:
공식 문서 링크:
사용자가 직접 정의해서 도구로 등록하는 방식
예시: 내가 만든 파이썬 함수를 LangChain에서 사용할 수 있게 등록
사용 방법:
@tool
데코레이터를 이용해 함수를 도구로 변환from langchain.tools import tool
@tool
def get_weather(location: str) -> str:
"""입력한 지역의 날씨를 반환합니다"""
...
Custom Tool은 일반 파이썬 함수를 자동화된 업무로 확장할 때 유용
다양한 백엔드 시스템과 연결 가능 (DB 조회, API 호출 등)
구분 | 설명 | 특징 |
---|---|---|
Built-in Tools | LangChain이 제공하는 기본 도구들 | 사전 정의, Toolkit 형태도 존재 |
Custom Tools | 사용자가 직접 정의한 도구 | @tool 데코레이터 사용, 함수 → 도구 변환 가능 |
Tool Calling Agent는 문제를 해결하기 위해 적절한 도구(tool)를 반복적으로 호출하고,
그 결과를 기반으로 다음 행동을 결정하여 최종적으로 답을 도출하는 에이전트입니다.
LLM이 도구 호출 필요 여부 판단
필요한 도구를 호출하여 작업 수행 (예: 검색, 코드 실행 등)
결과(Observation)를 바탕으로 추가 도구 호출 또는 답 도출
문제 해결될 때까지 반복
항목 | 설명 |
---|---|
Thought | LLM이 "어떤 도구를 사용할지" 생각함 (내적 사고 단계) |
Action | 선택된 도구를 실제로 호출함 (예: Web Search 실행) |
Observation | 도구로부터 얻은 결과를 수집 |
정보 확인 (IF) | 도구 결과가 충분한지 판단 → 불충분하면 다시 Thought 단계로 |
Answer | 충분한 정보가 모이면 최종 답변 도출 |
RAG (Retrieval-Augmented Generation): DB나 문서에서 정보 검색
Web Search: 인터넷 실시간 정보 검색
코드 실행: 계산, 분석 등을 위한 코드 수행
질문: "이번 주에 볼 만한 영화를 추천해줘"
Thought: "영화 정보를 알아보려면 어떤 도구가 필요하지?"
Action: Web Search
도구 호출 → 실시간 영화 순위 검색
Observation: "현재 인기 영화 목록 확인"
정보 확인: "이걸로 충분한 답변이 가능하겠군"
Answer: "추천 영화는 '듄: 파트2', '파묘', '파라마운트 플러스' 등입니다."
Tool Calling Agent는 문제 해결을 위한 도구 호출 흐름을 LLM이 스스로 관리하는 방식
다단계 추론 + 도구 활용 능력을 가진 에이전트
단순 질의응답을 넘어 실제 업무 자동화, 복잡한 정보 검색 등에 매우 유용
ReAct는 Reason + Act의 줄임말로,
LLM이 스스로 생각하고(Reason), 행동하며(Act) 문제를 해결해 나가는 방식입니다.
즉, "생각 → 행동 → 결과 확인 → 다시 생각..." 의 반복 루프라고 보면 됩니다.
단계 | 설명 |
---|---|
🧠 Thought | - 사용자의 질문을 이해하고 - 어떤 행동을 할지 고민하는 사고 과정 → Reasoning |
⚙️ Action | - 생각한 바에 따라 도구를 실행 → 검색, 코드 실행, 외부 API 호출 등 |
👀 Observation | - Action 결과를 받아들이고 분석 → 검색 결과나 API 응답 확인 |
정보 확인 | - 이 정보로 답변 가능한가? - 부족하면 다시 Thought 단계로 돌아감 |
Answer | - 정보가 충분하면 사용자에게 최종 답변 제공 |
항목 | 설명 |
---|---|
유연한 사고 + 행동 결합 | 단순 응답이 아니라 스스로 사고하고 반복적으로 행동 |
복잡한 요청 처리에 적합 | 사용자 요청이 단계를 요구하거나 외부 정보를 요구할 때 유용 |
Tool Calling Agent의 핵심 전략 | LangChain에서 다양한 Agent들이 사용하는 핵심 구조 |
Q: "서울의 오늘 날씨를 알려줘"
Thought: "날씨를 확인해야겠군"
Action: Web Search
도구 호출
Observation: "서울 현재 기온은 19도, 맑음"
정보 확인: 충분 → 사용자에게 응답
Answer: "오늘 서울은 맑고 19도입니다"
LangChain에서 LLM이 도구를 사용하도록 만드는 일련의 과정입니다.
도구 정의 → 프롬프트 설정 → 에이전트 생성 → 실행의 4단계로 구성돼요.
@tool
)Python 함수에 @tool
데코레이터를 붙여서 도구로 정의함.
여러 개의 도구는 리스트에 묶어서 LLM에게 제공할 수 있음.
tools = [A, B, C, D] # 예: 웹 검색, 계산기, 뉴스 요약 등
ChatPromptTemplate.from_messages()
를 통해 시스템 프롬프트 정의.
prompt 내에서 LLM이 어떤 도구를 언제 사용할지를 설명함.
주요 변수:
input
: 사용자 질문chat_history
: 이전 대화 저장용agent_scratchpad
: 중간 결과 저장용prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant. Use 'A' tool for news search."),
("placeholder", "chat_history"),
("human", "{input}"),
("placeholder", "agent_scratchpad")
])
agent = create_tool_calling_agent(llm, tools, prompt)
AgentExecutor
로 실행 가능한 에이전트 생성
invoke()
또는 stream()
방식으로 실행 가능
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
max_iterations=10,
max_execution_time=10,
)
agent_executor.invoke(
{"input": "AI 법령과 관련된 뉴스를 검색해 주세요."}
)
단계 | 설명 |
---|---|
도구 생성 | 사용할 툴 정의 (@tool ) |
프롬프트 생성 | 툴 사용 조건을 알려주는 템플릿 설정 |
에이전트 생성 | create_tool_calling_agent() 사용 |
실행 | AgentExecutor 로 실행, 결과 받기 |
정의: 어떤 결론이나 판단에 도달하기 위해 논리적으로 사고하는 행위를 의미합니다.
영어 설명: "The action of thinking about something in a logical way in order to form a conclusion or judgment."
초점: 생각의 전개 과정에 중점을 둡니다.
정의: 증거나 추론을 바탕으로 도달한 결론을 뜻합니다.
영어 설명: "A conclusion reached on the basis of evidence and reasoning."
초점: 결론 또는 추론된 결과에 중점을 둡니다.
머신러닝/딥러닝 관점: 학습이 끝난 모델을 이용하여 새로운 데이터에 대한 출력을 생성하는 단계.
LLM(Large Language Model) 관점:
Inference: 확률적으로 가장 가능성이 높은 답을 예측하는 과정.
Reasoning: 논리적 사고를 통해 결론에 도달하는 과정.
LLM에서는 inference 단계와 논리적 reasoning 단계가 동일하지 않음.
논리적 사고를 통해 결론을 도출하는 과정.
주어진 정보나 사실을 바탕으로 원인 → 결과, 전체 → 논리 전개 → 결론으로 나아가는 사고 흐름을 포함.
사고 능력이나 문제 해결 능력과 관련됨.
단순한 암기나 패턴 응답이 아닌, 논리 구조를 따라가며 정답에 도달하는 과정을 의미.
Reasoning은 단순한 정보 제공을 넘어, 복잡한 문제를 해결하기 위한 추론 과정과 논리적 사고를 포함합니다.
LLM 모델의 성능 향상이 아닌, “기존 정보로부터 희망하는 결론에 도출하는 과정”으로 봐야 함
Chain-of-Thought (CoT):
Self-Consistency Decoding:
Inference-time Scaling:
Supervised Finetuning + RL (SFT + RL):
Post-hoc Reasoning Step Injection (Distillation):
Tool Augmentation:
RAG-based (Retrieval-Augmented Generation):
Scratchpad:
이 전략들은 LLM이 단순히 답변을 생성하는 것을 넘어, 실제로 논리적인 사고를 하고 있는 것처럼 보이도록 설계된 다양한 기술과 방법론을 포함합니다.
이를 통해 LLM은 더 신뢰할 수 있고 복잡한 문제 해결 능력을 갖추게 됩니다.
AI 에이전트와 다양한 데이터베이스를 쉽고 효율적으로 연결할 수 있는 오픈소스 프로토콜 제공.
이를 통해 AI 시스템이 외부 정보에 직접 접근하여 성과와 활용도를 극대화할 수 있음.
표준화된 인터페이스
통합된 용이성
MCP는 AI 시스템과 데이터 소스를 연결하는 데 필요한 복잡성을 줄이고, 다양한 환경에서 쉽게 활용할 수 있도록 설계된 표준화된 프로토콜입니다.
이를 통해 AI의 활용 범위를 확장하고 개발 효율성을 높이는 데 기여합니다.
Standardized protocol that connects AI agents to various external tools and data sources
에이전트나 모델이 각각의 “context”를 명시적으로 정의, 관리 및 교환 할 수 있게 해 주는 구조
LLM의 동작 방식:
문제점:
GPT, Claude, Gemini와 같은 대부분의 LLM은 stateless 구조를 가지고 있습니다.
문제점:
LLM은 문장 기반 프롬프트를 받아서 처리하는데, 이 방식은 구조적 context 관리에 한계가 있습니다.
문제점:
현재 AI 시스템 간에는 context 교환을 위한 표준화된 형식이 없습니다.
문제점:
MCP는 이러한 한계를 해결하기 위해 등장한 프로토콜로서, AI 모델과 시스템 간의 문맥(context)을 명확히 정의하고 효율적으로 관리 및 교환할 수 있는 환경을 제공합니다.
이를 통해 사용자는 더 편리하게 AI와 상호작용하고, 다양한 시스템 간 협업도 가능해집니다.
https://modulabs.co.kr/community/momos/8/feeds/653
Host with MCP Client
Claude, IDE, 또는 기타 AI 도구가 MCP 클라이언트를 통해 서버와 통신합니다.
호스트는 MCP 프로토콜을 사용하여 필요한 데이터를 요청하거나 도구를 호출합니다.
MCP Server
각각의 서버(A, B, C)는 특정 데이터 소스 또는 서비스와 연결됩니다.
MCP Server A/B: 로컬 데이터 소스(A, B)와 연결되어 데이터를 제공합니다.
MCP Server C: 인터넷을 통해 원격 서비스(Web APIs)와 연결됩니다.
Local Data Source
사용자의 컴퓨터에 저장된 파일, 데이터베이스 등 로컬 자원입니다.
예: 데이터베이스 쿼리, 파일 검색 등.
Remote Service
인터넷 상의 외부 시스템(API)으로, MCP Server C를 통해 접근 가능합니다.
예: 클라우드 서비스, 외부 API 호출 등.
호스트가 MCP 클라이언트를 통해 데이터를 요청하거나 작업을 실행합니다.
MCP 클라이언트는 적절한 MCP 서버(A, B, C)로 요청을 전달합니다.
각 서버는 연결된 로컬 데이터 소스 또는 원격 서비스에서 데이터를 가져옵니다.
결과는 MCP 클라이언트를 통해 호스트로 반환되며, LLM은 이를 바탕으로 응답을 생성합니다.
이 다이어그램은 MCP가 로컬 및 원격 데이터를 통합하여 LLM 기반 애플리케이션이 필요로 하는 정보를 효율적으로 제공하는 과정을 보여줍니다.
이를 통해 LLM은 다양한 데이터 소스와 도구를 활용하여 더 강력한 맞춤형 워크플로우를 지원할 수 있습니다.
MCP는 레고 블록 조립처럼 개발자가 원하는 기능을 LLM에 추가할 수 있는 프레임워크입니다.
단순한 채팅봇을 넘어, 도구 호출 → 데이터 분석 → 자동화 작업까지 수행하는 고급 AI 에이전트를 쉽게 구축할 수 있게 해줍니다.
항목 | 기존 LLM 구조 | MCP 기반 구조 |
---|---|---|
프로세스 | - 자연어 프롬프트 입력 - 단순한 입력-출력 구조 | - 명시적 Context 객체로 상태 저장 및 전이 가능 - 구조화된 JSON/YAML 기반 Context Object |
기억 (메모리) | - Stateless (메모리 없음) | - Context를 다른 에이전트나 모델에 그대로 전달 가능 |
입력 방식 | - 자연어 프롬프트 기반 - 비구조적, 단방향 | - MCP context에 agent_id, task, memory 등을 명시하여 처리 가능 |
작업 전이 | - 수동으로 복사해 전달, 사용자 정의 로직으로 처리 | - 각 단계의 Context 기록 - 작업 흐름 및 디버깅 가능 |
다중 에이전트 입력 | - Memory 공유가 어렵고, 그에 따른 상태 추적 안됨 | - 공통 포맷으로 모델 간 상호운용성(interoperability) 확보 |
문맥 흐름 추적 | - 거의 불가능- 어떤 세션에서 무슨 일을 했는지 알 수 없음 | - 문맥 흐름 추적 가능- 각 단계별 기록 유지 |
상호 운용성 | - 모델/시스템 간 Context 전환 어려움 | - MCP를 통해 다양한 시스템 간 Context 교환 가능 |
보안/제한 설정 | - 프롬프트 내 명시 불가능 | - Context에 역할/도구 제한, 사용자 권한 명시도 가능 |
MCP 기반 구조는 기존 LLM의 한계를 보완하여 문맥(Context)을 명확히 정의하고 저장하며, 다중 에이전트와의 상호작용 및 작업 전이를 효율적으로 관리할 수 있도록 설계된 새로운 표준입니다.
MCP는 에이전트 간 상태 전달을 구조화 하여 협력과 추적으로 가능하게 함
MCP 적용 시, 작업의 주체와 목적이 명시되어 에이전트 흐름의 추적성과 확장성이 강화됨
AI 에이전트는 환경과 상호작용하며 목표를 달성하는 시스템으로, 역할과 작동 방식에 따라 아래와 같이 분류됩니다.
특징:
장점: 빠르고 단순.
단점: 복잡한 상황이나 추론에는 한계.
예시: "지금 입력에 이렇게 답변, 바로 이 행동!"
특징:
장점: 경로를 탐색하고, 시뮬레이션 기반 의사결정을 수행.
예시: "지금 이렇게 행동하면 어떤 결과가 나올까? 먼저 생각해보자."
특징:
장점: 강화학습을 기반으로 게임 에이전트나 추천 시스템 등에 활용.
예시: "이 행동은 좋은 결과였어. 다음엔 더 잘해보자!"
특징:
대표 사례:
예시: "내가 스스로 도구도 고르고 계획도 짜볼게!"
Reasoning-Planning-Action 수행
Cognitive Layer는 AI Agent의 핵심 사고 과정이 이루어지는 영역으로, LLM이나 다른 AI모델이 주로 위치함
AI 에이전트는 단순히 반응하는 시스템에서부터 스스로 학습하고 계획하며 자율적으로 실행하는 시스템까지 다양한 형태로 발전하고 있습니다.