같은 질문을 매번 LLM에 보내면 돈과 시간이 낭비된다. 캐싱은 동일(또는 의미가 비슷한) 요청의 응답을 저장해 두었다가 즉시 반환한다. 캐시 HIT는 지연이 거의 0이고 추가 비용도 0이다.
이 강의 목표는 인메모리·Redis·시맨틱 캐시를 켜고, 캐시 동작을 제어하는 것이다.
1. 캐시 백엔드
| 타입 | 특징 |
|---|---|
local |
프로세스 메모리(단일 인스턴스) |
redis |
분산·공용(여러 인스턴스 공유) |
s3 / gcs |
영속 저장 |
redis-semantic |
의미 유사도 기반 캐시 |
2. 정확 일치 캐시(Redis)
import litellm
from litellm import completion
from litellm.caching import Cache
litellm.cache = Cache(type="redis", host="localhost", port=6379)
# (model + messages)가 같으면 두 번째 호출은 캐시에서 즉시 반환
for _ in range(2):
r = completion(model="openai/gpt-4o",
messages=[{"role":"user","content":"파이썬이란?"}],
caching=True)
3. 시맨틱 캐시
프롬프트가 글자까지 같지 않아도 의미가 유사하면 HIT시킨다. 임베딩 유사도 임계값(similarity_threshold)으로 민감도를 조절한다.
litellm.cache = Cache(
type="redis-semantic",
host="localhost", port=6379,
similarity_threshold=0.8,
redis_semantic_cache_embedding_model="text-embedding-3-small",
)
핵심 명령·용어
| 이름 | 뜻 |
|---|---|
litellm.cache = Cache(...) |
캐시 활성화 |
caching=True |
해당 호출에 캐시 적용 |
type="redis-semantic" |
시맨틱 캐시 |
similarity_threshold |
유사도 임계값 |
예제
# 특정 호출만 캐시 무시하고 새로 생성
r = completion(model="openai/gpt-4o", messages=msgs,
caching=True, cache={"no-cache": True}) # 강제 미스
해설) no-cache는 최신 답이 필요할 때 캐시를 우회한다. Redis 백엔드는 여러 게이트웨이 인스턴스가 캐시를 공유하므로 운영 환경에서 특히 효과가 크다.
댓글 0
댓글은 운영자만 작성할 수 있어요.