Cache Augmented Generation (CAG)

Cache Augmented Generation (CAG) øker effektiviteten til store språkmodeller ved å forhåndslaste statisk kunnskap, redusere ventetid og forenkle arkitekturen for statiske, lavlatens-oppgaver.

Hva er Cache Augmented Generation (CAG)?

Cache Augmented Generation (CAG) er en ny tilnærming for å forbedre ytelsen og effektiviteten til store språkmodeller (LLM) ved å utnytte forhåndslastet kunnskap i form av forhåndsberegnede nøkkel-verdi (KV) cacher.

I motsetning til Retrieval Augmented Generation (RAG), som dynamisk henter ekstern kunnskap under inferens, eliminerer CAG henteprosessen fullstendig ved å legge all relevant kunnskap direkte inn i modellens utvidede kontekstvindu før inferens. Denne forhåndslastingen gjør at LLM-er kan generere svar basert på forhåndsberegnet informasjon, noe som betydelig reduserer ventetiden og forenkler systemarkitekturen.

Ved å lagre den bearbeidede kunnskapen i en nøkkel-verdi-cache, sikrer CAG at modellen umiddelbart har tilgang til nødvendig kontekst for å besvare forespørsler. Denne tilnærmingen er spesielt fordelaktig i situasjoner hvor kunnskapsbasen er statisk, relativt liten, eller når lav ventetid er en prioritet.

Hvordan fungerer CAG?

CAG opererer gjennom tre hovedfaser:

1. Ekstern kunnskapsforhåndslasting

  • Alle relevante dokumenter eller datasett forhåndslastes inn i modellens kontekstvindu før inferens.

  • Det forhåndslastede innholdet behandles til en nøkkel-verdi (KV) cache, som fanger modellens interne representasjon av kunnskapen. For eksempel:

    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
    

Dette trinnet sikrer at modellen har umiddelbar tilgang til den bearbeidede kunnskapen, og hopper over behovet for sanntidshenting.

2. Inferens med forhåndsberegnet cache

  • Når en forespørsel kommer, kombineres den forhåndsberegnede KV-cachen med forespørselsinputtet.

  • Modellen genererer et svar utelukkende basert på den bufrede kunnskapen og forespørselen, uten ekstra beregninger for kunnskapshenting. For eksempel:

    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. Cache-håndtering

  • Etter hvert som nye forespørsler behandles, vokser cachen. En tilbakestillingsmekanisme kutter cachen tilbake til opprinnelig lengde for å opprettholde ytelsen og sikre at påfølgende forespørsler evalueres innenfor den tiltenkte konteksten. Eksempel på cache-tilbakestilling:

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

Viktige fordeler med CAG

  1. Lav ventetid
    Siden det ikke er behov for sanntidshenting, gir CAG raskere responstid enn RAG. Dette gjør den ideell for tidssensitive applikasjoner.

  2. Forbedret nøyaktighet
    Ved å forhåndslaste alle relevante dokumenter, sørger CAG for at modellen bearbeider et komplett datasett, noe som reduserer risikoen for konteksttap eller henterfeil.

  3. Forenklet arkitektur
    I motsetning til RAG, som krever en kompleks hente-pipeline, er CAGs arkitektur strømlinjeformet, noe som reduserer systemkompleksitet og vedlikeholdsbehov.

  4. Effektivitet i skala
    Når kunnskapen først er forhåndslastet og bufret, behandles påfølgende forespørsler med minimal beregningsmessig belastning, noe som gjør CAG effektiv for gjentatte forespørsler innenfor samme kunnskapsdomene.

Begrensninger med CAG

  1. Størrelse på kontekstvindu
    CAG er avhengig av modellens kontekstvindu for å forhåndslaste kunnskapen. Nåværende LLM-er støtter kontekstvinduer opptil 128 000 tokens, noe som begrenser mengden kunnskap som kan forhåndslastes.

  2. Størrelse på kunnskapsbase
    CAG egner seg best for statiske og håndterbare kunnskapsbaser. For store eller dynamiske datasett kan det være utfordrende å få plass til all relevant informasjon i kontekstvinduet.

  3. Statisk kunnskap
    CAG forutsetter at kunnskapsbasen er uendret under inferens. Den er mindre egnet for brukstilfeller som krever sanntidsoppdateringer eller dynamisk kunnskapsintegrasjon.

  4. Kostnadsimplikasjoner
    Store kontekstvinduer øker de beregningsmessige kostnadene ved forhåndslasting, noe som gjør CAG mindre økonomisk for scenarier med hyppige oppdateringer eller endringer i kunnskapsbasen.

Hvordan brukes CAG?

Praktiske bruksområder

CAG brukes ofte i scenarier hvor kunnskapsbasen er statisk, håndterbar i størrelse, og lav ventetid er kritisk:

  • Kundestøtte-chatbot
    Eksempel: Forhåndslasting av vanlige feilsøkingstrinn for programvareprodukter for å gi umiddelbare svar til brukerne.
    Fordel: Eliminerer henterfeil og gir raskere responstid.

  • Dokumentanalyse
    Eksempel: Finansinstitusjoner som analyserer kvartalsrapporter eller advokatfirmaer som søker i regelverksdokumenter.
    Fordel: Sikrer konsistente og nøyaktige svar ved å forhåndslaste alle relevante dokumenter i modellen.

  • Helsehjelpsassistenter
    Eksempel: Forhåndslasting av medisinske retningslinjer for å svare på pasientspørsmål.
    Fordel: Opprettholder sammenheng i samtaler over flere meldinger og sikrer korrekt referanse.

  • Utdanning og opplæring
    Eksempel: Besvare vanlige spørsmål i bedriftsopplæringsprogrammer.
    Fordel: Forenkler utrulling og gir konsistente svar.

Sammenligning med Retrieval Augmented Generation (RAG)

FunksjonCAGRAG
KunnskapshåndteringForhåndslaster kunnskap i kontekstvinduet.Henter kunnskap dynamisk under kjøring.
SystemkompleksitetForenklet, ingen hente-pipeline nødvendig.Krever ekstra komponenter for henting.
VentetidLav, da henteprosessene er eliminert.Høyere på grunn av sanntidshenting.
SkalerbarhetBegrenset av kontekstvinduets størrelse.Skalerer godt med store, dynamiske datasett.
FeilrisikoIngen hente-feil.Utsatt for hente-/rangering-feil.
Beste brukstilfellerStatisk, lavlatens-oppgaver.Dynamiske, store eller ofte oppdaterte oppgaver.

Eksempler på brukstilfeller

CAG i praksis

  1. HR-systemer
    Et selskap bruker CAG til å forhåndslaste personalretningslinjer i modellen. Ansatte kan spørre systemet om spesifikke retningslinjer, og får svar umiddelbart.

  2. Juridisk assistanse
    En juridisk assistent forhåndslaster relevante dommer inn i modellens kontekst for å gi raske svar på juridiske spørsmål uten å bruke et hentesystem.

  3. Kundeservice
    En SaaS-produkts chatbot bruker CAG til å forhåndslaste vanlige spørsmål og feilsøkingsveiledninger, noe som sikrer raske og smidige kundeinteraksjoner.

RAG for dynamiske scenarier

  1. Nyhetsaggregator
    En nyhetsapp bruker RAG til å hente og oppsummere de siste artiklene, og henter dynamisk den mest relevante informasjonen til brukerens forespørsel.

  2. E-handelssøk
    RAG brukes for å hente produktdetaljer og tilgjengelighet fra en stor og ofte oppdatert katalog.

  3. Forskningsplattformer
    En vitenskapelig forskningsplattform benytter RAG for å hente relevante artikler og studier fra store eksterne databaser.

Implementeringseksempel: Forhåndslasting av kunnskap i Python

Følgende Python-kodesnutt viser hvordan man forhåndslaster kunnskap i en modell for 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

Denne forhåndslastingsmekanismen sikrer at modellen kan behandle forespørsler uten å måtte hente ekstern informasjon, og gir effektiv og lavlatens ytelse.

Når bør du bruke CAG

  1. Statisk kunnskapsbase
    Ideelt når kunnskapsbasen sjelden endres.

  2. Lavlatensapplikasjoner
    Passer for kundestøtte, utdanning eller helsesystemer hvor raske svar er nødvendige.

  3. Kostnadseffektive scenarier
    Fordelaktig når forhåndslastet kunnskap forblir konsistent over flere forespørsler, noe som reduserer beregningsbelastningen.

CAG er et effektivt alternativ til RAG for oppgaver der fart, enkelhet og konsistens er viktig. Begrensningen er størrelsen og den statiske naturen til kunnskapsbasen.

Forskning på Cache Augmented Generation (CAG)

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

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

Denne artikkelen tar for seg utfordringer i mobile edge-distribusjoner av store språkmodeller (LLM), slik som begrensede ressurser og høy henter-latens. Den foreslår et Adaptive Contextual Caching (ACC)-rammeverk som bruker dyp forsterkningslæring (DRL) til å optimalisere cache-utskiftningsstrategier basert på brukerkontekst, dokumentsimilaritet og cache-feil-belastning. Tester viser at ACC oppnår over 80 % cache-treffrate etter 11 treningssykluser, og reduserer henter-latens med opptil 40 % sammenlignet med tradisjonelle metoder. I tillegg minimeres lokal cache-belastning med opptil 55 %, noe som gjør ACC egnet for skalerbare, lavlatens LLM-tjenester i ressursbegrensede miljøer. Studien fremhever potensialet til ACC for å øke effektiviteten i edge-LLM-systemer.
Les artikkelen her

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

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

Denne studien utforsker gjenbruk av nøkkel-verdi (KV) cacher for å redusere forsinkelser ved forfylling i LLM-applikasjoner, spesielt for gjentatte inndata. Den undersøker også hvorvidt slik cache-gjenbruk er økonomisk gunstig når man bruker offentlige skytjenester for lagring og prosessering. Forfatterne foreslår en validert analytisk modell for å vurdere skykostnader (beregning, lagring og nettverk) for lagring og gjenbruk av KV-cacher under ulike arbeidsbelastninger. Studien viser at KV cache-gjenbruk sparer både tid og kostnader for arbeidsmengder med lange kontekster, og oppmuntrer til videre innsats for å bygge mer økonomiske kontekst-forsterkede LLM-systemer.
Les artikkelen her

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

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

Denne artikkelen introduserer MPIC, et posisjonsuavhengig multimodalt kontekst-caching-system, utviklet for å løse ineffektivitet i inferens med multimodale store språkmodeller (MLLM). Tradisjonelle systemer må beregne hele KV-cachen på nytt selv ved små kontekstendringer, noe som fører til ineffektivitet. MPIC tilbyr et posisjonsuavhengig cachesystem som lagrer KV-cacher lokalt eller eksternt og parallelliserer cache-beregning og lasting under inferens. Integrerte gjenbruks- og rekalkuleringsmekanismer motvirker nøyaktighetstap og gir opptil 54 % reduksjon i responstid sammenlignet med eksisterende metoder. Arbeidet viser potensialet for økt effektivitet i multimodale LLM-tjenester.
Les artikkelen her

Vanlige spørsmål

Hva er Cache Augmented Generation (CAG)?

Cache Augmented Generation (CAG) er en metode som forbedrer ytelsen til store språkmodeller (LLM) ved å forhåndslaste statisk kunnskap i en forhåndsberegnet nøkkel-verdi (KV) cache. I motsetning til Retrieval Augmented Generation (RAG), som henter ekstern kunnskap i sanntid, legger CAG inn all relevant informasjon på forhånd, noe som reduserer ventetid og forenkler AI-systemets arkitektur.

Hvordan skiller CAG seg fra RAG?

CAG forhåndslaster all nødvendig kunnskap inn i modellens kontekstvindu før inferens og eliminerer behovet for sanntidshenting, noe som sikrer lav ventetid. RAG, derimot, henter relevant informasjon dynamisk under kjøring, noe som kan føre til henterfeil og høyere ventetid, men passer bedre for dynamiske eller ofte oppdaterte kunnskapsbaser.

Hva er fordelene med å bruke CAG?

Viktige fordeler med CAG inkluderer lav ventetid, forbedret nøyaktighet takket være omfattende forhåndslasting, forenklet systemarkitektur og effektivitet for gjentatte forespørsler innenfor statiske kunnskapsområder.

Hva er begrensningene til CAG?

CAG er begrenset av maksimal størrelse på modellens kontekstvindu (for tiden opptil 128 000 tokens), fungerer best for statiske og håndterbare kunnskapsbaser og er mindre effektiv for dynamiske datasett eller scenarier som krever hyppige oppdateringer. Store kontekstvinduer kan også øke de beregningsmessige kostnadene ved forhåndslasting.

Hvor er CAG mest nyttig?

CAG er ideell for statiske, lavlatensapplikasjoner som kundestøtte-chatboter, dokumentanalyse, helsehjelpsassistenter, FAQ for opplæring, HR-spørsmål og juridiske assistenter—overalt hvor kunnskapsbasen endres sjelden og umiddelbare svar trengs.

Start å bygge effektive AI-arbeidsflyter

Opplev kraften til CAG og andre AI-verktøy med FlowHunt. Book en demo for å se hvordan løsninger med lav ventetid og cache-forsterkning kan transformere virksomheten din.

Lær mer

Retrieval Augmented Generation (RAG)
Retrieval Augmented Generation (RAG)

Retrieval Augmented Generation (RAG)

Retrieval Augmented Generation (RAG) er et avansert AI-rammeverk som kombinerer tradisjonelle informasjonshentingssystemer med generative store språkmodeller (L...

4 min lesing
RAG AI +4
Spørsmål og svar
Spørsmål og svar

Spørsmål og svar

Spørsmål og svar med Retrieval-Augmented Generation (RAG) kombinerer informasjonsinnhenting og naturlig språk-generering for å forbedre store språkmodeller (LLM...

5 min lesing
AI Question Answering +4
Henting vs Cache-forsterket generering (CAG vs. RAG)
Henting vs Cache-forsterket generering (CAG vs. RAG)

Henting vs Cache-forsterket generering (CAG vs. RAG)

Oppdag de viktigste forskjellene mellom Retrieval-Augmented Generation (RAG) og Cache-Augmented Generation (CAG) innen AI. Lær hvordan RAG henter sanntidsinform...

5 min lesing
RAG CAG +5