LabHub

블로그

AI Engineering 프로덕션 실전 완전 가이드 — RAG·Evals·Fine-tuning·LLMOps·Guardrails·Prompt Caching·비용 최적화까지 2025-2026년 현장 노하우

“Demo is easy. Production is hard. Evals are the only way you know which one you have.” — Hamel Husain

[2026년 기술 지형 예측]에서 우리는 LLM Next Wave와 Agents 주류화가 2026년의 핵심이라고 정리했다. 이제는 그걸 실제로 어떻게 만드는가로 내려간다.

2023년은 ChatGPT API wrapper의 해였다. 2024년은 RAG의 해였다. 2025년은 Agents + Evals의 해였다. 많은 팀이 Jupyter 데모는 만들었지만, 프로덕션 LLM 시스템을 제대로 굴리는 팀은 여전히 소수다. 이 글은 그 간극을 메운다.

대상: 일반 백엔드·풀스택 엔지니어가 LLM 기능을 프로덕션에 넣어야 할 때. ML 박사 지식 없이도 실용적으로 작동하는 AI Engineering 전반을 다룬다.

목차

  1. AI Engineer vs ML Engineer — 역할 구분
  2. 아키텍처 전체 그림 — prompt → tool → RAG → agent → eval
  3. RAG 파이프라인 — chunking, embedding, retrieval, reranking
  4. Evals — LLM-as-Judge·pairwise·rubric·regression
  5. Fine-tuning vs Prompt vs RAG 결정 트리
  6. Agent 구축 — LangGraph·DSPy·MCP
  7. LLMOps — tracing, logging, versioning
  8. Guardrails — 입출력 안전성·prompt injection 방어
  9. Prompt Caching과 비용 최적화
  10. Latency 최적화 — streaming·speculative decoding·routing
  11. 한국어·도메인 특화 이슈
  12. 체크리스트와 안티패턴

1. AI Engineer vs ML Engineer — 역할 구분

1.1 역할 분화

ML Engineer (전통):

AI Engineer (2023+ 신조어, Chip Huyen 정립):

1.2 실무 비율

Chip Huyen "AI Engineering" (2024) 기준 — AI Engineer가 전체 LLM 팀의 80%, ML Engineer는 20%. Foundation model은 OpenAI/Anthropic/Meta 등 소수가 만들고, 나머지는 조립한다.

1.3 이 글의 타겟


2. 아키텍처 전체 그림

2.1 5 레이어 모델

┌──────────────────────────────────────────┐
5. Evals & Observability├──────────────────────────────────────────┤
4. Agent / Orchestration├──────────────────────────────────────────┤
3. Tool use / Function calling           │
├──────────────────────────────────────────┤
2. RAG / Context engineering             │
├──────────────────────────────────────────┤
1. Prompt + Model└──────────────────────────────────────────┘

2023년 1~2 레이어만 있었다. 2024년 3~4 레이어 추가. 2025년 5 레이어가 표준이 됨.

2.2 데이터 흐름

User query
Prompt template + guardrail (input)
Context retrieval (RAG)
LLM (tool calls ↔ tool exec)
Post-process + guardrail (output)
Logging + eval trace
Response to user

각 단계가 관측 가능해야 한다. LangSmith·Langfuse·Arize Phoenix가 이 역할.


3. RAG 파이프라인 — chunking, embedding, retrieval, reranking

3.1 RAG가 필요한 이유

3.2 Naive RAG의 문제

초창기 RAG 코드 — “chunk 1024 + top-k 5 → LLM”. 실패 원인:

3.3 2025 현대 RAG 스택

  1. Document preprocessing

    • PDF → Unstructured, LlamaParse, Reducto (표·그림·수식).
    • HTML → Readability·trafilatura.
    • PowerPoint·Excel 전용 파서.
  2. Chunking 전략

    • Semantic chunking — embedding similarity로 문단 경계.
    • Structural chunking — Markdown heading, HTML DOM.
    • Parent-child — 작게 검색, 크게 제공.
    • Sliding window + overlap — 문맥 유지.
  3. Embedding

    • OpenAI text-embedding-3-large — 범용 강자.
    • Cohere embed-v3 — multilingual.
    • Voyage AI, Jina AI — 도메인 특화.
    • Nomic embed, BGE-M3 — 오픈소스.
    • Matryoshka embeddings — 차원 유연성.
  4. Vector DB

    • pgvector (PostgreSQL) — 기본 선택. Supabase가 잘 만들어놨다.
    • Qdrant, Weaviate, Milvus, Pinecone — 전용.
    • LanceDB, ChromaDB — 임베디드·로컬.
    • Vespa — 검색+벡터 통합.
  5. Retrieval

    • Hybrid search — BM25 + vector (70:30 또는 50:50).
    • Query expansion — HyDE (hypothetical document), multi-query.
    • Self-query — LLM이 filter 조건 생성.
  6. Reranking

    • Cohere Rerank v3 — 프로덕션 표준.
    • BGE-reranker — 오픈소스.
    • ColBERT v2 — 정밀 but 비용.
    • Top-50 → rerank → top-5.
  7. Context compression

    • LongLLMLingua·LLMLingua-2로 불필요 토큰 제거.

3.4 평가 지표

3.5 Graph RAG와 최신 흐름


4. Evals — LLM-as-Judge·pairwise·rubric·regression

4.1 Evals가 왜 결정적인가

"If you can't measure it, you can't improve it." LLM 시스템의 품질은 주관적이기에 측정 체계 없이는 프로덕션이 불가능.

Hamel Husain(『LLM Evals』 저자) — "Evals는 AI 엔지니어링의 테스트 슈트다. 없으면 리팩터링도 모델 교체도 못 한다."

4.2 Eval 종류

  1. Reference-based

    • BLEU, ROUGE, BERTScore — 번역·요약의 고전.
    • Golden answer 필요. 작성·유지 비용.
  2. Reference-free (LLM-as-Judge)

    • GPT-4 급 모델이 출력 평가.
    • Pairwise — A vs B 중 선택.
    • Rubric — 5점 척도 + 이유.
    • Critique — 자유 서술.
  3. Rule-based

    • 정규식, JSON 스키마 검증, 금칙어.
  4. User feedback

    • 👍/👎, 5-star, follow-up 발생률.

4.3 Eval Dataset 구축

4.4 Eval Harness

pytest-style
  ├─ test_rag_hit.py        # retrieval 정확도
  ├─ test_factuality.py     # LLM-as-judge
  ├─ test_refusal.py        # 거부 시나리오
  ├─ test_jailbreak.py      # 적대적
  └─ test_latency.py        # p50/p95

CI에서 매 PR마다 실행. 회귀 방지.

4.5 툴

4.6 Judge 편향

대응: swap 실험, 길이 정규화, 다수결(3 judges).


5. Fine-tuning vs Prompt vs RAG 결정 트리

5.1 먼저 시도할 순서

1) Prompt engineering (1 day)
2) RAG (1~2 weeks)
3) Prompt + RAG + examples (few-shot)
4) Fine-tuning (1~2 months, only if above fail)

5.2 언제 Fine-tuning이 맞는가

5.3 LoRA·QLoRA

5.4 인스트럭션 튜닝 데이터

5.5 Deploy


6. Agent 구축 — LangGraph·DSPy·MCP

6.1 Agent의 정의

단순 프롬프트 ≠ Agent. Agent는:

  1. Loop — 반복적 판단.
  2. Tool use — 외부 행동.
  3. Memory — 상태 유지.
  4. Goal-oriented — 목표 달성까지.

6.2 LangGraph

LangChain의 그래프 기반 대체. 상태 기계로 agent 모델링.

from langgraph.graph import StateGraph

graph = StateGraph(AgentState)
graph.add_node("retrieve", retrieve_fn)
graph.add_node("reason", reason_fn)
graph.add_node("respond", respond_fn)
graph.add_edge("retrieve", "reason")
graph.add_conditional_edges("reason", should_continue, {
    "continue": "retrieve",
    "end": "respond",
})

장점: 명시적 상태, checkpointing, human-in-the-loop.

6.3 DSPy

Stanford 연구. Prompt를 수동 작성 대신 컴파일.

프로덕션 채택은 아직 실험적이나, eval-driven prompt engineering의 미래.

6.4 CrewAI·AutoGen

6.5 MCP 통합

from mcp import Client

client = Client("internal-docs-mcp-server")
tools = client.list_tools()
# LLM에게 tools 제공

MCP 서버 자체를 만드는 것이 2026년 핵심 스킬. Anthropic·OpenAI·Google 모두 지원.

6.6 Agent 실패 패턴과 대응


7. LLMOps — tracing, logging, versioning

7.1 왜 기존 APM으론 부족한가

전통 로그는 HTTP status·latency. LLM은 입력 프롬프트·출력 텍스트·토큰 수·cost·tool calls·retrieval 결과 전부 필요.

7.2 Tracing 필수 요소

7.3 툴 선택

7.4 Prompt Versioning

7.5 Shadow deployment

7.6 Continuous evaluation


8. Guardrails — 입출력 안전성·prompt injection 방어

8.1 위협 모델

8.2 입력 Guardrails

8.3 출력 Guardrails

8.4 툴

8.5 Defense in Depth


9. Prompt Caching과 비용 최적화

9.1 LLM 비용 구조

9.2 Prompt Caching

활용 패턴:

9.3 Model routing

9.4 Batch API

9.5 Quantization과 Self-host

9.6 Cost observability


10. Latency 최적화 — streaming·speculative decoding·routing

10.1 TTFT와 TPS

10.2 Streaming

10.3 Speculative decoding

10.4 KV cache 최적화

10.5 Routing

10.6 Geographic edge


11. 한국어·도메인 특화 이슈

11.1 토큰 효율성

11.2 한국어 임베딩

11.3 도메인 예시

11.4 규제

대응: 자체 호스팅 + VPC 내부 LLM, 또는 금융 전용 클라우드.


12. 팀 구성과 개발 프로세스

12.1 최소 AI 팀

12.2 개발 사이클

  1. Use case 선정 — ROI 계산.
  2. Eval set 먼저 — 20~50 케이스.
  3. Prompt baseline — 즉시 측정.
  4. RAG 추가 — 필요시.
  5. Fine-tune — 마지막 수단.
  6. Guardrail + observability — 배포 전 필수.
  7. Shadow → canary → prod.
  8. Continuous eval.

12.3 Prompt engineering 문화


체크리스트

프로덕션 준비가 되었는가?
  1. ☐ Eval dataset이 최소 50케이스 이상 있다.
  2. ☐ CI에서 매 PR마다 eval이 돈다.
  3. ☐ Tracing(LangSmith·Langfuse 등)이 모든 LLM 호출을 기록한다.
  4. ☐ Prompt가 git에 버전 관리된다.
  5. ☐ Input guardrail(PII·injection)이 있다.
  6. ☐ Output guardrail(schema·toxicity)이 있다.
  7. ☐ Cost budget과 alert이 설정되어 있다.
  8. ☐ 모델 장애 fallback(다른 벤더·다른 모델)이 있다.
  9. ☐ Latency p95를 측정·SLO로 관리한다.
  10. ☐ User feedback 루프가 trace와 연결된다.
  11. ☐ Shadow deployment로 모델·프롬프트 교체를 검증한다.
  12. ☐ 보안팀·법무팀과 데이터 흐름을 리뷰했다.

자주 보는 안티패턴 10가지

  1. Eval 없이 프롬프트 무한 튜닝 — 주관 vibe check. 회귀 감지 불가.
  2. Chunk 1024·top-k 5 고정 — 문서 유형·도메인 무시한 기본값.
  3. Fine-tuning 먼저 시도 — 프롬프트·RAG 여력 남았는데.
  4. JSON mode 없이 파싱 — hallucinated 필드에 깨짐.
  5. Guardrail 없이 prod — 첫 prompt injection 이슈에 사고.
  6. Cost 관측 없음 — 월말 청구서 쇼크.
  7. 단일 벤더 종속 — OpenAI down에 전체 서비스 다운.
  8. Prompt 하드코딩 — 변경마다 재배포 필요.
  9. Human-in-the-loop 없는 고위험 자동화 — 결제·외부 이메일 발송 등.
  10. PII 무심코 벤더에 전송 — 개인정보보호법·GDPR 위반.

다음 글 예고 — “AI Engineer 커리어 완전 가이드: 주니어에서 시니어·스태프·프린시플까지”

AI Engineering을 구축하는 법을 배웠다면, 이제 커리어의 문제다.

학습 엔진 세팅 → 기술 지형 예측 → AI Engineering 실전 → 이제 자신의 커리어를 설계할 차례다.

댓글

아직 댓글이 없습니다.

로그인하면 댓글을 쓸 수 있습니다