Cache Augmented Generation (CAG)

Cache Augmented Generation (CAG) ökar effektiviteten hos stora språkmodeller genom att förladda statisk kunskap, minska latensen och förenkla arkitekturen för statiska, låglatensuppgifter.

Vad är Cache Augmented Generation (CAG)?

Cache Augmented Generation (CAG) är ett nytt sätt att förbättra prestandan och effektiviteten hos stora språkmodeller (LLM) genom att utnyttja förladdad kunskap i form av förberäknade nyckel-värde (KV) cacher.

Till skillnad från Retrieval Augmented Generation (RAG), som dynamiskt hämtar extern kunskap under inferens, eliminerar CAG helt återhämtningssteget genom att bädda in all relevant kunskap direkt i modellens utökade kontextfönster före inferens. Denna förladdningsstrategi gör det möjligt för LLM:er att generera svar med hjälp av den förberäknade informationen, vilket avsevärt minskar latensen och förenklar systemarkitekturen.

Genom att lagra den bearbetade kunskapen i en nyckel-värde-cache säkerställer CAG att modellen har omedelbar tillgång till det nödvändiga sammanhanget för att besvara frågor. Detta tillvägagångssätt är särskilt fördelaktigt i situationer där kunskapsbasen är statisk, relativt liten eller där låg latens är prioritet.

Hur fungerar CAG?

CAG fungerar genom tre huvudfaser:

1. Extern kunskapsförladdning

  • Alla relevanta dokument eller datamängder förladdas i modellens kontextfönster innan inferens.

  • Det förladdade innehållet bearbetas till en nyckel-värde (KV) cache, som fångar modellens interna representation av kunskapen. Exempel:

    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
    

Detta steg säkerställer att modellen har omedelbar tillgång till den förbehandlade kunskapen och slipper behovet av återhämtning i realtid.

2. Inferens med förberäknad cache

  • När en fråga ställs kombineras den förberäknade KV-cachen med frågeinmatningen.

  • Modellen genererar ett svar enbart baserat på den cachade kunskapen och frågan, utan ytterligare beräkningar för kunskapsåterhämtning. Exempelvis:

    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-hantering

  • När nya frågor bearbetas växer cachen. En återställningsmekanism trunkerar cachen tillbaka till dess ursprungliga längd för att bibehålla prestanda och se till att efterföljande frågor utvärderas inom avsett sammanhang. Exempel på cachåterställning:

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

Viktiga fördelar med CAG

  1. Låg latens
    Eftersom det inte behövs någon återhämtning i realtid ger CAG snabbare svarstider jämfört med RAG. Detta gör det idealiskt för tidskritiska tillämpningar.

  2. Förbättrad noggrannhet
    Genom att förladda alla relevanta dokument säkerställer CAG att modellen behandlar en heltäckande datamängd, vilket minskar risken för sammanhangsglapp eller återhämtningsfel.

  3. Förenklad arkitektur
    Till skillnad från RAG, som kräver en komplex återhämtningspipeline, är CAG:s arkitektur strömlinjeformad och minskar systemkomplexitet och underhåll.

  4. Effektivitet i skala
    När kunskapen väl är förladdad och cachad bearbetas efterföljande frågor med minimal beräkningskostnad, vilket gör CAG effektivt för upprepade frågor inom samma kunskapsområde.

Begränsningar med CAG

  1. Kontextfönstrets storlek
    CAG är beroende av modellens kontextfönster för att förladda kunskap. Nuvarande LLM:er stöder kontextfönster upp till 128 000 token, vilket begränsar mängden kunskap som kan förladdas.

  2. Kunskapsbasens storlek
    CAG passar bäst för statiska och hanterbara kunskapsbaser. För stora eller dynamiska datamängder kan modellen ha svårt att rymma all relevant information i kontextfönstret.

  3. Statisk kunskap
    CAG förutsätter att kunskapsbasen förblir oförändrad under inferens. Det är mindre effektivt för användningsfall som kräver realtidsuppdateringar eller dynamisk kunskapsintegration.

  4. Kostnadsaspekter
    Stora kontextfönster ökar de beräkningsmässiga kostnaderna vid förladdning, vilket gör CAG mindre ekonomiskt för scenarier med frekventa uppdateringar eller förändringar i kunskapsbasen.

Hur används CAG?

Praktiska tillämpningar

CAG används vanligtvis i scenarier där kunskapsbasen är statisk, hanterbar i storlek och låg latens är avgörande:

  • Kundtjänstchatbots
    Exempel: Förladda vanliga felsökningssteg för mjukvaruprodukter för att ge omedelbara svar till användare.
    Fördel: Eliminerar återhämtningsfel och snabbar upp svarstiderna.

  • Dokumentanalys
    Exempel: Finansiella institutioner som analyserar kvartalsrapporter eller juristfirmor som söker i regulatoriska dokument.
    Fördel: Säkerställer konsekventa och korrekta svar genom att förladda alla relevanta dokument i modellen.

  • Vårdassistenter
    Exempel: Förladda medicinska riktlinjer för att hjälpa till med patientfrågor.
    Fördel: Bibehåller kontinuitet över flera dialogvändor och säkerställer korrekt referens.

  • Utbildning och träning
    Exempel: Besvara vanliga frågor i företagsutbildningsprogram.
    Fördel: Förenklar implementering och säkerställer konsekventa svar.

Jämförelser med Retrieval Augmented Generation (RAG)

FunktionCAGRAG
KunskapshanteringFörladdar kunskap i kontextfönstret.Hämtar kunskap dynamiskt vid körning.
SystemkomplexitetFörenklad, ingen återhämtningspipeline.Kräver ytterligare komponenter för återhämtning.
LatensLåg, eftersom återhämtningssteg elimineras.Högre på grund av återhämtning i realtid.
SkalbarhetBegränsad av kontextfönstrets storlek.Skalbar för stora, dynamiska datamängder.
FelfaktorerInga återhämtningsfel.Känslig för återhämtnings- och rankningsfel.
Bästa användningsfallStatiska, låglatensuppgifter.Dynamiska, stora eller ofta uppdaterade uppgifter.

Exempel på användningsområden

CAG i praktiken

  1. HR-system
    Ett företag använder CAG för att förladda personalpolicys i modellen. Anställda kan fråga systemet om specifika riktlinjer och få svar direkt.

  2. Juridisk assistans
    En juridisk assistent förladdar relevanta rättsfall i modellens kontext för att snabbt kunna ge svar på juridiska frågor utan att använda ett återhämtningssystem.

  3. Kundtjänst
    En SaaS-produkts chatbot använder CAG för att förladda vanliga frågor och felsökningsguider, vilket säkerställer smidiga och snabba kundinteraktioner.

RAG för dynamiska scenarier

  1. Nyhetsaggregering
    En nyhetsapp använder RAG för att hämta och sammanfatta de senaste artiklarna och dynamiskt ta fram den mest relevanta informationen för användarfrågor.

  2. E-handelssökning
    RAG används för att hämta produktdetaljer och tillgänglighet från en stor och ofta uppdaterad katalog.

  3. Forskningsplattformar
    En vetenskaplig forskningsplattform använder RAG för att hämta relevanta artiklar och studier från stora externa databaser.

Implementeringsexempel: Förladda kunskap i Python

Följande Python-kodsnutt visar hur man förladdar kunskap i en modell för 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

Denna förladdningsmekanism säkerställer att modellen behandlar frågor utan att kräva extern återhämtning, vilket möjliggör effektiv och låglatens prestanda.

När ska man använda CAG?

  1. Statiska kunskapsbaser
    Idealiskt när kunskapsbasen sannolikt inte förändras ofta.

  2. Låglatensapplikationer
    Lämpligt för kundtjänst, utbildning eller vårdsystem där snabba svar krävs.

  3. Kostnadseffektiva scenarier
    Fördelaktigt när den förladdade kunskapen förblir konsekvent över flera frågor och minskar beräkningskostnaden.

CAG är ett effektivt alternativ till RAG för uppgifter som kräver snabbhet, enkelhet och konsekvens. Dock är det begränsat av kunskapsbasens storlek och statiska natur.

Forskning om Cache Augmented Generation (CAG)

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

Författare: Guangyuan Liu, Yinqiu Liu, Jiacheng Wang, Hongyang Du, Dusit Niyato, Jiawen Kang, Zehui Xiong

Denna artikel tar upp utmaningar vid mobil edge-distribution av stora språkmodeller (LLM), såsom begränsade beräkningsresurser och hög återhämtningslatens. Den föreslår ett Adaptive Contextual Caching (ACC)-ramverk, som använder djup förstärkningsinlärning (DRL) för att optimera cache-utbytespolicyer genom att ta hänsyn till användarkontext, dokumentsimilaritet och cache-misskostnader. Experimentella resultat visar att ACC uppnår över 80 % cacheträff efter 11 träningsomgångar och minskar återhämtningslatensen med upp till 40 % jämfört med traditionella metoder. Dessutom minimeras den lokala cachebelastningen med upp till 55 %, vilket gör det lämpligt för skalbara, låglatens LLM-tjänster i resursbegränsade miljöer. Arbetet lyfter fram potentialen för ACC att öka effektiviteten i edge-LLM-system.
Läs artikeln här

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

Författare: Hanchen Li, Yuhan Liu, Yihua Cheng, Kuntai Du, Junchen Jiang

Denna studie undersöker återanvändning av nyckel-värde (KV) cacher för att minska fördröjningar i LLM-applikationer, särskilt för upprepade inmatningstexter. Den undersöker om sådan cacheåteranvändning även kan vara ekonomiskt fördelaktig när publika molntjänster används för lagring och bearbetning. Författarna föreslår en validerad analytisk modell för att bedöma molnkostnader (beräkning, lagring och nätverk) för att lagra och återanvända KV-cacher över olika arbetsbelastningsparametrar. Studien visar att återanvändning av KV-cache sparar både fördröjning och molnkostnader för arbetsbelastningar med långa sammanhang och uppmuntrar till ytterligare insatser för att bygga mer ekonomiska kontextförstärkta LLM-system.
Läs artikeln här

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

Författare: Shiju Zhao, Junhao Hu, Rongxiao Huang, Jiaqi Zheng, Guihai Chen

Denna artikel introducerar MPIC, ett positionsoberoende multimodalt kontext-cachingsystem, som syftar till att åtgärda ineffektivitet i multimodal LLM-inferens. Traditionella system räknar om hela KV-cachen även vid små skillnader i sammanhanget, vilket leder till ineffektivitet. MPIC erbjuder ett positionsoberoende cachingsystem som lagrar KV-cacher lokalt eller på distans och parallelliserar cacheberäkning och laddning under inferens. Integrerade återanvändnings- och omräkningsmekanismer minskar försämring av noggrannhet samtidigt som svarstiden minskar med upp till 54 % jämfört med befintliga metoder. Detta arbete belyser potentialen för förbättrad effektivitet i multimodala LLM-system.
Läs artikeln här

Vanliga frågor

Vad är Cache Augmented Generation (CAG)?

Cache Augmented Generation (CAG) är en metod som förbättrar prestandan hos stora språkmodeller (LLM) genom att förladda statisk kunskap i en förberäknad nyckel-värde (KV) cache. Till skillnad från Retrieval Augmented Generation (RAG), som hämtar extern kunskap i realtid, bäddar CAG in all relevant information i förväg, vilket minskar latensen och förenklar AI-systemets arkitektur.

Hur skiljer sig CAG från RAG?

CAG förladdar all nödvändig kunskap i modellens kontextfönster före inferens och eliminerar behovet av realtidsåterhämtning, vilket säkerställer låg latens. RAG, å andra sidan, hämtar relevant information dynamiskt vid körning, vilket kan medföra återhämtningsfel och högre latens, men passar bättre för dynamiska eller ofta uppdaterade kunskapsbaser.

Vilka är fördelarna med att använda CAG?

Viktiga fördelar med CAG inkluderar låg latens, förbättrad noggrannhet tack vare omfattande förladdning, förenklad systemarkitektur och effektivitet för upprepade frågor inom statiska kunskapsområden.

Vilka är begränsningarna med CAG?

CAG är begränsad av den maximala storleken på modellens kontextfönster (för närvarande upp till 128 000 token), passar bäst för statiska och hanterbara kunskapsbaser, och är mindre effektiv för dynamiska datamängder eller scenarier som kräver frekventa uppdateringar. Stora kontextfönster kan också öka de beräkningsmässiga kostnaderna vid förladdning.

Var är CAG mest användbart?

CAG är idealiskt för statiska, låglatensapplikationer som kundtjänstchatbots, dokumentanalys, vårdassistenter, utbildnings-FAQ:er, HR-policyfrågor och juridiska assistenter—överallt där kunskapsbasen ändras sällan och omedelbara svar behövs.

Börja bygga effektiva AI-arbetsflöden

Upplev kraften i CAG och andra AI-verktyg med FlowHunt. Boka en demo för att se hur låglatens, cache-förstärkta lösningar kan förändra ditt företag.

Lär dig mer

Retrieval kontra cacheförstärkt generering (CAG vs. RAG)
Retrieval kontra cacheförstärkt generering (CAG vs. RAG)

Retrieval kontra cacheförstärkt generering (CAG vs. RAG)

Upptäck de viktigaste skillnaderna mellan Retrieval-Augmented Generation (RAG) och Cache-Augmented Generation (CAG) inom AI. Lär dig hur RAG dynamiskt hämtar re...

5 min läsning
RAG CAG +5
Retrieval Augmented Generation (RAG)
Retrieval Augmented Generation (RAG)

Retrieval Augmented Generation (RAG)

Retrieval Augmented Generation (RAG) är en avancerad AI-ram som kombinerar traditionella informationssökningssystem med generativa stora språkmodeller (LLMs), v...

4 min läsning
RAG AI +4
LazyGraphRAG
LazyGraphRAG

LazyGraphRAG

LazyGraphRAG är ett innovativt tillvägagångssätt för Retrieval-Augmented Generation (RAG) som optimerar effektiviteten och minskar kostnader inom AI-drivet data...

4 min läsning
RAG AI +4