Cache Augmented Generation (CAG)
Cache Augmented Generation (CAG) aumenta l’efficienza dei large language model caricando preventivamente conoscenza statica, riducendo la latenza e semplificando l’architettura per compiti statici e a bassa latenza.
Cos’è Cache Augmented Generation (CAG)?
Cache Augmented Generation (CAG) è un approccio innovativo per migliorare le prestazioni e l’efficienza dei large language model (LLM) sfruttando la conoscenza caricata preventivamente sotto forma di cache di coppie chiave-valore (KV) precomputate.
A differenza di Retrieval Augmented Generation (RAG), che recupera dinamicamente conoscenza esterna durante l’inferenza, CAG elimina del tutto i passaggi di recupero incorporando tutta la conoscenza rilevante direttamente nella finestra di contesto estesa del modello prima dell’inferenza. Questa strategia di caricamento permette agli LLM di generare risposte utilizzando informazioni già precomputate, riducendo notevolmente la latenza e semplificando l’architettura del sistema.
Memorizzando la conoscenza processata in una cache chiave-valore, CAG assicura che il modello abbia accesso immediato al contesto necessario per rispondere alle interrogazioni. Questo approccio è particolarmente vantaggioso in scenari dove la base di conoscenza è statica, relativamente piccola o quando la bassa latenza è una priorità.
Come funziona CAG?
CAG opera attraverso tre fasi principali:
1. Caricamento preventivo della conoscenza esterna
Tutti i documenti o dataset rilevanti vengono caricati nella finestra di contesto del modello prima dell’inferenza.
Il contenuto caricato viene processato in una cache chiave-valore (KV) che rappresenta l’interno della conoscenza per il modello. Ad esempio:
def preprocess_knowledge(model, tokenizer, prompt): input_ids = tokenizer.encode(prompt, return_tensors="pt").to(model.device) past_key_values = DynamicCache() outputs = model(input_ids=input_ids, past_key_values=past_key_values, use_cache=True) return outputs.past_key_values
Questa fase assicura che il modello abbia accesso immediato alla conoscenza preprocessata, saltando la necessità di recuperi in tempo reale.
2. Inferenza con cache precomputata
Quando viene effettuata una domanda, la cache KV precomputata viene combinata con l’input della query.
Il modello genera una risposta basandosi esclusivamente sulla conoscenza in cache e sulla query, evitando ulteriori calcoli per il recupero della conoscenza. Ad esempio:
def generate_response(model, query, kv_cache): input_ids = tokenizer.encode(query, return_tensors="pt").to(model.device) output_ids = model(input_ids=input_ids, past_key_values=kv_cache, use_cache=True) return tokenizer.decode(output_ids)
3. Gestione della cache
Man mano che vengono processate nuove query, la cache cresce. Un meccanismo di reset tronca la cache alla lunghezza originale per mantenere le prestazioni e garantire che le interrogazioni successive siano valutate nel contesto previsto. Esempio di reset della cache:
def clean_up(kv_cache, original_length): for i in range(len(kv_cache.key_cache)): kv_cache.key_cache[i] = kv_cache.key_cache[i][:, :, :original_length, :] kv_cache.value_cache[i] = kv_cache.value_cache[i][:, :, :original_length, :]
Vantaggi principali di CAG
Bassa latenza
Non essendo necessario il recupero in tempo reale, CAG offre tempi di risposta più rapidi rispetto a RAG. Ciò lo rende ideale per applicazioni sensibili al tempo.Maggiore accuratezza
Caricando preventivamente tutti i documenti rilevanti, CAG assicura che il modello processi un dataset completo, riducendo il rischio di lacune di contesto o errori di recupero.Architettura semplificata
A differenza di RAG, che richiede una pipeline di recupero complessa, l’architettura di CAG è snella, riducendo la complessità del sistema e i costi di manutenzione.Efficienza su larga scala
Una volta che la conoscenza è caricata e in cache, le interrogazioni successive sono processate con un sovraccarico computazionale minimo, rendendo CAG efficiente per query ripetute nello stesso dominio di conoscenza.
Limiti di CAG
Dimensione della finestra di contesto
CAG si basa sulla finestra di contesto del modello per caricare la conoscenza. Gli LLM attuali supportano finestre di contesto fino a 128.000 token, il che limita la quantità di conoscenza caricabile.Dimensione della base di conoscenza
CAG è più adatto a basi di conoscenza statiche e gestibili. Per dataset grandi o dinamici, il modello potrebbe non riuscire a inserire tutte le informazioni rilevanti nella finestra di contesto.Conoscenza statica
CAG presume che la base di conoscenza rimanga invariata durante l’inferenza. È meno efficace per casi d’uso che richiedono aggiornamenti in tempo reale o integrazione di conoscenza dinamica.Implicazioni sui costi
Finestre di contesto molto grandi aumentano i costi computazionali durante il caricamento, rendendo CAG meno economico per scenari che comportano aggiornamenti frequenti della base di conoscenza.
Come viene utilizzato CAG?
Applicazioni pratiche
CAG è comunemente applicato in scenari dove la base di conoscenza è statica, gestibile nelle dimensioni e la bassa latenza è critica:
Chatbot di assistenza clienti
Esempio: caricamento preventivo di passaggi comuni per la risoluzione dei problemi di prodotti software per fornire risposte immediate agli utenti.
Vantaggio: elimina errori di recupero e velocizza i tempi di risposta.Analisi documentale
Esempio: istituti finanziari che analizzano report trimestrali o studi legali che consultano documenti normativi.
Vantaggio: garantisce risposte consistenti e accurate caricando tutti i documenti rilevanti nel modello.Assistenti sanitari
Esempio: caricamento preventivo di linee guida mediche per aiutare nelle domande dei pazienti.
Vantaggio: mantiene la continuità nei dialoghi multi-turno e assicura riferimenti precisi.Educazione e formazione
Esempio: risposte a domande frequenti nei programmi di formazione aziendale.
Vantaggio: semplifica il deployment assicurando risposte consistenti.
Confronto con Retrieval Augmented Generation (RAG)
Caratteristica | CAG | RAG |
---|---|---|
Gestione conoscenza | Carica la conoscenza nella finestra di contesto. | Recupera dinamicamente la conoscenza in esecuzione. |
Complessità di sistema | Semplificato, nessuna pipeline di recupero necessaria. | Richiede componenti aggiuntivi per il recupero. |
Latenza | Bassa, senza passaggi di recupero. | Più alta per via dei processi di recupero real-time. |
Scalabilità | Limitata dalla dimensione della finestra di contesto. | Si adatta bene a dataset grandi e dinamici. |
Rischio errori | Nessun errore di recupero. | Vulnerabile a errori di recupero e ranking. |
Migliori casi d’uso | Compiti statici e a bassa latenza. | Compiti dinamici, grandi o frequentemente aggiornati. |
Esempi di casi d’uso
CAG in azione
Sistemi HR
Un’azienda utilizza CAG per caricare le policy dei dipendenti nel modello. I dipendenti possono interrogare il sistema per linee guida specifiche e ricevere risposte istantanee.Assistenza legale
Un assistente legale carica preventivamente le leggi rilevanti nella finestra di contesto del modello per fornire risposte rapide a domande legali senza utilizzare un sistema di recupero.Servizio clienti
Il chatbot di un prodotto SaaS utilizza CAG per caricare preventivamente FAQ e guide di troubleshooting, garantendo interazioni fluide e rapide con i clienti.
RAG per scenari dinamici
Aggregazione notizie
Un’app di notizie usa RAG per recuperare e riassumere gli articoli più recenti, ottenendo dinamicamente le informazioni più rilevanti per le domande degli utenti.Ricerca e-commerce
RAG viene impiegato per recuperare dettagli e disponibilità dei prodotti da un catalogo grande e frequentemente aggiornato.Piattaforme di ricerca
Una piattaforma di ricerca scientifica impiega RAG per recuperare articoli e studi rilevanti da grandi database esterni.
Esempio di implementazione: caricamento della conoscenza in Python
Il seguente snippet di codice Python mostra come caricare la conoscenza in un modello per CAG:
def preprocess_knowledge(model, tokenizer, prompt):
input_ids = tokenizer.encode(prompt, return_tensors="pt").to(model.device)
past_key_values = DynamicCache()
outputs = model(input_ids=input_ids, past_key_values=past_key_values, use_cache=True)
return outputs.past_key_values
Questo meccanismo di caricamento assicura che il modello processi le query senza la necessità di recuperare dati esterni, consentendo prestazioni efficienti e a bassa latenza.
Quando usare CAG
Basi di conoscenza statiche
Ideale per casi in cui la base di conoscenza non cambia frequentemente.Applicazioni a bassa latenza
Adatto per servizi clienti, educazione o sistemi sanitari dove sono necessarie risposte rapide.Scenari economici
Utile quando la conoscenza caricata rimane costante tra più interrogazioni, riducendo il carico computazionale.
CAG è un’alternativa efficiente a RAG per compiti che richiedono velocità, semplicità e coerenza. Tuttavia, è limitato dalla dimensione e dalla staticità della base di conoscenza.
Ricerche su Cache Augmented Generation (CAG)
1. Adaptive Contextual Caching for Mobile Edge Large Language Model Service
Autori: Guangyuan Liu, Yinqiu Liu, Jiacheng Wang, Hongyang Du, Dusit Niyato, Jiawen Kang, Zehui Xiong
Questo articolo affronta le sfide nelle implementazioni edge dei Large Language Model (LLM), come risorse computazionali limitate e alta latenza nel recupero. Propone un framework Adaptive Contextual Caching (ACC), che utilizza il deep reinforcement learning (DRL) per ottimizzare le politiche di sostituzione della cache considerando il contesto utente, la similarità dei documenti e l’overhead dovuto ai cache miss. I risultati mostrano che ACC raggiunge oltre l'80% di cache hit dopo 11 episodi di training, riducendo la latenza di recupero fino al 40% rispetto ai metodi tradizionali. Inoltre, riduce l’overhead locale di caching fino al 55%, rendendolo adatto a servizi LLM scalabili e a bassa latenza in ambienti con risorse limitate. Il lavoro evidenzia il potenziale di ACC per migliorare l’efficienza nei sistemi edge LLM.
Leggi l’articolo
2. Towards More Economical Context-Augmented LLM Generation by Reusing Stored KV Cache
Autori: Hanchen Li, Yuhan Liu, Yihua Cheng, Kuntai Du, Junchen Jiang
Questo studio esplora il riutilizzo delle cache Chiave-Valore (KV) per ridurre i tempi di prefill nelle applicazioni LLM, specialmente per testi di input ripetuti. Analizza se tale riutilizzo possa essere economicamente vantaggioso anche utilizzando servizi cloud pubblici per storage ed elaborazione. Gli autori propongono un modello analitico validato per valutare i costi cloud (computazione, storage e rete) legati all’archiviazione e al riutilizzo delle cache KV su diversi parametri di carico di lavoro. Lo studio dimostra che il riutilizzo delle cache KV riduce sia la latenza sia i costi cloud per carichi di lavoro con contesti lunghi, incoraggiando ulteriori sforzi verso sistemi LLM context-augmented più economici.
Leggi l’articolo
3. MPIC: Position-Independent Multimodal Context Caching System for Efficient MLLM Serving
Autori: Shiju Zhao, Junhao Hu, Rongxiao Huang, Jiaqi Zheng, Guihai Chen
Questo articolo introduce MPIC, un sistema di caching contestuale multimodale position-independent, mirato a risolvere inefficienze nell’inferenza dei large language model multimodali (MLLM). I sistemi tradizionali ricalcolano l’intera cache KV anche per lievi differenze di contesto, portando a inefficienze. MPIC offre un sistema di caching position-independent che memorizza le cache KV localmente o in remoto e parallelizza il calcolo e il caricamento della cache durante l’inferenza. Meccanismi integrati di riutilizzo e ricalcolo mitigano la perdita di accuratezza ottenendo fino al 54% di riduzione del tempo di risposta rispetto ai metodi esistenti. Questo lavoro evidenzia il potenziale per una maggiore efficienza nei sistemi di serving dei LLM multimodali.
Leggi l’articolo
Domande frequenti
- Cos'è Cache Augmented Generation (CAG)?
Cache Augmented Generation (CAG) è un metodo che migliora le prestazioni dei large language model (LLM) caricando preventivamente la conoscenza statica in una cache di coppie chiave-valore (KV) precomputate. A differenza di Retrieval Augmented Generation (RAG), che recupera conoscenza esterna in fase di esecuzione, CAG incorpora tutte le informazioni rilevanti in anticipo, riducendo la latenza e semplificando l'architettura del sistema AI.
- In cosa differisce CAG da RAG?
CAG carica preventivamente tutte le conoscenze necessarie nella finestra di contesto del modello prima dell'inferenza ed elimina la necessità di recuperi in tempo reale, garantendo bassa latenza. RAG, invece, recupera dinamicamente le informazioni rilevanti durante l'esecuzione, il che può introdurre errori di recupero e maggiore latenza, ma è più adatto a basi di conoscenza dinamiche o frequentemente aggiornate.
- Quali sono i vantaggi dell'utilizzo di CAG?
I principali vantaggi di CAG includono bassa latenza, maggiore accuratezza grazie al caricamento completo della conoscenza, architettura di sistema semplificata ed efficienza per interrogazioni ripetute all'interno di domini di conoscenza statica.
- Quali sono i limiti di CAG?
CAG è limitato dalla dimensione massima della finestra di contesto del modello (attualmente fino a 128.000 token), è ideale per basi di conoscenza statiche e gestibili e risulta meno efficace per dataset dinamici o scenari che richiedono aggiornamenti frequenti. Finestra di contesto di grandi dimensioni possono inoltre aumentare i costi computazionali durante il caricamento.
- Dove è più utile CAG?
CAG è ideale per applicazioni statiche e a bassa latenza come chatbot per l'assistenza clienti, analisi documentale, assistenti sanitari, FAQ educative, richieste sulle policy HR e assistenti legali—ovunque la base di conoscenza cambi raramente e siano richieste risposte istantanee.
Inizia a creare workflow AI efficienti
Scopri la potenza di CAG e degli altri strumenti AI con FlowHunt. Prenota una demo per vedere come le soluzioni cache-augmented e a bassa latenza possono trasformare la tua azienda.