📘 2부: 프롬프트 엔지니어링은 GPT에게 맡기세요 — 실전 Before/After

이전 1부에서는
아래의 관점으로 개념을 정리해보았습니다.

“프롬프트 = 질문, 프롬프트 엔지니어링 = 설계”

이번 2부에서는 그 설계를
굳이 사람이 머리 싸매고 하지 않고,
GPT에게 그대로 맡겼을 때 어떤 차이가 나는지를 실제 사례로 정리해보려고 합니다.


🧩 0. 실험 방법 – 딱 이것만 바꿨습니다

실험 방법은 아주 단순합니다.

  1. 실제 업무에서 제가 하고 싶은 작업을 그대로 정리해둔다.
  2. Before: 떠오르는 대로 GPT에 “그냥 질문”을 던진다.
  3. After: GPT에게

    “이 작업을 가장 잘 수행할 수 있는 프롬프트를 먼저 설계해 주세요.”
    라고 요청한 뒤, 설계된 프롬프트로 다시 작업을 실행한다.

  4. 두 결과를 정확도·구조·재사용성·실무 활용성 기준으로 비교한다.
    → 바꾼 것은 딱 하나입니다.

“결과를 바로 달라”에서
“그 결과를 만드는 프롬프트부터 설계해 달라”로.


🏗️ 1. RAG 성능 평가: 그냥 질문 vs 설계 맡기기

1-1. Before — 그냥 물었을 때

제가 처음 GPT에게 던진 질문은 아주 단순했습니다.

Q. “RAG 성능 평가 기준 알려줘.”

GPT의 답은 대략 이런 식이었습니다. (요약)

    • Retrieval: Recall@K, Precision@K, MRR, nDCG 등
    • Generation: 정답성, 근거충실도, 인용 정확도, 완전성 등
    • UX/운영: Latency, Success rate, Deflection, Cost per query 등
    • Safety: PII, 프롬프트 인젝션, 유해 콘텐츠, 어뷰징 대응 등

내용만 보면 틀린 말이 하나도 없습니다.
실제로도 RAG 논문/문서에서 자주 볼 수 있는 구성입니다.

문제는,

    • “우리 서비스에 바로 붙여 쓸 수 있는 평가표”는 아니라는 점입니다.
    • 결국 지표를 다시 고르고, 정의를 다시 쓰고, 합격선을 다시 잡는 일을 제가 해야 합니다.

정리하면,

Before: 교과서식 개념은 얻었지만,
“실제 프로젝트에 붙여 쓸 수 있는 프레임워크”는 아닌 상태.


1-2. After — GPT에게 ‘프롬프트 설계’를 먼저 시킨 버전

이번에는 접근을 완전히 바꿔봤습니다.

Q. “RAG 시스템 평가를 위한 프레임워크를 만들고 싶습니다.
먼저 이 작업에 최적화된 프롬프트를 설계해 주세요.”

이때 GPT에게 맡긴 역할은
“지식 설명자”가 아니라 “평가 프레임워크 설계자”였습니다.

GPT가 먼저 만들어 준 것은 “평가 프레임워크 템플릿을 만드는 프롬프트”였습니다.
구조만 요약하면 대략 이런 형태입니다.

    • 역할(Role): RAG/하이브리드 챗봇 평가 실행자
    • 입력(Input)
      • {TEMPLATE}: 합의된 평가 프레임워크 템플릿
      • {SYSTEM_DESC}: 실제 평가 대상 시스템 설명(도메인, 채널, 정책, 실험 조건 등)
    • 출력(Output)
      1. 평가 스코어카드(표)
      2. 실패 유형 분류표
      3. 평가 데이터셋 설계
      4. A/B 실험 설계 요약
      5. 실행 체크리스트
      6. 리스크 Top3 & 이번 주 액션 Top3

즉, GPT에게 이렇게 말한 셈입니다.

“RAG를 잘 평가하는 사람이 된다면,
이 정도는 기본으로 만들어야 하지 않겠습니까?”

그다음 단계에서,
GPT가 설계한 이 프롬프트를 실제 프로젝트 맥락(게임 도메인 CS·AI 챗봇)에 그대로 적용했습니다.
그러자 이번에는 처음부터 “바로 실전에 쓸 수 있는 평가 산출물”이 출력됐습니다.


1-3. After 결과물 스냅샷 – “바로 쓰는 스코어카드”

실제 결과물은 매우 길지만,
핵심만 보여드리면 대략 이런 형태입니다.

🔎 축별 대표 지표 일부 발췌

지표명정의합격선 예시
RetrievalEvidence Hit@5정답 근거 문서가 Top-5에 포함된 비율Hit@5 ≥ 0.85
GroundingHallucination Rate근거 없이 정책/절차를 단정한 응답 비율≤ 3%
Answer 품질Policy Correctness환불/제재 등 정책 응답의 정합성≥ 0.98
UX·운영Deflection Rate“정답” 기준 티켓 없이 해결된 세션 비율≥ 0.35 (초기 운영 기준)
SafetySecurity Abuse Refusal부정행위/해킹 유도 요청을 거절한 응답 비율≥ 0.99

이 테이블의 중요한 점은:

    • 게임 CS 맥락에 맞는 지표 + 정의 + 합격선이 한 번에 잡혀 있고
    • “어디서 자주 틀리는지”, “무엇을 먼저 모니터링해야 하는지”가
      이미 설계된 상태로 나온다는 것입니다.

그래서 이 결과는

    • 제 머릿속 정리 → 메모 → 엑셀 → 문서… 과정을 생략하고,
    • 곧바로 대시보드 기획 & 라벨링 설계 단계로 넘어갈 수 있게 해줍니다.

※ 실제로는 스코어카드, 실패 유형 분류표, 데이터셋 설계, A/B 설계 등
모든 산출물이 훨씬 길습니다.
전체 전문은 글 하단 ‘부록’에 구조만 만들어 두었습니다.
(필요하신 분은 그대로 복붙해서 참고하시면 됩니다.)


1-4. Before/After에서 달라진 것들

한 줄로 비교하면 이렇습니다.

    • Before:
      • “RAG 평가 지표가 뭐가 있는지”는 알게 되지만,
      • 결국 내가 다시 구조를 짜야 하는 상태
    • After:
      • “우리 서비스에 맞는 평가표/실험 설계/체크리스트까지”
      • 한 번에 뽑혀 나오는 상태

그리고 이 변화는,
모델을 바꾼 것도, 사람을 바꾼 것도 아니라

“그냥 질문했냐” vs “프롬프트 설계부터 맡겼냐”
이 차이에서 나왔습니다.


🎯 2. 언제는 그냥 질문만 해도 되는가

여기까지 읽으면
“앞으로는 모든 작업에 다 이렇게 해야 하나?”
라는 생각이 드실 수 있습니다.

제 기준은 이렇습니다.

❌ 굳이 엔지니어링까지 안 해도 되는 경우

    • 단발성 정보 조회
    • 오늘 점심 메뉴 같은 가벼운 질문
    • 짧은 문장 다듬기, 한두 문단 요약

→ 그냥 자유롭게 질문해도 충분합니다.

⭕ 프롬프트 엔지니어링이 확실히 먹히는 경우

    • 비슷한 작업을 여러 번 반복하는 경우
    • 정확도·재현성이 중요한 경우 (지표/정책/계약/CS 등)
    • 팀 차원에서 프롬프트/결과물을 공유해야 하는 경우

이때는 한 번만 제대로 설계해두면,
그 뒤로는 “나 + 팀의 시간”이 같이 줄어듭니다.


🧭 3. 마무리 — 설계를 “누가 하느냐”의 문제

정리하면, 프롬프트 엔지니어링

    1. 더 좋은 결과를 더 예측 가능하게 얻기 위한 설계이고
    2. 반드시 사람이 다 할 필요는 없다는 점이 중요합니다.

요즘 방식은 이런 느낌에 가깝습니다.

  “GPT야,
  이 작업을 가장 잘 수행할 수 있는 프롬프트를
  먼저 설계해 줘.”

사람은 요구사항과 맥락만 잘 전달하고,
실제 프롬프트 구조·포맷·샘플 설계는 GPT에게 넘기는 쪽으로 흐름이 바뀌고 있습니다.

프롬프트 엔지니어링은 이제 특정 직군의 전문 기술이라기보다, “AI를 내 도구로 만들고 싶은 사람이라면 누구나 가져갈 수 있는 설계 습관”에 가깝다라고 보여집니다.

이제 프롬프트 엔지니어링은 고민말고 GPT에게 맡기세요.

 


 

 

📘부록: RAG 평가 전체 예시


📎 부록 A. RAG 평가 — Before Q/A 전문

Q:

RAG 성능 평가 기준 알려줘.

A:

RAG 성능 평가는 보통 (1) 검색이 잘 됐는지, (2) 답변이 근거에 붙어있는지, (3) 운영 품질이 괜찮은지 3축으로 봅니다. (지표는 많은데 대시보드는 한 장이죠… 😅)

1) Retrieval (검색 품질)

    • Recall@K / Hit rate@K: 정답 근거 문서가 Top-K에 들어왔는지
    • Precision@K: Top-K가 “정답에 도움 되는 문서”로 얼마나 깨끗한지
    • MRR / nDCG: 정답 근거가 얼마나 위에 랭크되는지
    • Chunk 품질 지표(정성 포함): chunk 길이/중복/노이즈, 쿼리-문서 매칭 적합도

2) Grounded Generation (생성 품질: 근거 기반)

    • Answer Correctness (정답성): 질문에 대한 최종 답이 맞는지
    • Faithfulness / Groundedness (근거충실도): 제공된 컨텍스트 밖 “추측”이 섞였는지(=환각)
    • Citation Accuracy (인용 정확도): 인용/출처가 실제 주장과 일치하는지
    • Completeness (충분성): 필요한 항목을 빠짐없이 답했는지

3) End-to-End UX & Ops (운영/경험)

    • Latency (p50/p95): 응답 시간(평균보다 p95가 실전 체감)
    • Success rate: 정상 응답 비율(타임아웃/에러/빈 답 제외)
    • Deflection / Task success: 사용자 문제 해결로 이어졌는지(전환/재문의율)
    • Cost per query: 쿼리당 비용(토큰+검색 인프라 포함)
    • Stability: 배포 후 품질 드리프트(데이터 변경/색인 갱신/모델 업데이트 영향)

4) Safety & Robustness (필요 시)

    • PII/보안 위반률, 프롬프트 인젝션 취약성, 유해/금칙 응답률
    • Adversarial 쿼리 성능(애매한 질문/함정 질문/근거 부족 상황)

실무에서 흔한 결론(좋은 점/나쁜 점)

    • 좋은 점: “검색(Recall) + 근거충실도(Faithfulness) + 지연(p95)”만 잡아도 대다수 문제가 어디서 생기는지 보입니다.
    • 나쁜 점: 지표를 늘리면 보고서는 풍성해지지만, 우선순위는 더 헷갈립니다(“측정은 했는데 개선이 안 됨” 함정).

📎 부록 B. RAG 평가 — “프롬프트 설계” 요청 전문

RAG 시스템 평가를 위한 프레임워크를 만들고 싶습니다. 먼저 이 작업에 최적화된 프롬프트를 설계해 주세요.

📎 부록 C. RAG 평가 — 설계된 프롬프트 전문

당신은 “게임 하이브리드(CS·AI) 챗봇”의 평가 프레임워크를 만드는 평가 리드입니다.
목표는 ‘RAG+LLM 답변’과 ‘Rule/FAQ/티켓 플로우’가 섞인 챗봇을 실무에서 운영·개선할 수 있도록,
바로 복붙 가능한 “평가 템플릿(표+기준+체크리스트)”을 만드는 것입니다.

### [기본 컨텍스트(가정)]
- 도메인/서비스: 게임 고객센터용 하이브리드 챗봇(CS+AI)
- 사용자 Top Tasks:
1) 결제/환불/구독(청약철회, 결제 오류)
2) 계정/보안(로그인, OTP, 해킹 의심)
3) 이용제한/제재(사유/이의제기)
4) 아이템/재화(미지급, 소멸, 우편)
5) 버그/접속장애(공지/해결가이드/티켓)
6) 이벤트/쿠폰(조건, 지급, 기간)
- 입력/출력 언어: 한국어(KO→KO), 게임 용어/약어/오타 많음
- 지식원천: 공지/패치노트, 운영정책, 결제/환불 정책, 계정/보안 가이드, FAQ, GM 매뉴얼, CS 티켓 답변 템플릿(최신 우선)
- 아키텍처(일반적 가정):
- Hybrid retrieval: BM25 + Vector + reranker, Top-k 5~10
- Chunking: 300~600 tokens, overlap 50~100, 메타데이터(문서종류/게임/지역/버전/개정일)
- Generator: LLM이 최종 답변 + “근거 인용” + 필요 시 티켓 전환(링크/폼)
- 운영 제약(가중치):
- 정확도/정책 준수 60% + 지연 25% + 비용 15%
- 목표 응답시간: p50 2초 / p95 6초
- 안전/정책 요구:
- PII/계정정보 요청 최소화(“스크린샷/주문번호/UID” 수집은 단계·목적 명시)
- 부정행위/취약점 악용/환불 꼼수 유도 등 금지
- 법/결제 관련 문구는 근거 문서 기반, 불확실 시 상담/티켓 유도
- 비교 실험 축(기본): 제로샷 vs 프롬프트 설계(가드레일/출력포맷/인용 강화)

### [산출물 요구: 짧게, 하지만 ‘실무용’으로]
아래 5개를 반드시 출력하세요(불필요한 개념 설명 금지).

1) “평가 스코어카드(표)” 1개
- 축: Retrieval / Grounding / Answer 품질 / UX·운영 / Safety
- 각 항목별: 지표명, 정의, 단위, 측정법(로그 기반/라벨링), 합격선(기본 Threshold), 치팅 가능성(낮/중/높)
2) “실패 유형 분류표” 1개
- 게임 CS에 특화된 실패 예시 포함(환불 정책, 제재 사유, 이벤트 조건 등)
3) “평가 데이터셋 설계” 요약
- Head/Torso/Longtail 비율 제안
- 최신 문서/충돌 문서/유사 문서/빈 근거(knowledge gap) 케이스 포함
4) “실험 설계” 요약(A/B)
- 제로샷 vs 프롬프트 설계 비교 시 통제변수/독립변수/핵심 KPI 제시
- 회귀(절대 깨지면 안 되는 30개 핵심 케이스) 정의 방식 포함
5) 마지막에 딱 8줄:
- 이번 프레임워크에서 ‘가장 위험한 함정 5개’
- ‘우선순위 Top 3 개선 액션’

추측이 필요한 부분은 진행하되, 결과에 영향 큰 불확실성 3개만 “확인 필요”로 끝에 적으세요.

📎 부록 D. 평가 스코어카드 전체 표

※ 누르면 크게 보입니다. 텍스트 표가 깨져서 이미지로 첨부하니 양해 바랍니다.


📎 부록 E. 실패 유형 분류표 전체

※ 누르면 크게 보입니다. 텍스트 표가 깨져서 이미지로 첨부하니 양해 바랍니다.


📎 부록 F. 평가 데이터셋 / 실험 설계 요약 전문

평가 데이터셋 설계 요약

    • 분포(권장): Head 35% / Torso 45% / Longtail 20%
    • 케이스 구성(필수 포함)
      • 최신 문서 우선: 최근 30일 내 공지/정책 개정 기반 20% 이상
      • 충돌 문서 세트: “구정책 vs 신정책”, “서버/지역별 상이 정책” 10%
      • 유사 문서 혼동 세트: 제목/키워드 유사(환불 vs 결제오류, 제재 vs 보호조치) 10%
      • Knowledge Gap(빈 근거): 문서에 없는 문의(미공개 이벤트/개별 계정 상태) 10%
      • 오타/약어/은어: “ㅈㅈ”, “환불ㄱ?”, “핵의심”, “OTP튕김” 등 변형 15%
      • 고위험 도메인 과대표집: 결제/환불·계정/보안·제재 합산 50% 이상(정책/법 리스크 때문)
    • 라벨 스키마(최소): 정답유형(FAQ/정책/RAG/티켓전환), 정답근거(문서ID+스팬), 핵심 주장 체크리스트(기간/조건/예외/필요정보), 안전(PII/악용/법)
    • 샘플 수 가이드(초기): 오프라인 400~800 / 회귀 30 / 악성(안전) 80~150

실험 설계 요약(A/B: 제로샷 vs 프롬프트 설계)

    • 독립변수(A/B)
      • A(제로샷): 최소 시스템 지시 + 기본 인용만 허용
      • B(프롬프트 설계): (1) 출력 포맷 고정(요약→단계→필요정보→전환) (2) 인용 강제(핵심 주장마다) (3) 정책/법/보안 가드레일 (4) Knowledge gap 처리 (5) 티켓 전환 트리
    • 통제변수(고정)
      • 동일 모델/온도/토큰 제한, 동일 리트리벌(BM25+Vec+rerank, k=5~10), 동일 청킹/메타필터, 동일 지식베이스 스냅샷, 동일 캐시 정책
    • 핵심 KPI(우선순위)
      1. Policy Correctness, Hallucination Rate, PII Minimization (정확·정책)
      2. p50/p95 Latency (지연)
      3. Cost/Session (비용)
      4. 보조: Task Success, Citation Precision/Coverage, Escalation Accuracy
    • 판정 방식(추천)
      • 오프라인: 동일 평가셋에서 스코어카드 비교(신뢰구간/유의성)
      • 온라인(가능 시): 10~20% 트래픽 A/B, “정답 라벨 표본”으로 Deflection을 정답일 때만 계산
    • 회귀(절대 깨지면 안 되는 30개) 정의 방식
      • Top Task별 5~6개씩(결제/보안/제재 우선), 최신 정책 1개 + 충돌 1개 + 빈근거 1개 포함
      • “법/결제 문구 단정 금지”, “제재 사유 추정 금지”, “PII 최소수집” 같은 가드레일 회귀 10개를 별도 트랙으로 고정
      • 릴리즈마다 30개 전수, 임계치 미달 시 롤백(게임 밸런스 패치처럼요)

함정1: “Deflection 상승”만 보고 좋아했다가, 정답 검증 없이 CS 폭탄(가짜 해결) 터집니다.
함정2: 최신/충돌 문서 처리를 안 하면, 환불·제재에서 한 번에 신뢰가 증발합니다.
함정3: 인용이 ‘있기만’ 하면 된다고 착각하면, Citation Precision에서 바로 걸립니다.
함정4: Knowledge gap에서 단정 한 줄이면, 법/보안/결제 리스크가 즉시 현실화됩니다.
함정5: p95 최적화 없이 p50만 맞추면, 피크 타임에 챗봇이 “로딩창 NPC”가 됩니다.
액션1: 고위험(결제/보안/제재) 150케이스 과대표집 + 회귀30 고정부터 만드세요.
액션2: “최신 우선+충돌 인지+단정 금지+티켓 트리”를 프롬프트/룰로 하드코딩하세요.
액션3: Citation Precision/Coverage 라벨링을 먼저 붙여서, 개선 방향을 데이터로 고정하세요.

확인 필요(영향 큰 불확실성 3개)

    1. 티켓 전환 채널(웹폼/인게임/CS툴)에서 필수 수집 필드(UID/주문번호/스크린샷)와 수집 허용 범위(정책/법무).
    2. “정답 Deflection”의 운영 목표치(예: 35% vs 50%)와, 실패 시 허용 가능한 CS 리스크 한도.
    3. 지식베이스의 갱신 주기/버전 관리 체계(공지·정책 개정이 실시간인지, 배치인지) 및 “최신 판정”의 단일 진실원천(SSOT).

🚗 현대차 LLM 챗봇 데모 (Hybrid: Rule + RAG)

추석 연휴 ,
개인 프로젝트로 진행한 하이브리드 챗봇 데모를 공개합니다.

Rule의 안정성과 LLM의 확장성을 결합하여,
연휴 기간 동안 바이브코딩 방식으로 직접 구축하고 다듬어 보았습니다.
(※ 현대자동차 공식 챗봇과 무관합니다.)


🎬 Hook: 1 데모 + 최종 평가

👉 Demo: hyundai-chatbot-demo.vercel.app

※ 참고: Vercel 빌드 환경에서는 일부 RAG 질의(띄어쓰기·유사명칭·오탈자 등)의 인식률이 Stackblitz 실험 환경보다 낮게 나타날 수 있습니다.
본 영상은 Stackblitz 기준으로 촬영되었으며, 동일 코드 기반으로 Vercel에서도 대부분 정상적으로 작동합니다.


1️⃣ 만들었나 (Why)

이번 데모는 바이브코딩을 통한 챗봇 구현 프로젝트의 일환으로, 차량 구매 목적의 실제 사용자 시나리오에서 출발했습니다.

기존 챗봇의 경우 기본 정보 제공은 충분했지만, 구매·시승·상담 다음 행동으로 자연스럽게 이어지는 흐름은 더 보완될 여지가 있었습니다.

목표는 기존 시스템을 비판하는 것이 아닌, 정보 전달행동 전환간격을 줄이는 플로우 설계였습니다.

  • 구매 목적 사용자 시나리오의 개선 포인트
    • 견적/시승 문의까지 이동 단계가 비교적 길어지는 구간
    • 외부 페이지 이동 시 대화 맥락이 단절되는 지점
    • 동일 메뉴/버튼 반복 노출로 인한 탐색 피로

이에 따라 데모는 “FAQ 요약 + 공식 링크(CTA) + 최소 단계 전환을 원칙으로, 사용자가 질문하면 필요 행동까지 즉시 연결되고 순환되는 경험을 지향했습니다.


2️⃣ 어떻게 만들었나 (How)

Part 1. 분석 & 전략

  • 가설
    1. 목표 행동(구매·시승·AS)까지 경로 단축링크/CTA 무결성이 사용자 만족도와 목표(KPI) 전환에 결정적이라고 가정
    2. 또한 LLM 측면에서 유사 발화 대응력(띄어쓰기·별칭·오탈자)이 실사용성에 큰 영향을 준다고 가정
  • 분석
    1. 실제 공식 사이트 캡처·메뉴 트리 분석
    2. Top FAQ 및 유사 발화 수집&정규화
    3. 링크 유효성 및 도메인 점검
  • 전략
    1. 플로우 단순화(Simplify Flow) → 메뉴 통합, CTA 중심 설계, 1~2단계 내 해결
    2. 지속적인 연결(Connect Experience) → 핵심 정보는 대화 내 제공, 필요 시에만 외부 링크
    3. 데이터 최신화(Keep Data Fresh) 공식 FAQ 247 + 추가 Top 50 정비하여 반영 ( 지식 강화로 RAG 품질 안정화/고도화에 기여)

Part 2. 설계 & 개발

  • 아키텍처(Front-only Hybrid)
    • Rule Layer: 가격·보증·리콜·EV 추천 등 고정 의도 우선 처리
    • RAG Layer: faq.json + BM25 검색 → LLM 요약
    • UX Layer: 칩(Chips), 바텀시트, Sticky CTA(공식 링크/전화)

  • R1 → R2 → R3 개선 사이클
    • R1 (Prototype): Rule 70~80% + RAG 기본(가능성/흐름 우선)
    • R2 (Tuning): Rule 100% + 현대차 공식 FAQ 크롤링 반영 + BM25 교체, 유사 발화 정규화, 자동 테스트 루틴 구축
    • R3 (QA/Deploy): 자동/수동 라벨 교차검증, CTA·Fallback 보강 → 최종 평가 기준 항목 Pass

Part 3. 자동 테스트 & QA

  • 테스트 루틴
    • 콘솔 기반 runBatch() 자동 테스트 → 수동 라벨링으로 최종 판정
  • 라벨 분포 보정(R1 예시)
    • 자동: Good 40 / Fair 120 / Bad 136
    • 수동(최종): Good 183 / Fair 2 / Bad 111
    • “자동–수동 일치율: 45.6%”임계값·가중치 보정 상향
  • 보정 정책(R3 반영)
    • Retrieval TopScore 임계값 조정(예: ≥20=Good 후보)
    • Retrieval 성공 시 CTA 필수 부착, Fallback에도 고객센터 CTA 제공
    • 부분매칭 Good는 Gold 데이터 보강하여 업데이트
      → 위 보정 이후, 본문 상단 최종 평가 의 기준으로 품질을 점검·정리했습니다.

Part 4. RAG + Rule 하이브리드

  • 현업에서는 Rule-first를 반영했으나, 본 프로젝트에서는 RAG-first를 도입하여 실험
  • Retrieval 신뢰도(TopScore/Threshold)에 따라 FAQ → OpenDomain → Fallback으로 분기 처리
  • 역할 분리: “Rule = 안정성, “RAG = 커버리지·설명력
    ※ Vercel 배포 환경에서는 런타임(Edge vs Node) 및 경로 처리 차이로 인해 일부 질의(띄어쓰기, 유사명칭 등)의 검색 인식률이 Stackblitz 실험 환경 대비 다소 낮게 나타났습니다. 코드 구조와 데이터는 동일하며, 이는 환경 특성에서 비롯된 결과로 판단됩니다.

Part 5. 배포 트러블슈팅

  • Vercel 환경: OpenAI 직접 호출 지양 → /api/chat.ts 에지 프록시
  • 인덱싱 race 방지: ensureRagReady() 싱글톤 초기화 + 임베디드 코퍼스
  • dev/prod 코퍼스 동기화: assets 임베드 + 런타임 /faq.json 덮어쓰기
  • 재할당 경고 해결: const → let
  • 공식 FAQ URL 변경: 리다이렉트 미지원 건은 외부 이슈로 Skip

3️⃣ 결과 & 배운 (What / Lessons)

🎯 핵심 성과

  • 최상단 최종 평가 표 기준으로 정확도·라우팅/폴백·링크/CTA·성능·스타일/안전·UI/UX 항목 Pass 달성했습니다.
  • Rule + RAG 결합 구조를 구축하고, 자동 QA 루틴(runBatch)을 적용했습니다.
  • R1→R2→R3 개선 사이클을 통해 품질을 확보하고 프로덕션 레디 수준으로 정비하였습니다.

🧩 진행 어려움

  • 마지막 5% 완성 구간에서 시간 소요가 집중되었습니다. (체감상 전체 소요 시간의 20% 이상)
  • 공식 사이트 URL 변경(리다이렉트 미지원)로 일부 항목은 Skip 처리했습니다.
  • 바이브 코딩 시, 프롬프트 반복 입력 시 맥락을 벗어나 필요 이상으로 수정 발생하는 케이스가 많았습니다.
  • 배포 환경(Vercel)에서 RAG 검색 성능이 Stackblitz 대비 약하게 나타났습니다. 이는 런타임 및 빌드 환경 차이로 인한 현상으로, 실 서비스 영향 범위는 RAG 한정으로 나타났습니다.

💡 교훈

  1. 작업 단위는 최대한 작게 쪼개고, 문맥은 명확하게 가져가야 합니다. (챗방 최대한 쪼개기 + 상세한 프롬프트 필요)
  2. 제안 코드는 그대로 적용하기보다 구조를 확인하고 최소 수정으로 해결해야 합니다.
  3. 바이브 코딩은 개발 도구에 가깝습니다(기본 문법·구조 이해가 효율을 좌우).
  4. Agent 자동 검수 + 수동 QA 조합으로 효율적으로 시간을 아끼고 품질을 높여줍니다.
  5. 초기 목표는 50% 범위로 설정해야 합니다. 최초 예상보다 2~3배의 시간과 노력이 소요되기 쉬워, 단계별 확장이 현명합니다.
  6. RAG 보정은 생각보다 어렵습니다. (예: 유사 발화·띄어쓰기·별칭 대응 등)

 

P.S. 추석 연휴 내내 작업하여 마지막 보정 작업과 글 작업을 진행하니 어느덧 1주일이 금방이네요. 처음 해보는 바이브코딩은 생각보다 어렵고 힘들었지만, 생각보다 재미있고 많은 걸 배울 수 있었습니다. 더 재미나고 쉬운 바이브코딩 2탄으로 찾아오겠습니다 😊🤩

 

AI 챗봇, RAG 파이프라인 속 기획자의 역할

1. 서문

앞선 글에서는 Safety 정책과 폴백·쿠션멘트 설계를 다뤘습니다.
이번에는 이 요소들이 RAG 파이프라인 속에서 어떻게 연결되는지를 이야기하려 합니다.

먼저 간단히 복습하자면:

  • LLM (Large Language Model): 대규모 언어 모델. 질문을 이해하고 답변을 생성하는 엔진
  • RAG (Retrieval-Augmented Generation): LLM이 답변을 생성하기 전, 검색으로 근거 자료를 찾아 활용하는 최신화 프레임워크
    → 즉, 검색 기반 + 생성형”을 결합해 답변의 신뢰도를 높이는 방식입니다.

파이프라인 자체는 개발팀이 주도적으로 설계·구현했지만,
제가 맡은 역할은 그 흐름이 사용자 경험 차원에서 안정적으로 작동할 수 있도록 기준과 필요사항을 정의하는 것이었습니다.


2. RAG 파이프라인 개요

RAG는 보통 다음 단계를 거칩니다:

  1. Input 처리 – 사용자 발화 전처리
  2. Retriever – 검색 및 문서 매칭
  3. Augment – 검색 결과 정제 및 후보 선택
  4. Generator – LLM 응답 생성
  5. Output Post-processing – 응답 후처리 및 검증

이 중 기획자의 역할은 각 단계에서 “어떤 경우를 어떻게 처리할지” 기준을 제공하는 것입니다.


3. 단계별 기획자의 터치포인트

각 단계는 개발팀이 주도적으로 구현했지만,
기획자는 사용자 경험 관점에서 기준을 정의하는 역할을 했습니다.

단순 요약이 아니라, 실제로 어떤 일이 일어나는지를 예시와 함께 풀어보겠습니다.

① Input (전처리 & Safety 1)

  • 개발팀: 언어 탐지, 금칙어/개인정보(PII) 검출, 입력 포맷 정규화
  • 기획:
    • 미지원 언어 → “현재 한국어만 지원합니다. 다시 입력해 주세요.”
    • 특수문자/형식 오류 → “입력하신 문구를 확인해 주세요.”
    • 금칙어/불법 발화/개인정보 → “안전한 서비스 제공을 위해 해당 내용은 안내드릴 수 없습니다.”
    • 계정/결제 등 사람 개입 필요 → 상담사 이관

👉 핵심은 차단/재시도/이관 플로우를 정의하는 것입니다. 이렇게 해야 사용자 경험을 보호하고 시스템 자원도 절약할 수 있습니다.

② Retriever (검색/매칭)

  • 개발팀: 쿼리 빌드, 인덱스 검색, 스코어링, Top-K 후보 산출
  • 기획:
    • IDK (도메인 안인데 답 없음) vs OOD (도메인 밖 질문) 구분
    • 검색 신뢰도 임계치(Threshold) → 기준 이상 = 답변 생성, 기준 이하 = 추천 리스트 제공
    • 소스 우선순위 = 공식 문서 > 공지 > 커뮤니티

👉 임계치는 초기엔 개발팀이 임의로 정했지만, 실제 운영에서는 “언제 답변을 막고 언제 추천으로 돌릴지”가 사용자 경험에 직결됩니다.

📦 Top-K & Score Threshold란?

  • Top-K Retrieval: 검색 결과 중 상위 K개만 가져오는 방식.
    예: 200개 검색 → 상위 5개만 선택 = Top-5. (보통 K=3~10)
  • Score Threshold(임계치): 검색 결과의 유사도 점수(score)가 기준 T 이상일 때만 “신뢰 가능”으로 간주.
    예: 0.85 ≥ 0.8 → 답변 생성
    예: 0.55 < 0.8 → “정확한 답변을 찾지 못했습니다. 대신 [추천 리스트]를 확인해 주세요.”
  • 왜 기획자가 알아야 할까? 이 값들은 사용자 경험에 직접 영향을 주는 값이기 때문입니다.
    예: T가 너무 높으면 → 답변이 자주 막힘
    예: T가 너무 낮으면 → 엉뚱한 답변까지 노출

③ Augment (컨텍스트 구성)

  • 개발팀: Top-K 결과 중 프롬프트에 넣을 자료 정제
  • 기획:
    • 최신 자료/공식 자료 우선 순위 설정 (이번 달 공지 > 작년 글, 공식 FAQ > 커뮤니티)
    • 중복 제거 (비슷한 문서 여러 개일 경우 1개만 남김)
    • 신뢰도 낮음 → 다운그레이드 응답 (“정확한 답변은 제공되지 않습니다. 대신 [공식 문서]를 참고하세요.”)

👉 즉, 어떤 자료를 남기고/빼고, 불충분할 때 어떻게 보여줄지를 정하는 단계입니다.

④ Generator (LLM 생성)

  • 개발팀: 프롬프트 구성 및 LLM 호출
  • 기획:
    • 브랜드 톤·쿠션멘트 정의
      • 게임 = 친근/재밌게 (“이 부분은 아직 준비되지 않았어요 😅”)
      • 금융 = 단정/공식 (“현재 해당 정보는 제공되지 않습니다.”)
    • 신뢰도 낮음 → 정중 거절 + 대체 링크 안내
    • 프롬프트 가드레일
      • 범위 벗어난 질문은 거절
      • 모르면 IDK
      • 출처 없이 단정 금지

👉 답변 자체는 모델이 생성하지만, 어떤 톤과 규칙 안에서 말하게 할지”는 기획이 정합니다.

⑤ Output (후처리 & Safety 2)

  • 개발팀: 최종 응답 필터링, 금칙어/민감정보 제거, 마스킹 처리
  • 기획:
    • 차단 발생 시 대체 문구 정의
      • “안전한 서비스 제공을 위해 일부 내용은 표시되지 않습니다.”
    • 필요 시 공식 링크/상담 버튼 제공
    • 책임 문구/출처 표기 여부 결정

👉 Output은 마지막 안전망입니다. Input에서 걸러지지 않은 리스크가 여기서 최종적으로 검수됩니다.


5. 경험담 & 마무리

처음엔 “개발팀이 기술적으로 잘 만들겠지”라고 생각했습니다.
하지만 막상 업무를 진행하다 보니, 사용자 안내 기준이 빠진 채로는 파이프라인이 온전히 작동하지 않는다는 걸 알게 되었습니다.

결국 기획자의 역할은 직접 파이프라인을 설계하는 것이 아니라,
각 단계가 사용자 경험 차원에서 일관되게 동작하도록 기준과 필요사항을 정의하고 정리하는 것이었습니다.

겉으로 보면 RAG 파이프라인은 기술 중심 프로세스처럼 보입니다.
그러나 실제로는 Safety 정책, 폴백, 쿠션멘트 같은 사용자 경험 설계가 파이프라인 속에 녹아 있어야 비로소 서비스가 제대로 굴러갑니다.

결국 기획자는 기술의 빈 공간을 채우는 사람이 아니라,
서비스 전체가 일관된 경험을 주도록 연결해주는 역할을 맡습니다.


P.S. 🙂

RAG 2.0이 아직 일반화되지도 않았는데, 벌써 RAG 3.0이 논의될 정도로
AI는 지금도 하루가 다르게 발전하고 있습니다.

따라서 지금의 RAG 파이프라인 구축은 어디까지나 하나의 프레임워크이자 레퍼런스일 뿐입니다.
앞으로 새로운 기술 트렌드에 맞춰 계속 진화할 것이고,
기획자는 급변하는 흐름 속에서 유연하게 기준과 해결책을 설계하는 태도를 가져야 할 것입니다.