Nou Generator de prompt AI — scrie prompturi mai bune pentru ChatGPT, Claude și Gemini →

Cache semantic pentru LLM: RedisVL, GPTCache și LiteLLM în LLMOps, Evaluare & Securitate AI

Un cache semantic returnează un răspuns salvat când o întrebare nouă este suficient de apropiată, ca embedding, de una deja întâlnită.

Configurare & comandă
from redisvl.extensions.cache.llm import SemanticCache

cache = SemanticCache(
    name="llmcache",
    redis_url="redis://localhost:6379",
    distance_threshold=0.1,   # distanță cosinus în Redis (0-2); mai mic = mai strict
)
if hit := cache.check(prompt=intrebare):
    raspuns = hit[0]["response"]
else:
    raspuns = apeleaza_llm(intrebare)
    cache.store(prompt=intrebare, response=raspuns)

Un cache clasic se potrivește doar pe text identic. Un cache semantic transformă întrebarea în embedding, caută cea mai apropiată întrebare salvată și, dacă distanța este sub un prag, întoarce răspunsul salvat fără să mai apeleze modelul. Câștigul (cost, latență) depinde de cât de des se repetă întrebările în aplicația ta.

RedisVL (biblioteca Python Redis pentru vectori) are clasa SemanticCache: check() caută, store() salvează, distance_threshold este pragul de distanță cosinus (0–2 în Redis, valoare mai mică = potrivire mai strictă), ttl face intrările să expire, iar filterable_fields permite separarea pe utilizator. LiteLLM Proxy are și el cache semantic, cu tipurile redis-semantic, valkey-semantic și qdrant-semantic.

GPTCache (Zilliz) a fost una dintre primele biblioteci de acest tip. Ultima versiune publicată pe PyPI este 0.1.44 (august 2024), iar adaptorul OpenAI din README folosește API-ul vechi openai.ChatCompletion, anterior SDK-ului OpenAI 1.x. Pentru proiecte noi, verifică întâi dacă se potrivește cu versiunile tale de SDK.

Concepte cheie și caracteristici

Concept / Parametru Descriere practică
distance_threshold Pragul de distanță (nu de similaritate). La RedisVL valoarea implicită din exemplu este 0,1; set_threshold() îl schimbă ulterior.
ttl Durata de viață a intrărilor. În RedisVL, un check() reușit reîmprospătează TTL-ul intrărilor găsite.
filterable_fields Câmpuri de filtrare (de exemplu user_id de tip tag), folosite la store(..., filters=...) și check(..., filter_expression=...).
vectorizer Modelul de embedding folosit pentru întrebări.
drop() / clear() Șterg intrări individuale sau tot cache-ul.

Exemple practice și scenarii reale

Exemplul 1: Cache separat pe utilizator (RedisVL)

from redisvl.extensions.cache.llm import SemanticCache
from redisvl.query.filter import Tag

cache = SemanticCache(
    name="cache_privat",
    filterable_fields=[{"name": "user_id", "type": "tag"}],
)
cache.store(prompt="Ce telefon am în cont?", response="0722...",
            filters={"user_id": "abc"})
hit = cache.check(prompt="Ce număr de telefon am în cont?",
                  filter_expression=Tag("user_id") == "abc")

Exemplul 2: Expirarea intrărilor

cache.set_ttl(3600)   # o oră
cache.set_ttl()       # fără expirare

Exemplul 3: Cache semantic în LiteLLM Proxy

Configurația completă (model de embedding, prag) este în pagina „Semantic caching” din documentația LiteLLM.

litellm_settings:
  cache: true
  cache_params:
    type: redis-semantic

Greșeli frecvente și capcane

  • Confunzi pragul de distanță cu pragul de similaritate. La RedisVL, un distance_threshold mai mare acceptă întrebări mai diferite și crește riscul de răspunsuri greșite.
  • Folosești cache semantic pentru întrebări care depind de timp (curs valutar, stoc) sau de utilizator (sold, comenzi) fără TTL și fără filtru pe utilizator.
  • Nu măsori rata de potrivire. Fără ea nu știi dacă pragul este prea strict (puține potriviri) sau prea larg (răspunsuri nepotrivite).

Noțiuni și module înrudite

Învață AI • Comunitate & Q&A

Întrebări & Exemple practice: Cache semantic pentru LLM: RedisVL, GPTCache și LiteLLM

Ai o întrebare despre Cache semantic pentru LLM: RedisVL, GPTCache și LiteLLM sau ai descoperit un truc, prompt sau fragment de cod util? Distribuie-l cu ceilalți membri ai comunității!

🤖

Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!

Nu au fost adăugate încă întrebări sau resurse pentru această pagină. Dacă ai testat un prompt sau ai un snippet util, adaugă-l mai jos pentru comunitate.

Comunitate AI Adaugă o întrebare sau distribuie un cod / prompt

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.