İçeriğe geç

Cache Poisoning: Yanlış Bilgi Cache'lendi, Nasıl Düzeltirsin?

Cache'e yanlış doc'lar yazıldı, eski bilgi var. Cache invalidation stratejileri. Anthropic / OpenAI / Gemini için ne mümkün?

Şükrü Yusuf KAYA
12 dakikalık okuma
Orta

Cache Poisoning ve Invalidation

Bir senaryo: "Kargo süresi 1-2 gün" diye doc'unu cache'e yazdın. Sonra şirket politika değişti, "2-5 gün" oldu. Cache'teki eski bilgiyle yanlış cevaplar veriyor.
Bu cache poisoning. Nasıl temizlersin?

Problem: Cache Provider'ları Manuel Silme API'si Sunmuyor#

Anthropic: cache_delete API yok. OpenAI: cache_delete API yok. Gemini:
cache.delete()
API var.
İlk ikisi için manuel silme yok. Sadece TTL bekleyebilir veya prefix değiştirebilir.

Çözüm 1: Versiyon Markeri#

En basit yöntem: prompt'un başına bir versiyon stringi koy.
python
CACHE_VERSION = "v2026-03-15-001" # ← KB değişince bunu artır
 
system_blocks = [
{
"type": "text",
"text": f"[Knowledge base version: {CACHE_VERSION}]\n\n{KB}",
"cache_control": {"type": "ephemeral"},
}
]
 
# Eski cache (version v2026-03-14) artık kullanılmaz
# Yeni version ile yeni prefix → yeni cache
Versiyon marker ile manuel invalidation
CI/CD Best Practice
KB güncellendiğinde CI/CD pipeline'ında bu CACHE_VERSION'ı otomatik artır. Bir env var olabilir, git commit hash olabilir, KB checksum olabilir.

Çözüm 2: TTL Beklemek#

5dk TTL: en fazla 5 dakika eski bilgi. 1h TTL: en fazla 1 saat.
Eğer "anlık invalidation" gerekmiyorsa, TTL doğal mekanizma. Ama mission-critical değişimlerde (örn. fiyat değişti) yeterli değil.

Çözüm 3: Gemini Manual Delete#

Gemini'de cache delete var:
old_cache = genai.caching.CachedContent.get(name="cachedContents/abc123") old_cache.delete() # Yeni cache yarat new_cache = genai.caching.CachedContent.create( contents=[{"role": "user", "parts": [{"text": UPDATED_DOC}]}], ttl="3600s", )
Gemini'nin bu avantajı kritik bir use case'te (real-time data) onu seçim sebebi.

Cache Poisoning Pratik Senaryolar#

Olay: Bir doc'a yanlış bilgi yazıldı, cache'lendi.
Çözüm:
  1. Doc'u DB'de düzelt
  2. CACHE_VERSION'ı artır
  3. Sonraki sorgular yeni version ile cache miss → yeniden write
Etki: ~1-5 dakika içinde tüm sistemde fix.

Cache Versioning Best Practice#

python
import hashlib
 
def get_cache_version(kb_content: str) -> str:
"""KB content'in checksum'undan otomatik version üret."""
sha = hashlib.sha256(kb_content.encode()).hexdigest()[:12]
return f"kb-{sha}"
 
# KB değişince checksum değişir, version otomatik artar
KB_VERSION = get_cache_version(LOAD_KB())
 
system_blocks = [
{
"type": "text",
"text": f"[KB: {KB_VERSION}]\n\n{LOAD_KB()}",
"cache_control": {"type": "ephemeral", "ttl": "1h"},
}
]
Auto-versioning ile cache invalidation
Editor Pattern
Bu pattern Cursor, Continue gibi code editor'larda kullanılıyor — file checksum değişince cache yeniden inşa.

✓ Pekiştir#

Bir Sonraki Derste#

Modül 7 bitirme sınavı. RAG + Caching hybrid tüm dersleri.

Yorumlar & Soru-Cevap

(0)
Yorum yazmak için giriş yap.
Yorumlar yükleniyor...

İlgili İçerikler

Cache Invalidation Stratejileri — Şükrü Yusuf KAYA | Prompt Caching & Context Engineering