8장 - 에이전트, 프롬프트, RAG
8장. 에이전트, 프롬프트, RAG
CS230에서 배운 뉴런, 레이어, 딥 뉴럴 네트워크를 넘어서, 실제 회사나 스타트업에서 에이전트 기반 AI 시스템을 구축하는 방법을 다루겠습니다. — Andrew Ng
8.1 LLM은 왜 그대로 쓸 수 없는가
사전 훈련된 기본 모델(Vanilla Pre-trained Model)을 그대로 가져다 쓰면 여러 벽에 부딪힌다.
한계 |
설명 |
|---|---|
도메인 지식 부족 |
자율 농업, 의료 진단 같은 특수 분야의 데이터를 모른다 |
지식 차단일 |
훈련 데이터 이후의 최신 정보를 반영하지 못한다. 신조어, 트렌드 대응 불가 |
컨텍스트 윈도우 |
최대 수십만 토큰(대략 책 두 권 분량). 수천 개 문서를 한 번에 넣을 수 없다 |
어텐션 문제 |
"건초 더미 속 바늘(Needle in a Haystack)" — 큰 컨텍스트에서 특정 사실에 집중하는 능력이 떨어진다 |
환각 |
출처를 요청하면 실제로 존재하지 않는 가짜 논문을 만들어낸다 |
제어의 어려움 |
마이크로소프트 트위터 봇 Tay가 16시간 만에 인종차별 발언을 쏟아내고 제거된 사례가 있다 |
이 한계를 극복하는 방향은 두 가지다.
- 기초 모델 자체를 개선한다 — GPT-3.5에서 GPT-4, GPT-4o로 진화하는 흐름이다.
- LLM 활용 방식을 엔지니어링한다 — 프롬프트, 체이닝, RAG, 에이전트 워크플로우가 여기에 속한다.
이 강의는 두 번째 방향에 집중한다.
8.2 프롬프트 엔지니어링
프롬프트 교육의 효과: HBS/와튼 스쿨 BCG 연구
BCG 컨설턴트를 세 그룹으로 나눠 실험한 연구가 있다.
- 그룹 1: AI 접근 불가
- 그룹 2: GPT-4 접근 가능
- 그룹 3: GPT-4 + 프롬프트 교육 제공
결과는 교육받은 그룹이 가장 좋은 성과를 보였다. 하지만 흥미로운 발견이 있었다. "JAG 프론티어" — AI가 성능을 오히려 악화시키는 작업 영역이 존재한다는 것이다. AI를 맹목적으로 의존하면 "운전 중 잠드는(falling asleep at the wheel)" 현상이 발생한다.
컨설턴트의 AI 활용 방식은 두 유형으로 나뉘었다.
- 켄타우로스(Centaurs): 작업을 AI에게 위임하고 분할한다. "이건 네가 해, 이건 내가 할게."
- 사이보그(Cyborgs): 모델과 빠르게 상호작용하며 백앤포스한다. 사람과 AI가 한 몸처럼 움직인다.
기본 프롬프트 설계 원칙
기법 |
설명 |
|---|---|
구체적 지시 |
청중, 형식, 초점을 명시한다. "정책 입안자를 위한 5개 불릿으로 요약" |
역할 부여 |
"다보스 포럼에서 연설하는 재생 에너지 전문가처럼 행동하라" |
자기 비판(Reflection) |
모델에게 자신의 출력을 비판하도록 요청한다 |
사고의 사슬(CoT) |
"단계별로 접근하고 어떤 단계도 건너뛰지 말라" |
제로샷 vs 퓨샷
**제로샷(Zero-shot)**은 예시 없이 바로 작업을 지시하는 것이다. 간단한 작업에서는 잘 작동하지만, 주관적인 분류에서는 결과가 불안정할 수 있다.
**퓨샷(Few-shot)**은 프롬프트에 예시를 포함하는 것이다. 모델이 예시에 맞춰 일관되게 동작한다. 모델 파라미터를 건드리지 않고 프롬프트만 업데이트하므로 빠르게 실험할 수 있다. 사용자 피드백을 예시로 추가하면 데이터셋 구축과 유사한 효과를 얻는다. 단, 컨텍스트 윈도우의 제한이 있다.
프롬프트 체이닝(Chaining)
CoT와 혼동하기 쉽지만 다른 개념이다.
- CoT: 한 프롬프트 안에서 단계별 사고를 지시하는 것
- 체이닝: 여러 프롬프트를 개별적으로 분리하여 연결하는 것
단일 프롬프트로 모든 것을 처리하면 디버깅이 어렵다. 어디서 잘못됐는지 추적할 수 없기 때문이다.
체이닝의 장점은 세 가지다.
- 각 단계를 개별적으로 디버깅할 수 있다
- 어떤 프롬프트의 최적화가 가장 큰 이득을 주는지 판단할 수 있다
- 중간 출력물(개요 등)을 사람이 검토할 수 있다
프롬프트 평가(Eval)
프롬프트가 잘 작동하는지 어떻게 확인할까? 네 가지 방법이 있다.
방법 |
설명 |
|---|---|
수동 평가 |
기준선과 체인 워크플로우를 사람이 직접 비교한다 |
쌍별 비교 |
두 출력을 LLM에게 보여주고 어느 쪽이 나은지 판단하게 한다 |
단일 채점 |
출력을 1-5점으로 채점한다 |
루브릭 기반 |
채점 기준표를 제공하고 LLM이 기준에 따라 평가한다 |
8.3 파인튜닝: 가능한 한 피하라
Andrew Ng의 권고는 분명하다. 가능한 한 파인튜닝을 피하라.
파인튜닝의 단점은 세 가지다.
- 대규모 레이블 데이터가 필요하다 — 수집에 시간과 비용이 많이 든다
- 과적합 위험이 크다 — 특정 도메인에 맞추다가 일반적인 능력을 잃을 수 있다
- 시간 대비 효과가 불확실하다 — 파인튜닝하는 사이에 다음 세대 모델이 나와서 능가할 수 있다
실패 사례가 인상적이다. 회사 슬랙 메시지로 모델을 파인튜닝하자, "내일 아침에 작업하겠다"고 응답하거나 지시를 무시하고 사람처럼 행동하는 문제가 발생했다. 모델이 슬랙의 대화 패턴을 학습해버린 것이다.
그럼에도 파인튜닝이 유용한 경우가 있다. 법률이나 과학 분야처럼 반복적인 고정밀 출력이 필요하거나, 도메인 특화 언어에 일반 LLM이 어려움을 겪을 때다.
8.4 RAG (검색 증강 생성)
RAG가 해결하는 문제
문제 |
RAG의 해결 방식 |
|---|---|
작은 컨텍스트 윈도우 |
외부 지식을 필요할 때만 가져온다 |
지식 차단일 |
문서를 업데이트하면 최신 정보를 반영할 수 있다 |
환각 |
문서에 근거(grounded)한 답변을 생성한다 |
출처 부족 |
정확한 페이지, 장, 줄 번호를 제공할 수 있다 |
Vanilla RAG의 작동 방식
다섯 단계로 이루어진다.
- 지식 기반 준비 — PDF, 문서 등으로 구성한다
- 문서 임베딩 — 각 문서를 저차원 벡터 표현으로 변환한다
- 벡터 데이터베이스 저장 — 임베딩을 효율적으로 저장하고 검색할 수 있게 한다
- 쿼리 임베딩 + 검색 — 사용자 쿼리도 같은 방식으로 임베딩하여 벡터 DB에서 관련 문서를 찾는다
- 프롬프트 구성 + 답변 생성 — 검색된 문서를 프롬프트에 추가하여 답변을 생성한다
RAG 개선 기법
청킹(Chunking): 긴 문서를 통째로 넣으면 검색 정밀도가 떨어진다. 챕터 수준으로 나누면 관련 내용만 정확하게 가져올 수 있다.
HyDE (Hypothetical Document Embeddings): 사용자 쿼리로 가상의 문서를 먼저 생성한 후, 그것을 임베딩하여 실제 문서와 비교하는 기법이다. 쿼리는 짧고 문서는 길어서 형태가 다른 문제를 해결한다.
파인튜닝 vs 프롬프트 vs RAG
무한한 컴퓨팅이 있다면 모든 문서를 컨텍스트에 넣으면 되니까 RAG는 불필요하겠지만, 지연 시간 문제로 비현실적이다. RAG는 정확성 외에도 출처 제공이라는 결정적 이점이 있다. "어디서 찾았는가?"에 답할 수 있다는 것이다.
8.5 에이전트 AI 워크플로우
에이전트란 무엇인가
Andrew Ng의 정의: 에이전트 워크플로우란 도구와 API 호출이 포함된 일련의 프롬프트 묶음이며, 다단계 프로세스를 통해 작업을 완료하는 것이다. 강화 학습에서 말하는 '에이전트'와 구분하기 위해 "에이전트 워크플로우"라는 용어를 사용한다.
에이전트의 핵심 구성 요소
구성 요소 |
설명 |
|---|---|
프롬프트 |
앞서 배운 프롬프트 방법론을 적용한다 |
컨텍스트 관리(메모리) |
핵심 메모리(빠른 접근)와 보관 메모리(느린 접근)로 나뉜다 |
도구(Tools) |
API 호출 — 항공편 검색, 호텔 예약, 결제 처리 등 |
리소스 |
CRM 데이터 등 에이전트가 조회할 수 있는 데이터 |
자율성 스펙트럼
에이전트의 자율성은 스펙트럼 위에 있다.
수준 |
설명 |
|---|---|
최소 자율성 |
단계를 하드코딩한다. 의도 파악 → DB 조회 → API 호출 → 응답 |
준 자율성 |
도구는 하드코딩하되, 단계는 에이전트가 결정한다 |
최대 자율성 |
단계 결정에 도구 생성까지 수행한다. 코드를 작성하고 웹을 검색한다 |
실전에서는 가장 자율적인 에이전트가 항상 최선은 아니다. 자율성이 높을수록 예측하기 어렵고, 비용도 높다. 작업의 성격에 맞는 수준을 고르는 것이 핵심이다.
MCP (Model Context Protocol)
기존 API 방식은 LLM에게 API 문서를 일일이 제공해야 하며 확장성이 떨어진다. Anthropic이 제안한 MCP는 중간 시스템을 두어 에이전트 간 효율적 통신을 가능하게 한다. 에이전트가 "비행 정보에 뭐가 필요해?"라고 물으면 MCP 서버가 요구사항을 알려주는 식이다. API를 일일이 가르칠 필요가 없어진다.
에이전트 워크플로우 평가
평가는 두 수준에서 이루어진다.
- 종단적(End-to-end) 평가: 최종 사용자 만족도를 측정한다
- 구성 요소 기반 평가: 각 도구와 DB 업데이트를 개별 분석하여 오류를 추적한다
유형 |
평가 방법 |
|---|---|
객관적 |
LLM이 잘못된 주문 ID를 조회했는지 코드로 확인한다 |
주관적 |
정중함, 톤 — 사람이 평가하거나 LLM이 심판한다 |
정량적 |
성공률, 지연 시간을 추적한다 |
정성적 |
환각, 톤 불일치 같은 오류를 분석한다 |
핵심 원칙이 하나 있다. LLM 트레이스(Traces)를 반드시 확보하라. 트레이스가 없으면 복잡한 체인에서 버그가 어디서 발생했는지 추적할 수 없다. 프롬프트 체이닝에서 디버깅이 중요한 것과 같은 이유다.
8.6 멀티 에이전트 워크플로우
왜 여러 에이전트가 필요한가
두 가지 이유다.
- 병렬성 — 독립적인 작업을 동시에 처리할 수 있다
- 재사용성 — 한 번 구축한 에이전트를 여러 팀이 재사용할 수 있다
구성 방식
구조 |
특징 |
|---|---|
계층적(Hierarchical) |
오케스트레이터가 사용자와의 소통을 전담한다. UI/UX 측면에서 선호된다 |
평면적(Flat) |
모든 에이전트가 서로 직접 통신한다(All-to-All) |
핵심 아이디어: 에이전트 간 통신은 MCP와 유사하게 작동하며, 다른 에이전트를 도구처럼 취급한다.
스마트 홈 예시
강의에서 다룬 구체적인 예시다. 오케스트레이터 아래에 위치 추적, 온도 조절, 에너지 효율, 보안, 냉장고 관리 에이전트가 협업한다. 냉장고 에이전트는 카메라로 내용물을 파악하고, 전자상거래 API로 부족한 식료품을 주문한다.
각 에이전트는 독립적으로 구축되어 다른 프로젝트에서도 재사용할 수 있다. 온도 조절 에이전트를 사무실 빌딩 관리 시스템에 그대로 가져다 쓸 수 있다는 뜻이다.
8.7 향후 AI 동향
성능 정체(Plateau) 논의
LLM 스케일링 법칙에 따르면 컴퓨팅과 에너지를 늘리면 성능은 향상되지만, 결국 정체될 것이다. 이것은 기초 모델만 놓고 봤을 때의 이야기다.
차세대 동력
정체를 돌파할 세 가지 방향이 있다.
- 아키텍처 검색 — 트랜스포머를 넘어서는 차세대 아키텍처가 같은 성능을 컴퓨팅/에너지의 1/10로 달성할 수 있다
- 멀티모달리티 — 텍스트에서 이미지, 오디오, 비디오, 로보틱스로 확장된다
- 방법론의 융합 — 지도 학습, 비지도 학습, 강화 학습, RAG가 하나의 시스템으로 결합되는 방향이다
Andrew Ng의 조언: AI 방법론은 매우 빠르게 변화한다. 특정 방법론 17가지를 깊이 익히는 것보다 폭넓은 이해를 갖추는 것이 더 중요하다. 깊이는 필요할 때 파면 된다.
핵심 정리
기법 |
핵심 |
적합한 경우 |
|---|---|---|
프롬프트 엔지니어링 |
모델 파라미터 미변경, 빠른 실험 |
대부분의 경우 첫 시도 |
파인튜닝 |
모델 내부 수정, 고정밀 출력 |
반복적 전문 작업, 도메인 특화 |
RAG |
외부 지식 통합, 출처 제공 |
최신 정보, 환각 방지, 근거 필요 |
에이전트 워크플로우 |
다단계 자율 처리, 도구 사용 |
복잡한 비즈니스 프로세스 |
멀티 에이전트 |
병렬 처리, 재사용성 |
대규모 조직, 독립적 하위 작업 |
이전 장: 6장 - AI 프로젝트 전략 다음 장: 9장 - AI 커리어 조언