▶️25분
[영상] 오픈소스 RAG 파이프라인 구축 가이드
Day 4: 프로덕션 RAG
[영상] 오픈소스 RAG 파이프라인 구축 가이드
RAG 심화 > Day 4: 프로덕션 RAG
학습 목표
프로덕션 RAG 운영 3요소(캐싱, 재시도, 관측)의 역할을 설명할 수 있다 Redis 시맨틱 캐싱과 단순 키-값 캐싱의 차이를 구분할 수 있다 분산 추적으로 RAG 파이프라인 병목을 찾는 방법을 설명할 수 있다 오픈소스 RAG 스택(LangChain + Qdrant + LangFuse)으로 프로덕션 시스템을 구성할 수 있다
영상 핵심 정리 — 오픈소스 RAG 프로덕션 가이드
프로토타입 vs 프로덕션
| 항목 | 프로토타입 | 프로덕션 |
|---|---|---|
| 캐싱 | 없음 | Redis 시맨틱 |
| 재시도 | 없음 | 지수 백오프 + 서킷 브레이커 |
| 관측성 | print() | LangFuse / Prometheus |
| 벡터 DB | Chroma(로컬) | Qdrant(클러스터) |
| 평가 | 수동 | RAGAS CI/CD |
시맨틱 캐시
from langchain.cache import RedisSemanticCache
from langchain_openai import OpenAIEmbeddings
import langchain
langchain.llm_cache = RedisSemanticCache(
redis_url='redis://localhost:6379',
embedding=OpenAIEmbeddings(),
score_threshold=0.95
)
지수 백오프
import time
from functools import wraps
def retry_with_backoff(max_retries=3, base_delay=1.0):
def decorator(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
for attempt in range(max_retries):
try:
return fn(*args, **kwargs)
except Exception:
if attempt == max_retries - 1: raise
time.sleep(base_delay * (2 ** attempt))
return wrapper
return decorator
LangFuse 관측성
사용자 질문
├─[trace: retrieval]──→ Qdrant 검색 (120ms)
├─[trace: rerank]─────→ Cross-Encoder (45ms)
└─[trace: generate]───→ LLM 생성 (1.2s, $0.003)
함정 주의: 시맨틱 캐시 임계값 0.8 이하면 미묘하게 다른 질문에 같은 캐시 반환해 오답. 제조 기술 질문은 부품 번호 차이가 크므로 0.95 이상 권장.
다음 task와의 연결
'프로덕션 RAG: 캐싱·재시도·관측'에서 세 요소를 Docker Compose로 통합 배포하고 Grafana 대시보드로 모니터링한다.
AI로 학습하기 — 꿀팁
🤖시맨틱 캐시 + LangFuse 추적 구현AI 학습 팁
AI 에이전트에게 코사인 유사도 기반 시맨틱 캐시와 LangFuse를 활용한 RAG 단계별 레이턴시 추적 코드를 작성하게 하고, 지수 백오프 재시도 로직이 올바른지 검토하세요.
오픈소스 제조 설비 매뉴얼 RAG 파이프라인을 구현해줘. 코사인 유사도 >0.95이면 재검색 없이 캐시를 반환하는 시맨틱 캐시 레이어를 추가하고, API 일시 장애 시 지수 백오프(1s → 2s → 4s, 최대 3회) 재시도 로직도 포함해줘. LangFuse로 각 RAG 단계(임베딩·검색·생성)의 레이턴시와 비용을 추적하는 코드도 작성해줘.
이 팁이 도움이 됐나요?
핵심 포인트
- • 시맨틱 캐시: 코사인 유사도 >0.95이면 재검색 없이 캐시 반환 — API 비용 60~70% 절감
- • 재시도: 지수 백오프(1s → 2s → 4s)로 일시 장애 대응, 최대 3회
- • LangFuse: 각 RAG 단계별 레이턴시·비용 추적
- • 3대 관측: 검색 P99 <500ms, 캐시 히트율 >40%, Faithfulness >0.85
