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
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.
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.
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.
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
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.
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.
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.
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)
| Funktion | CAG | RAG |
|---|
| Kunskapshantering | Förladdar kunskap i kontextfönstret. | Hämtar kunskap dynamiskt vid körning. |
| Systemkomplexitet | Förenklad, ingen återhämtningspipeline. | Kräver ytterligare komponenter för återhämtning. |
| Latens | Låg, eftersom återhämtningssteg elimineras. | Högre på grund av återhämtning i realtid. |
| Skalbarhet | Begränsad av kontextfönstrets storlek. | Skalbar för stora, dynamiska datamängder. |
| Felfaktorer | Inga återhämtningsfel. | Känslig för återhämtnings- och rankningsfel. |
| Bästa användningsfall | Statiska, låglatensuppgifter. | Dynamiska, stora eller ofta uppdaterade uppgifter. |
Exempel på användningsområden
CAG i praktiken
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.
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.
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
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.
E-handelssökning
RAG används för att hämta produktdetaljer och tillgänglighet från en stor och ofta uppdaterad katalog.
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?
Statiska kunskapsbaser
Idealiskt när kunskapsbasen sannolikt inte förändras ofta.
Låglatensapplikationer
Lämpligt för kundtjänst, utbildning eller vårdsystem där snabba svar krävs.
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