본문으로 건너뛰기
Kreath Archive
TechProjectsBooksAbout
TechProjectsBooksAbout

내비게이션

  • Tech
  • Projects
  • Books
  • About
  • Tags

카테고리

  • AI / ML
  • 웹 개발
  • 프로그래밍
  • 개발 도구

연결

  • GitHub
  • Email
  • RSS
© 2026 Kreath Archive. All rights reserved.Built with Next.js + MDX
홈TechProjectsBooksAbout
//
  1. 홈
  2. 테크
  3. 5장: AI 시스템의 캐싱 전략
2026년 3월 3일·아키텍처·

5장: AI 시스템의 캐싱 전략

LLM 추론 비용과 지연을 줄이는 다층 캐싱 전략 — 의미론적 캐시, 프롬프트 캐시, KV 캐시, 임베딩 캐시, 그리고 캐시 무효화 전략을 다룹니다.

11분243자9개 섹션
architecturellminfrastructure
공유
ai-architecture5 / 10
12345678910
이전4장: 이벤트 드리븐 AI 파이프라인다음6장: 비용 관리와 최적화 아키텍처

AI 캐싱이 특별한 이유

전통적인 시스템에서 캐싱은 성능 최적화 기법입니다. 하지만 AI 시스템에서 캐싱은 생존 전략에 가깝습니다. LLM 호출 한 번의 비용은 데이터베이스 쿼리의 수백 배에 달하고, 지연 시간은 수천 배에 달합니다.

연산평균 지연건당 비용
Redis 조회0.5ms거의 무료
PostgreSQL 쿼리5ms거의 무료
Claude Sonnet (1K + 500 토큰)2,000ms$0.0105
Claude Opus (1K + 500 토큰)5,000ms$0.0825

하루 10만 건의 LLM 호출이 발생하는 서비스에서, 캐시 적중률을 40%만 달성해도 월 $12,000 이상을 절감할 수 있습니다. 그러나 AI 캐싱에는 고유한 도전이 있습니다. 전통적인 캐싱은 "같은 키에 같은 값"이라는 전제에 기반하지만, AI 시스템에서는 "비슷한 질문에 같은 답을 써도 되는가?"라는 의미론적 판단이 필요합니다.

다층 캐싱 아키텍처

AI 시스템의 캐싱은 여러 계층이 협력하는 다층 구조로 설계합니다.

계층 1: 정확 매칭 캐시

가장 단순하고 확실한 캐싱입니다. 동일한 프롬프트에 대해 동일한 응답을 반환합니다. 프롬프트, 모델명, temperature, max_tokens 등을 조합하여 SHA-256 해시 키를 생성하고, Redis에 TTL과 함께 저장합니다.

cache/exact_match_cache.py
python
import hashlib, json
import redis.asyncio as redis
 
class ExactMatchCache:
    def __init__(self, client: redis.Redis, ttl: int = 3600):
        self.redis = client
        self.ttl = ttl
 
    def _key(self, model: str, messages: list[dict], **kw) -> str:
        payload = json.dumps(
            {"model": model, "messages": messages, **kw},
            sort_keys=True, ensure_ascii=False,
        )
        return f"llm:exact:{hashlib.sha256(payload.encode()).hexdigest()}"
 
    async def get(self, model, messages, **kw) -> str | None:
        return await self.redis.get(self._key(model, messages, **kw))
 
    async def set(self, model, messages, response: str, **kw):
        await self.redis.setex(
            self._key(model, messages, **kw), self.ttl, response,
        )
Warning

정확 매칭 캐시는 temperature가 0인 요청이나 구조화된 출력(분류, 추출 등)에 가장 적합합니다. temperature가 높은 창작 작업에서는 캐시가 다양성을 해칠 수 있으므로 주의하십시오.

계층 2: 의미론적 캐시

의미론적 캐시(Semantic Cache)는 정확히 같은 프롬프트가 아니더라도, 의미적으로 충분히 유사한 프롬프트에 대해 캐시된 응답을 반환합니다. "Python의 장점이 뭔가요?"와 "Python 언어의 주요 장점을 알려주세요"는 다른 문자열이지만 같은 의미입니다.

핵심은 유사도 임계값(Similarity Threshold)의 설정입니다. 이 값이 캐시의 품질과 적중률을 결정합니다.

임계값적중률정확도적합한 시나리오
0.99낮음매우 높음법률, 의료 등 정확도 최우선 도메인
0.95중간높음일반 Q&A, 문서 요약
0.90높음중간FAQ, 고객 지원
Tip

높은 임계값(0.97)으로 시작하여 안정성을 확인한 뒤 점진적으로 낮추십시오. 캐시 적중 시 원본 쿼리와 매칭된 쿼리를 함께 로깅하면 임계값 튜닝에 유용한 데이터를 확보할 수 있습니다.

계층 3: 프롬프트 캐시 (프로바이더 레벨)

프롬프트 캐시(Prompt Caching)는 LLM 프로바이더가 서버 측에서 제공하는 캐싱입니다. 긴 시스템 프롬프트나 대량의 컨텍스트를 반복 전송할 때, 이전에 처리한 토큰을 재사용하여 비용과 지연을 줄여줍니다.

cache/prompt_caching_example.py
python
import anthropic
 
client = anthropic.Anthropic()
 
response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    system=[{
        "type": "text",
        "text": long_policy_document,  # 수천 토큰의 정책 문서
        "cache_control": {"type": "ephemeral"},
    }],
    messages=[{"role": "user", "content": "환불 정책이 어떻게 되나요?"}],
)
# 캐시 적중 시: 입력 토큰 비용 90% 절감
print(f"캐시 읽기 토큰: {response.usage.cache_read_input_tokens}")

프롬프트 캐시는 긴 시스템 프롬프트, RAG 컨텍스트(동일 문서로 여러 질문 처리), 다수의 Few-shot 예시를 포함하는 반복 호출에서 효과적입니다.

계층 4: KV 캐시와 임베딩 캐시

KV 캐시(Key-Value Cache)는 Transformer 모델 내부에서 이전 토큰의 Key-Value 텐서를 저장하여 재계산을 피하는 메커니즘입니다. 애플리케이션 개발자가 직접 관리하지는 않지만, 대화형 애플리케이션에서 이전 턴의 KV 캐시를 유지하면 후속 턴의 응답 속도가 빨라진다는 점을 아키텍처에 반영할 수 있습니다.

임베딩 캐시(Embedding Cache)는 RAG 시스템에서 특히 중요합니다. 동일한 텍스트에 대한 임베딩 벡터를 Redis에 캐시하면 임베딩 API 호출을 크게 줄일 수 있습니다. 캐시 키에 모델 이름을 포함시키는 것이 중요합니다. 임베딩 모델을 교체하면 기존 캐시가 모두 무효화되기 때문입니다.

RAG 파이프라인의 검색 결과 자체를 캐시하는 것도 효과적입니다. 인기 있는 질문이 반복되는 고객 지원, FAQ 시나리오에서 벡터 검색과 리랭킹 비용을 절감합니다.

캐시 무효화 전략

캐시에서 가장 어려운 부분은 "언제 캐시를 버릴 것인가"입니다.

트리거무효화 대상전략
모델 업데이트정확 매칭, 의미론적 캐시모델 버전을 캐시 키에 포함
프롬프트 변경해당 프롬프트의 모든 캐시프롬프트 버전 태깅
지식 베이스 업데이트RAG 결과 캐시변경 문서 연관 캐시만 무효화
임베딩 모델 교체의미론적/임베딩 캐시전체 재인덱싱
Warning

과도한 캐싱은 오래된 응답을 반환하는 문제를 일으킵니다. 최신 정보가 중요한 도메인(뉴스, 주가)에서는 TTL을 짧게 설정하거나, 캐싱 대신 프롬프트 캐시(프로바이더 레벨)만 활용하는 것이 적절할 수 있습니다.

비용 절감 분석

다층 캐싱의 실제 비용 절감 효과를 시뮬레이션합니다. 전제 조건은 일일 100,000건의 LLM 요청, 평균 입력 1,000토큰 + 출력 500토큰, Claude Sonnet 사용입니다.

캐싱 계층적중률절감되는 요청월 절감액
정확 매칭 (L1)15%15,000건/일$4,725
의미론적 (L2)20%17,000건/일$5,355
프롬프트 캐시 (L3)나머지의 80%비용 90% 절감 적용$3,200
합계--약 $13,280/월

캐싱 인프라 비용 $500/월을 감안해도 월 $12,000 이상의 순 절감이 발생합니다.

다음 장 미리보기

6장에서는 캐싱을 포함한 AI 시스템의 전체 비용 관리 전략을 다룹니다. 토큰 최적화, 모델 티어링, 예산 제어, 비용 알림 등 AI 시스템을 경제적으로 운영하기 위한 아키텍처 패턴을 살펴보겠습니다.

이 글이 도움이 되셨나요?

관련 주제 더 보기

#architecture#llm#infrastructure

관련 글

아키텍처

6장: 비용 관리와 최적화 아키텍처

LLM API 비용을 제어하는 아키텍처 전략 — 토큰 예산 시스템, 모델 라우팅, 캐싱 경제학, 비용 모니터링, 그리고 비용 효율적 시스템 설계를 다룹니다.

2026년 3월 5일·16분
아키텍처

4장: 이벤트 드리븐 AI 파이프라인

이벤트 기반 아키텍처로 AI 워크로드를 처리하는 패턴 — 메시지 큐, 스트리밍 처리, 비동기 추론, 그리고 실시간 AI 파이프라인 설계를 다룹니다.

2026년 3월 1일·10분
아키텍처

7장: 장애 대응과 회복 탄력성

AI 시스템의 장애 시나리오와 회복 탄력성 패턴 — 서킷 브레이커, 폴백, 재시도, 타임아웃, 모델 장애 조치, 그리고 그레이스풀 디그레이데이션을 다룹니다.

2026년 3월 7일·16분
이전 글4장: 이벤트 드리븐 AI 파이프라인
다음 글6장: 비용 관리와 최적화 아키텍처

댓글

목차

약 11분 남음
  • AI 캐싱이 특별한 이유
  • 다층 캐싱 아키텍처
  • 계층 1: 정확 매칭 캐시
  • 계층 2: 의미론적 캐시
  • 계층 3: 프롬프트 캐시 (프로바이더 레벨)
  • 계층 4: KV 캐시와 임베딩 캐시
  • 캐시 무효화 전략
  • 비용 절감 분석
  • 다음 장 미리보기