4.5 퓨샷 러닝(Few-Shot Learning): 예제를 통한 정답 패턴 고정
프롬프트 엔지니어링의 세계에서 “어떻게 해라“라고 장황하게 설명하는 지시문(Zero-Shot)은 종종 모델의 자체적인 해석학적 모호성에 빠지기 쉽다. 소프트웨어 공학의 오라클(Oracle) 관점에서 볼 때, 자연어 기반의 지시문보다 훨씬 강력하고 결정론적인 제어 수단은 바로 ’성공 사례(Golden Examples)’를 명시적으로 주입하는 것이다.
퓨샷 러닝(Few-Shot Learning)은 문맥 창(Context Window) 내에 입력과 기대 출력(Input-Output) 쌍을 n개 배치함으로써, 기저 공간에서의 가중치 업데이트 없이 모델이 현재 세션의 인퍼런스 패턴을 즉각적으로 추론(In-context Learning)하게 만드는 기법이다. 본 절에서는 퓨샷 예제를 단순한 가이드가 아닌, 출력 형식과 논리적 회로를 강제하는 ’기계적 캐스팅 틀(Casting Mold)’로 활용하는 방법을 고찰한다.
1. 제로샷(Zero-Shot)의 불확실성과 퓨샷(Few-Shot)의 지향성
제로샷 프롬프트는 모델에게 무한한 캔버스를 제공하는 것과 같다. 이는 창의적 글쓰기에는 유리할지 모르나, 정형화된 JSON 파싱이나 예외 없는 분류(Classification) 시스템에서는 시스템의 붕괴를 초래한다.
반면, 퓨샷 프롬프트는 모델을 좁고 직선적인 복도(Corridor)로 밀어 넣는다.
Zero-Shot의 위험성:
System: 입력된 텍스트의 감정을 추출하여 JSON으로 반환하라.
User: 정말 최악의 서비스네요. 환불해주세요.
AI (결과 A):{"sentiment": "negative", "intent": "refund"}
AI (결과 B):{"감정": "매우 부정적", "reason": "최악의 서비스"}-> 파서 붕괴!
Few-Shot의 결정론적 고정:
System: 다음의 예제 패턴을 완벽하게 동일하게 모방하라.
[Q]: 이 제품 좋아요. [A]:{"sentiment_code": "P"}
[Q]: 별로네요. [A]:{"sentiment_code": "N"}
[Q]: 정말 최악의 서비스네요. 환불해주세요.
AI:{"sentiment_code": "N"}-> 안정적인 파싱 보장!
퓨샷 예제는 모델에게 ‘어떤 키워드를 써야 하는지’, ‘어떤 언어(영어/한국어)를 써야 하는지’, ’출력의 길이는 어느 정도여야 하는지’를 암묵적(Implicit)이지만 가장 강력한 방식으로 지시한다.
2. 결정론적 오라클을 위한 골든 예제(Golden Examples) 선정 기준
효과적인 퓨샷 프롬프팅을 위해서는 우수한 예제를 선별하는 작업이 필수적이다. 아무 예제나 넣는 것은 노이즈를 주입하는 것과 같다. 골든 예제는 다음과 같은 특성을 가져야 한다.
- 대표성(Representativeness): 다루고자 하는 모든 주요 클래스(분류 문제의 경우)나 정상적인 처리 흐름(Happy Path)을 골고루 포함해야 한다. 긍정 예제 3개만 주입하고 부정 응답을 기대하는 것은 어리석다.
- 다양성(Diversity): 길이, 어조, 문장 구조 등에서 현실 세계의 인풋과 스펙트럼이 유사한 예제들을 섞어주어야 모델이 과적합(Overfitting)되지 않고 다양한 변형에 대응하면서도 포맷을 유지할 수 있다.
- 엣지 케이스(Edge Cases)의 명시화: 가장 중요한 부분이다. 예외적인 인풋(예: 텅 빈 문자열, 쓰레기 값, 파싱 불가능한 에러 문자)이 들어왔을 때, 어떻게 방어적으로 응답해야 하는지(예:
{"error": "Invalid Input"})를 예제에 반드시 포함시켜야 오라클의 Fallback 체계가 런타임에 작동한다.
3. 동적 퓨샷 프롬프팅(Dynamic Few-Shot Prompting) 아키텍처
모델의 콘텍스트 윈도우(Context Window)는 무한하지 않으며, 토큰이 길어질수록 비용은 선형적으로 증가하고 초점(Attention)이 희미해지는 ‘Lost in the Middle’ 현상이 발생할 위험이 커진다.
수백 개의 골든 예제를 모두 때려 넣는 하드코딩 방식 대신, RAG(Retrieval-Augmented Generation) 개념을 차용하여 **동적 퓨샷 프롬프팅(Dynamic Few-Shot Prompting)**을 구축하는 것이 현대적인 접근법이다.
- 수십~수백 개의 (Q, A) 골든 예제를 벡터 데이터베이스(Vector DB)에 임베딩하여 보관한다.
- 사용자의 실제 인풋(User Input)이 들어올 때, 이 인풋과 코사인 유사도(Cosine Similarity)가 가장 높은 K개(예: 3~5개)의 예제만을 실시간으로 검색(Retrieve)한다.
- 검색된 K개의 예제를 동적으로 시스템 프롬프트에 주입하여 최종 API를 호출한다.
이 파이프라인은 매 호출마다 사용자 입력값에 가장 밀착된 ’맞춤형 거푸집’을 제공하므로, 제반 비용은 최소화하면서도 출력의 구조적 정합성(Structural Integrity)은 극도로 끌어올리는 가장 진일보한 형태의 결정론적 오라클 제어 기법이다.