Cache Augmented Generation (CAG)

Cache Augmented Generation (CAG) zvyšuje efektivitu velkých jazykových modelů přednahráním statických znalostí, snižuje latenci a zjednodušuje architekturu pro statické úlohy s nízkou latencí.

Co je Cache Augmented Generation (CAG)?

Cache Augmented Generation (CAG) je nový přístup ke zvýšení výkonu a efektivity velkých jazykových modelů (LLM) prostřednictvím využití přednahraných znalostí ve formě předpočítaných key-value (KV) cache.

Na rozdíl od Retrieval Augmented Generation (RAG), která při inferenci dynamicky získává externí znalosti, CAG eliminuje kroky vyhledávání tím, že všechny relevantní znalosti přímo vloží do rozšířeného kontextového okna modelu před inferencí. Tato strategie přednahrání umožňuje LLM generovat odpovědi pomocí předpočítaných informací, což výrazně snižuje latenci a zjednodušuje architekturu systému.

Uložením zpracovaných znalostí do key-value cache CAG zajišťuje, že model má okamžitý přístup k potřebnému kontextu pro zodpovídání dotazů. Tento přístup je zvláště výhodný v situacích, kde je znalostní báze statická, relativně malá nebo je prioritou nízká latence.

Jak CAG funguje?

CAG pracuje ve třech hlavních fázích:

1. Přednahrání externích znalostí

  • Všechny relevantní dokumenty nebo datasety jsou před inferencí nahrány do kontextového okna modelu.

  • Přednahraný obsah je zpracován do key-value (KV) cache, která zachycuje vnitřní reprezentaci znalostí modelem. Například:

    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
    

Tento krok zajišťuje, že model má okamžitý přístup k předzpracovaným znalostem bez nutnosti získávání v reálném čase.

2. Inference s předpočítanou cache

  • Při dotazu je předpočítaná KV cache zkombinována se vstupem dotazu.

  • Model generuje odpověď pouze na základě cache a dotazu, bez dalších výpočtů pro získání znalostí. Například:

    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. Správa cache

  • Jak jsou zpracovávány nové dotazy, cache narůstá. Resetovací mechanismus zkracuje cache zpět na původní délku, aby byla zachována výkonnost a následné dotazy byly vyhodnocovány v zamýšleném kontextu. Příklad resetu 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, :]
    

Klíčové výhody CAG

  1. Nízká latence
    Díky absenci získávání v reálném čase nabízí CAG rychlejší odezvy než RAG. Je tedy ideální pro časově kritické aplikace.

  2. Vyšší přesnost
    Přednahráním všech relevantních dokumentů CAG zajišťuje, že model zpracovává kompletní dataset, což snižuje riziko nedostatků v kontextu nebo chyb při vyhledávání.

  3. Zjednodušená architektura
    Na rozdíl od RAG, který vyžaduje složitou vyhledávací pipeline, má CAG zjednodušenou architekturu, což snižuje složitost systému a nároky na údržbu.

  4. Efektivita ve větším měřítku
    Jakmile jsou znalosti přednahrány a uloženy v cache, následné dotazy jsou zpracovávány s minimálními výpočetními náklady, což dělá CAG efektivní pro opakované dotazy v rámci stejné znalostní domény.

Omezení CAG

  1. Velikost kontextového okna
    CAG spoléhá na kontextové okno modelu pro přednahrání znalostí. Současné LLM podporují kontextová okna do 128 000 tokenů, což omezuje množství znalostí, které lze přednahrát.

  2. Velikost znalostní báze
    CAG je nejvhodnější pro statické a zvládnutelné znalostní báze. U velkých nebo dynamických datasetů může mít model problém pojmout všechny relevantní informace do kontextového okna.

  3. Statické znalosti
    CAG předpokládá, že znalostní báze zůstává během inference nezměněná. Je méně vhodný pro případy vyžadující aktualizace v reálném čase nebo dynamickou integraci znalostí.

  4. Nákladovost
    Velká kontextová okna zvyšují výpočetní náklady při přednahrání, což činí CAG méně ekonomickým v situacích s častými aktualizacemi či změnami znalostní báze.

Jak se CAG používá?

Praktické aplikace

CAG se běžně používá tam, kde je znalostní báze statická, zvládnutelná svou velikostí a je klíčová nízká latence:

  • Chatboti pro zákaznickou podporu
    Příklad: Přednahrání běžných postupů pro řešení problémů se softwarem, aby uživatelé dostávali okamžité odpovědi.
    Výhoda: Odstraňuje chyby při vyhledávání a zrychluje odezvu.

  • Analýza dokumentů
    Příklad: Finanční instituce analyzující čtvrtletní zprávy nebo právní kanceláře dotazující regulační dokumenty.
    Výhoda: Zajišťuje konzistentní a přesné odpovědi přednahráním všech relevantních dokumentů do modelu.

  • Zdravotnické asistenty
    Příklad: Přednahrání lékařských doporučení pro odpovídání na dotazy pacientů.
    Výhoda: Udržuje kontinuitu v rámci vícekrokových dialogů a zajišťuje přesné odkazy.

  • Vzdělávání a školení
    Příklad: Odpovídání na často kladené dotazy v korporátních školicích programech.
    Výhoda: Zjednodušuje nasazení a zajišťuje konzistentní odpovědi.

Srovnání s Retrieval Augmented Generation (RAG)

VlastnostCAGRAG
Práce se znalostmiPřednahrává znalosti do kontextového okna.Dynamicky získává znalosti během běhu.
Složitost systémuZjednodušený, nepotřebuje vyhledávací pipeline.Vyžaduje další komponenty pro vyhledávání.
LatenceNízká, protože kroky vyhledávání odpadají.Vyšší kvůli vyhledávání v reálném čase.
ŠkálovatelnostOmezeno velikostí kontextového okna.Dobře škáluje s velkými, dynamickými datasety.
Rizika chybŽádné chyby při vyhledávání.Náchylný na chyby při vyhledávání a řazení.
Nejlepší použitíStatické, nízkolatenční úlohy.Dynamické, velké nebo často aktualizované úlohy.

Příklady použití

CAG v praxi

  1. HR systémy
    Firma používá CAG k přednahrání zaměstnaneckých politik do modelu. Zaměstnanci se mohou dotazovat na konkrétní směrnice a odpovědi jsou generovány okamžitě.

  2. Právní asistence
    Právní asistent přednahrává relevantní judikaturu do kontextu modelu, aby poskytoval rychlé odpovědi na právní dotazy bez použití vyhledávacího systému.

  3. Zákaznický servis
    Chatbot SaaS produktu využívá CAG k přednahrání FAQ a návodů na řešení problémů, což zajišťuje plynulé a rychlé zákaznické interakce.

RAG pro dynamické scénáře

  1. Agregace zpráv
    Zpravodajská aplikace používá RAG k získání a shrnutí nejnovějších článků a dynamicky vyhledává nejrelevantnější informace pro uživatelské dotazy.

  2. Vyhledávání v e-commerce
    RAG je využito ke zjišťování detailů o produktech a dostupnosti z velkého a často aktualizovaného katalogu.

  3. Výzkumné platformy
    Vědecká výzkumná platforma používá RAG k získávání relevantních článků a studií z velkých externích databází.

Příklad implementace: Přednahrání znalostí v Pythonu

Následující ukázka kódu v Pythonu demonstruje, jak přednahrát znalosti do modelu pro 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

Tento mechanismus přednahrání zajišťuje, že model zpracovává dotazy bez nutnosti externího vyhledávání, což umožňuje efektivní a nízkolatenční výkon.

Kdy použít CAG

  1. Statické znalostní báze
    Ideální tam, kde se znalostní báze pravděpodobně nebude často měnit.

  2. Nízkolatenční aplikace
    Vhodné pro zákaznickou podporu, vzdělávání nebo zdravotnické systémy, kde jsou nutné rychlé odpovědi.

  3. Ekonomicky výhodné scénáře
    Přínosné, když přednahrané znalosti zůstávají konzistentní napříč vícero dotazy, což snižuje výpočetní náročnost.

CAG je efektivní alternativou k RAG pro úlohy vyžadující rychlost, jednoduchost a konzistenci. Je však omezen velikostí a statickým charakterem znalostní báze.

Výzkum na téma Cache Augmented Generation (CAG)

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

Autoři: Guangyuan Liu, Yinqiu Liu, Jiacheng Wang, Hongyang Du, Dusit Niyato, Jiawen Kang, Zehui Xiong

Tento článek se zabývá výzvami v nasazení velkých jazykových modelů (LLM) na mobilním okraji, jako jsou omezené výpočetní zdroje a vysoká latence při vyhledávání. Navrhuje rámec Adaptive Contextual Caching (ACC), který využívá hluboké posilované učení (DRL) k optimalizaci politik obnovy cache s ohledem na uživatelský kontext, podobnost dokumentů a režii při chybě cache. Experimentální výsledky ukazují, že ACC dosahuje přes 80% hit-rate po 11 trénovacích epizodách a významně snižuje latenci vyhledávání až o 40 % oproti tradičním metodám. Dále minimalizuje režii lokální cache až o 55 %, což ho činí vhodným pro škálovatelné, nízkolatenční služby LLM v prostředích s omezenými zdroji. Práce zdůrazňuje potenciál ACC pro zvýšení efektivity edge LLM systémů.
Číst článek zde

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

Autoři: Hanchen Li, Yuhan Liu, Yihua Cheng, Kuntai Du, Junchen Jiang

Tato studie zkoumá opětovné využití Key-Value (KV) cache ke snížení zpoždění při předzpracování v LLM aplikacích, zejména u opakovaných vstupních textů. Zkoumá, zda takové opětovné využití cache může být ekonomicky výhodné při využití veřejných cloudových služeb pro úložiště a zpracování. Autoři navrhují ověřený analytický model pro posouzení cloudových nákladů (výpočet, úložiště a síť) na ukládání a opětovné využití KV cache napříč různými parametry zátěže. Studie ukazuje, že opětovné využití KV cache šetří jak zpoždění, tak cloudové náklady pro úlohy s dlouhým kontextem, což povzbuzuje k dalšímu rozvoji ekonomičtějších context-augmented LLM systémů.
Číst článek zde

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

Autoři: Shiju Zhao, Junhao Hu, Rongxiao Huang, Jiaqi Zheng, Guihai Chen

Tento článek představuje MPIC, systém pro pozicně nezávislé multimodální cache kontextu, zaměřený na řešení neefektivity při inferenci multimodálních velkých jazykových modelů (MLLM). Tradiční systémy opakovaně počítají celou KV cache i při malých rozdílech v kontextu, což vede k neefektivitě. MPIC nabízí pozicně nezávislý systém ukládání cache, který ukládá KV cache lokálně nebo vzdáleně a paralelizuje výpočty a načítání cache během inference. Integrované mechanismy pro opětovné použití a přepočítání zmírňují degradaci přesnosti a přitom dosahují až 54% snížení doby odezvy oproti stávajícím metodám. Tato práce poukazuje na možnosti zlepšené efektivity při servírování multimodálních LLM systémů.
Číst článek zde

Často kladené otázky

Co je Cache Augmented Generation (CAG)?

Cache Augmented Generation (CAG) je metoda, která zlepšuje výkon velkých jazykových modelů (LLM) přednahráním statických znalostí do předpočítané key-value (KV) cache. Na rozdíl od Retrieval Augmented Generation (RAG), která získává externí znalosti během běhu, CAG vkládá všechny relevantní informace předem, což snižuje latenci a zjednodušuje architekturu AI systému.

Jak se CAG liší od RAG?

CAG předem načte všechny potřebné znalosti do kontextového okna modelu před inferencí a eliminuje potřebu získávání informací v reálném čase, což zajišťuje nízkou latenci. Oproti tomu RAG získává relevantní informace dynamicky během běhu, což může způsobit chyby při vyhledávání a vyšší latenci, ale lépe se hodí pro dynamické nebo často aktualizované znalostní báze.

Jaké jsou výhody použití CAG?

Klíčové výhody CAG zahrnují nízkou latenci, vyšší přesnost díky komplexnímu přednahrání, zjednodušenou systémovou architekturu a efektivitu pro opakované dotazy v rámci statických znalostních domén.

Jaká jsou omezení CAG?

CAG je omezen velikostí kontextového okna modelu (aktuálně až 128 000 tokenů), je nejvhodnější pro statické a dobře spravovatelné znalostní báze a je méně efektivní pro dynamické datasety nebo scénáře vyžadující časté aktualizace. Velká kontextová okna mohou také zvýšit výpočetní náklady během přednahrání.

Kde je CAG nejvíce užitečný?

CAG je ideální pro statické, nízkolatenční aplikace jako jsou chatboti pro zákaznickou podporu, analýza dokumentů, zdravotnické asistenty, vzdělávací FAQ, dotazy na HR politiku a právní asistenty—všude tam, kde se znalostní báze mění zřídka a jsou potřeba okamžité odpovědi.

Začněte stavět efektivní AI workflow

Zažijte sílu CAG a dalších AI nástrojů s FlowHunt. Naplánujte si demo a zjistěte, jak nízkolatenční, cache-augmentovaná řešení mohou transformovat vaše podnikání.

Zjistit více

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

Retrieval Augmented Generation (RAG)

Retrieval Augmented Generation (RAG) je pokročilý AI framework, který kombinuje tradiční systémy pro vyhledávání informací s generativními velkými jazykovými mo...

3 min čtení
RAG AI +4
Retrieval vs Cache Augmented Generation (CAG vs. RAG)
Retrieval vs Cache Augmented Generation (CAG vs. RAG)

Retrieval vs Cache Augmented Generation (CAG vs. RAG)

Objevte klíčové rozdíly mezi Retrieval-Augmented Generation (RAG) a Cache-Augmented Generation (CAG) v AI. Zjistěte, jak RAG dynamicky vyhledává aktuální inform...

5 min čtení
RAG CAG +5
Odpovídání na otázky
Odpovídání na otázky

Odpovídání na otázky

Odpovídání na otázky s Retrieval-Augmented Generation (RAG) kombinuje vyhledávání informací a generování přirozeného jazyka za účelem vylepšení velkých jazykový...

5 min čtení
AI Question Answering +4