Cache Augmented Generation (CAG)

Cache Augmented Generation (CAG) verhoogt de efficiëntie van grote taalmodellen door statische kennis vooraf te laden, latentie te verminderen en de architectuur te vereenvoudigen voor statische, toepassingen met lage latentie.

Wat is Cache Augmented Generation (CAG)?

Cache Augmented Generation (CAG) is een nieuwe benadering om de prestaties en efficiëntie van grote taalmodellen (LLM’s) te verbeteren door gebruik te maken van vooraf geladen kennis in de vorm van vooraf berekende key-value (KV) caches.

In tegenstelling tot Retrieval Augmented Generation (RAG), dat tijdens de inferentie dynamisch externe kennis ophaalt, elimineert CAG de ophaalstappen volledig door alle relevante kennis direct in het uitgebreide contextvenster van het model te embedden vóór de inferentie. Deze vooraf-laadstrategie stelt LLM’s in staat om antwoorden te genereren met behulp van de vooraf berekende informatie, waardoor de latentie aanzienlijk wordt verminderd en de systeemarchitectuur wordt vereenvoudigd.

Door de verwerkte kennis op te slaan in een key-value cache, zorgt CAG ervoor dat het model direct toegang heeft tot de benodigde context voor het beantwoorden van vragen. Deze aanpak is vooral voordelig in scenario’s waar de kennisbron statisch is, relatief klein, of wanneer lage latentie prioriteit heeft.

Hoe werkt CAG?

CAG werkt via drie primaire fasen:

1. Externe kennis vooraf laden

  • Alle relevante documenten of datasets worden vooraf in het contextvenster van het model geladen vóór de inferentie.

  • De vooraf geladen inhoud wordt verwerkt tot een key-value (KV) cache, waarbij de interne representatie van de kennis door het model wordt vastgelegd. Bijvoorbeeld:

    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
    

Deze stap zorgt ervoor dat het model direct toegang heeft tot de voorbewerkte kennis, waardoor realtime ophalen overbodig wordt.

2. Inferentie met vooraf berekende cache

  • Wanneer er een vraag wordt gesteld, wordt de vooraf berekende KV-cache gecombineerd met de invoer van de vraag.

  • Het model genereert een antwoord uitsluitend op basis van de gecachte kennis en de vraag, zonder extra berekeningen voor kennisophaling. Bijvoorbeeld:

    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. Cachebeheer

  • Naarmate nieuwe vragen worden verwerkt, groeit de cache. Een resetmechanisme snijdt de cache terug naar de oorspronkelijke lengte om de prestaties te behouden en ervoor te zorgen dat volgende vragen worden geëvalueerd binnen de bedoelde context. Voorbeeld van cache-reset:

    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, :]
    

Belangrijkste voordelen van CAG

  1. Lage latentie
    Omdat realtime ophalen niet nodig is, biedt CAG snellere reactietijden vergeleken met RAG. Dit maakt het ideaal voor tijdkritische toepassingen.

  2. Verbeterde nauwkeurigheid
    Door alle relevante documenten vooraf te laden, zorgt CAG ervoor dat het model een uitgebreide dataset verwerkt, wat het risico op contexthiaten of ophaalfouten vermindert.

  3. Vereenvoudigde architectuur
    In tegenstelling tot RAG, dat een complexe ophaalpijplijn vereist, is de architectuur van CAG gestroomlijnd, waardoor systeemcomplexiteit en onderhoudslast afnemen.

  4. Efficiëntie op schaal
    Zodra de kennis is vooraf geladen en gecachet, worden volgende vragen verwerkt met minimale computationele overhead, waardoor CAG efficiënt is voor herhaalde vragen binnen hetzelfde kennisdomein.

Beperkingen van CAG

  1. Grootte van het contextvenster
    CAG is afhankelijk van het contextvenster van het model om kennis vooraf te laden. Huidige LLM’s ondersteunen contextvensters tot 128.000 tokens, wat de hoeveelheid kennis die vooraf kan worden geladen beperkt.

  2. Grootte van de kennisbron
    CAG is het meest geschikt voor statische en beheersbare kennisbronnen. Voor grote of dynamische datasets kan het model moeite hebben om alle relevante informatie in het contextvenster te passen.

  3. Statische kennis
    CAG gaat ervan uit dat de kennisbron tijdens de inferentie ongewijzigd blijft. Het is minder effectief voor gebruikssituaties die realtime updates of dynamische kennisintegratie vereisen.

  4. Kostenimplicaties
    Grote contextvensters verhogen de computationele kosten tijdens het vooraf laden, waardoor CAG minder economisch wordt voor scenario’s met frequente updates of wijzigingen in de kennisbron.

Hoe wordt CAG gebruikt?

Praktische toepassingen

CAG wordt vaak toegepast in scenario’s waar de kennisbron statisch is, beheersbaar van formaat, en lage latentie cruciaal is:

  • Klantenservice-chatbots
    Voorbeeld: Veelvoorkomende stappen voor probleemoplossing voor softwareproducten vooraf laden om directe antwoorden aan gebruikers te geven.
    Voordeel: Voorkomt ophaalfouten en versnelt de reactietijd.

  • Documentanalyse
    Voorbeeld: Financiële instellingen die kwartaalrapporten analyseren of juridische kantoren die regelgeving opvragen.
    Voordeel: Zorgt voor consistente en nauwkeurige antwoorden door alle relevante documenten in het model te laden.

  • Zorgassistenten
    Voorbeeld: Medische richtlijnen vooraf laden om patiëntvragen te ondersteunen.
    Voordeel: Behoudt continuïteit over meerdere interacties en waarborgt correcte verwijzingen.

  • Educatie en training
    Voorbeeld: Veelgestelde vragen beantwoorden in bedrijfsopleidingsprogramma’s.
    Voordeel: Vereenvoudigt de implementatie en zorgt voor consistente antwoorden.

Vergelijking met Retrieval Augmented Generation (RAG)

KenmerkCAGRAG
KennisafhandelingLaadt kennis vooraf in het contextvenster.Haalt kennis dynamisch op tijdens runtime.
SysteemcomplexiteitVereenvoudigd, geen ophaalpijplijn nodig.Vereist extra componenten voor kennisophaling.
LatentieLaag, omdat ophaalstappen worden geëlimineerd.Hoger door realtime ophaalprocessen.
SchaalbaarheidBeperkt door de grootte van het contextvenster.Schaalbaar met grote, dynamische datasets.
FoutgevoeligheidGeen ophaalfouten.Gevoelig voor fouten bij ophalen en rangschikken.
Beste gebruikssituatiesStatische, toepassingen met lage latentie.Dynamische, grote of vaak bijgewerkte taken.

Voorbeelden van gebruikssituaties

CAG in de praktijk

  1. HR-systemen
    Een bedrijf gebruikt CAG om personeelsbeleid vooraf te laden in het model. Werknemers kunnen het systeem raadplegen over specifieke richtlijnen en krijgen direct antwoord.

  2. Juridische assistentie
    Een juridisch assistent laadt relevante jurisprudentie vooraf in het contextvenster van het model om snel antwoorden op juridische vragen te geven zonder een ophaalsysteem te gebruiken.

  3. Klantenservice
    De chatbot van een SaaS-product gebruikt CAG om veelgestelde vragen en probleemoplossingsgidsen vooraf te laden, zodat klantinteracties soepel en snel verlopen.

RAG voor dynamische scenario’s

  1. Nieuwsaggregatie
    Een nieuwsapp gebruikt RAG om de nieuwste artikelen op te halen en samen te vatten, waarbij dynamisch de meest relevante informatie voor gebruikersvragen wordt gezocht.

  2. E-commerce zoekopdrachten
    RAG wordt gebruikt om productinformatie en beschikbaarheid op te halen uit een grote en vaak bijgewerkte catalogus.

  3. Onderzoeksplatforms
    Een wetenschappelijk onderzoeksplatform gebruikt RAG om relevante papers en studies op te halen uit grote externe databases.

Implementatievoorbeeld: kennis vooraf laden in Python

Onderstaand Python-codevoorbeeld toont hoe je kennis kunt vooraf laden in een model voor 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

Dit vooraf-laadmechanisme zorgt ervoor dat het model vragen verwerkt zonder externe kennisophaling, wat efficiënte prestaties met lage latentie mogelijk maakt.

Wanneer gebruik je CAG?

  1. Statische kennisbronnen
    Ideaal voor gevallen waarin de kennisbron waarschijnlijk niet vaak verandert.

  2. Toepassingen met lage latentie
    Geschikt voor klantenservice, educatie of zorgsystemen waar snelle antwoorden noodzakelijk zijn.

  3. Kosteneffectieve scenario’s
    Voordelig wanneer de vooraf geladen kennis consistent blijft over meerdere vragen, wat computationele overhead vermindert.

CAG is een efficiënt alternatief voor RAG bij taken die snelheid, eenvoud en consistentie vereisen. Het is echter beperkt door de grootte en het statische karakter van de kennisbron.

Onderzoek naar Cache Augmented Generation (CAG)

1. Adaptive Contextual Caching for Mobile Edge Large Language Model Service

Auteurs: Guangyuan Liu, Yinqiu Liu, Jiacheng Wang, Hongyang Du, Dusit Niyato, Jiawen Kang, Zehui Xiong

Dit artikel behandelt de uitdagingen bij mobiele edge-implementaties van grote taalmodellen (LLM’s), zoals beperkte rekenkracht en hoge ophaallatentie. Het stelt een Adaptive Contextual Caching (ACC)-framework voor, dat deep reinforcement learning (DRL) gebruikt om vervangingsbeleid voor de cache te optimaliseren op basis van gebruikerscontext, documentgelijkenis en cache-miss overhead. Experimentele resultaten tonen aan dat ACC na 11 trainingsrondes meer dan 80% cache-hitrate behaalt, wat de ophaallatentie tot 40% vermindert vergeleken met traditionele methoden. Bovendien minimaliseert het de lokale cache-overhead tot 55%, waardoor het geschikt is voor schaalbare, LLM-diensten met lage latentie in omgevingen met beperkte middelen. Het werk benadrukt het potentieel van ACC om de efficiëntie van edge-LLM-systemen te verbeteren.
Lees het artikel hier

2. Towards More Economical Context-Augmented LLM Generation by Reusing Stored KV Cache

Auteurs: Hanchen Li, Yuhan Liu, Yihua Cheng, Kuntai Du, Junchen Jiang

Deze studie onderzoekt het hergebruik van Key-Value (KV) caches om prefill-vertragingen in LLM-toepassingen te verminderen, met name bij herhaalde invoerteksten. Er wordt gekeken of dergelijk cache-hergebruik ook economisch haalbaar kan zijn bij gebruik van publieke clouddiensten voor opslag en verwerking. De auteurs stellen een gevalideerd analytisch model voor om de cloudkosten (in rekenkracht, opslag en netwerk) te beoordelen van het opslaan en hergebruiken van KV-caches onder verschillende werkbelastingparameters. De studie toont aan dat het hergebruiken van KV-caches zowel vertraging als cloudkosten bespaart bij werkstromen met lange contexten, en moedigt verder werk aan aan meer economische context-augmented LLM-systemen.
Lees het artikel hier

3. MPIC: Position-Independent Multimodal Context Caching System for Efficient MLLM Serving

Auteurs: Shiju Zhao, Junhao Hu, Rongxiao Huang, Jiaqi Zheng, Guihai Chen

Dit artikel introduceert MPIC, een Position-Independent Multimodal Context Caching-systeem, gericht op het aanpakken van inefficiënties bij multimodale grote taalmodel-inferentie (MLLM). Traditionele systemen berekenen de hele KV-cache opnieuw, zelfs bij kleine contextverschillen, wat leidt tot inefficiënties. MPIC biedt een positie-onafhankelijk cachesysteem dat KV-caches lokaal of op afstand opslaat en parallel cacheberekening en -laden tijdens de inferentie uitvoert. Geïntegreerde hergebruik- en herberekeningsmechanismen beperken nauwkeurigheidsverlies en behalen tot 54% reductie in responstijd vergeleken met bestaande methoden. Dit werk benadrukt het potentieel voor verbeterde efficiëntie bij multimodale LLM-serversystemen.
Lees het artikel hier

Veelgestelde vragen

Wat is Cache Augmented Generation (CAG)?

Cache Augmented Generation (CAG) is een methode die de prestaties van grote taalmodellen (LLM's) verbetert door statische kennis vooraf te laden in een vooraf berekende key-value (KV) cache. In tegenstelling tot Retrieval Augmented Generation (RAG), dat externe kennis tijdens runtime ophaalt, embedt CAG alle relevante informatie vooraf, waardoor latentie wordt verminderd en de AI-systeemarchitectuur wordt vereenvoudigd.

Hoe verschilt CAG van RAG?

CAG laadt alle benodigde kennis vooraf in het contextvenster van het model vóór de inferentie en elimineert de noodzaak voor realtime ophalen, wat zorgt voor een lage latentie. RAG daarentegen haalt relevante informatie dynamisch op tijdens runtime, wat kan leiden tot ophaalfouten en hogere latentie, maar is beter geschikt voor dynamische of vaak bijgewerkte kennisbronnen.

Wat zijn de voordelen van het gebruik van CAG?

Belangrijke voordelen van CAG zijn onder andere lage latentie, verbeterde nauwkeurigheid door uitgebreide vooraf laden, een vereenvoudigde systeemarchitectuur en efficiëntie voor herhaalde vragen binnen statische kennisdomeinen.

Wat zijn de beperkingen van CAG?

CAG wordt beperkt door de maximale grootte van het contextvenster van het model (momenteel tot 128.000 tokens), is het meest geschikt voor statische en beheersbare kennisbronnen en is minder effectief voor dynamische datasets of scenario's die frequente updates vereisen. Grote contextvensters kunnen ook de rekenkosten tijdens het vooraf laden verhogen.

Waar is CAG het meest nuttig?

CAG is ideaal voor statische, toepassingen met lage latentie zoals klantenservice-chatbots, documentanalyse, zorgassistenten, educatieve FAQ's, HR-beleidvragen en juridische assistenten—overal waar de kennisbron zelden verandert en directe antwoorden nodig zijn.

Begin met het bouwen van efficiënte AI-workflows

Ervaar de kracht van CAG en andere AI-tools met FlowHunt. Plan een demo in om te zien hoe oplossingen met lage latentie en cache-ondersteuning uw bedrijf kunnen transformeren.

Meer informatie