Cache Augmented Generation (CAG)

Cache Augmented Generation (CAG) zwiększa wydajność dużych modeli językowych dzięki wcześniejszemu załadowaniu statycznej wiedzy, zmniejszając opóźnienia i upraszczając architekturę dla zadań statycznych i niskolatencyjnych.

Czym jest Cache Augmented Generation (CAG)?

Cache Augmented Generation (CAG) to nowatorskie podejście do zwiększania wydajności i efektywności dużych modeli językowych (LLM) poprzez wykorzystanie wcześniejszego załadowania wiedzy w postaci wstępnie obliczonych pamięci podręcznych klucz-wartość (KV).

W przeciwieństwie do Retrieval Augmented Generation (RAG), która dynamicznie pobiera zewnętrzną wiedzę podczas generowania odpowiedzi, CAG całkowicie eliminuje kroki pobierania, osadzając całą istotną wiedzę bezpośrednio w rozszerzonym oknie kontekstowym modelu przed wnioskowaniem. Ta strategia załadunku umożliwia LLM generowanie odpowiedzi na podstawie wstępnie przetworzonych informacji, znacząco skracając czas reakcji i upraszczając architekturę systemu.

Przechowując przetworzoną wiedzę w pamięci podręcznej klucz-wartość, CAG zapewnia modelowi natychmiastowy dostęp do potrzebnego kontekstu przy odpowiadaniu na zapytania. To podejście jest szczególnie korzystne w sytuacjach, gdzie baza wiedzy jest statyczna, stosunkowo mała lub gdy kluczowa jest niska latencja.

Jak działa CAG?

CAG działa w trzech głównych fazach:

1. Wstępne załadowanie zewnętrznej wiedzy

  • Wszystkie istotne dokumenty lub zbiory danych są ładowane do okna kontekstowego modelu przed rozpoczęciem wnioskowania.

  • Załadowana treść jest przetwarzana do pamięci podręcznej klucz-wartość (KV), która odzwierciedla wewnętrzną reprezentację wiedzy przez model. Przykład:

    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
    

Ten krok zapewnia modelowi natychmiastowy dostęp do przetworzonej wiedzy, pomijając konieczność pobierania w czasie rzeczywistym.

2. Wnioskowanie z użyciem wstępnie obliczonej pamięci podręcznej

  • Gdy pojawia się zapytanie, wstępnie obliczona pamięć podręczna KV jest łączona z wejściem zapytania.

  • Model generuje odpowiedź wyłącznie na podstawie zapisanej wiedzy i zapytania, unikając dodatkowych obliczeń związanych z pobieraniem wiedzy. Przykład:

    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. Zarządzanie pamięcią podręczną

  • Wraz z obsługą kolejnych zapytań pamięć podręczna rośnie. Mechanizm resetowania skraca cache do oryginalnej długości, by utrzymać wydajność i zapewnić ocenę kolejnych zapytań w zamierzonym kontekście. Przykład resetowania 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, :]
    

Kluczowe zalety CAG

  1. Niska latencja
    Ponieważ nie jest wymagane pobieranie danych w czasie rzeczywistym, CAG zapewnia szybsze odpowiedzi niż RAG. To czyni go idealnym dla aplikacji wymagających natychmiastowych reakcji.

  2. Zwiększona dokładność
    Dzięki wcześniejszemu załadowaniu wszystkich istotnych dokumentów CAG gwarantuje, że model przetwarza pełny zbiór danych, ograniczając ryzyko braków kontekstu lub błędów pobierania.

  3. Uproszczona architektura
    W przeciwieństwie do RAG, które wymaga złożonego pipeline’u pobierania, CAG upraszcza architekturę systemu, zmniejszając złożoność i koszty utrzymania.

  4. Wydajność w skali
    Po załadowaniu i zapisaniu wiedzy w pamięci podręcznej, kolejne zapytania są obsługiwane z minimalnym narzutem obliczeniowym, co czyni CAG efektywnym przy powtarzalnych zapytaniach w tej samej domenie wiedzy.

Ograniczenia CAG

  1. Rozmiar okna kontekstowego
    CAG opiera się na oknie kontekstowym modelu do ładowania wiedzy. Obecne LLM obsługują okna do 128 000 tokenów, co ogranicza ilość możliwej do załadowania wiedzy.

  2. Wielkość bazy wiedzy
    CAG najlepiej sprawdza się przy statycznych i łatwych do zarządzania bazach wiedzy. Dla dużych lub dynamicznych zbiorów danych model może mieć trudności z pomieszczeniem wszystkich istotnych informacji.

  3. Statyczna wiedza
    CAG zakłada niezmienność bazy wiedzy podczas wnioskowania. Jest mniej skuteczny w przypadkach wymagających aktualizacji w czasie rzeczywistym lub dynamicznego integrowania wiedzy.

  4. Koszty
    Duże okna kontekstowe zwiększają koszty obliczeniowe podczas wstępnego ładowania, przez co CAG jest mniej opłacalny w przypadkach wymagających częstych aktualizacji bazy wiedzy.

Jak wykorzystywany jest CAG?

Zastosowania praktyczne

CAG znajduje zastosowanie tam, gdzie baza wiedzy jest statyczna, łatwa do zarządzania, a niska latencja jest kluczowa:

  • Chatboty obsługi klienta
    Przykład: Wstępne załadowanie najczęstszych kroków rozwiązywania problemów dla produktów software’owych, by zapewnić natychmiastowe odpowiedzi użytkownikom.
    Korzyść: Eliminacja błędów pobierania i skrócenie czasu reakcji.

  • Analiza dokumentów
    Przykład: Instytucje finansowe analizujące raporty kwartalne lub kancelarie prawne przeszukujące dokumenty regulacyjne.
    Korzyść: Zapewnienie spójnych i precyzyjnych odpowiedzi przez wcześniejsze załadowanie wszystkich istotnych dokumentów.

  • Asystenci medyczni
    Przykład: Wstępne załadowanie wytycznych medycznych do obsługi zapytań pacjentów.
    Korzyść: Utrzymanie ciągłości rozmów wieloturnowych i pewność poprawnych odniesień.

  • Edukacja i szkolenia
    Przykład: Odpowiadanie na najczęściej zadawane pytania podczas szkoleń firmowych.
    Korzyść: Uproszczone wdrożenie przy zachowaniu spójności odpowiedzi.

Porównanie z Retrieval Augmented Generation (RAG)

CechaCAGRAG
Obsługa wiedzyZaładowuje wiedzę do okna kontekstowego.Dynamicznie pobiera wiedzę w czasie działania.
Złożoność systemuUproszczony, nie wymaga pipeline’u pobierania.Wymaga dodatkowych komponentów do pobierania.
LatencjaNiska, brak etapów pobierania.Wyższa z powodu pobierania w czasie rzeczywistym.
SkalowalnośćOgraniczona rozmiarem okna kontekstowego.Dobrze skaluje się z dużymi, dynamicznymi danymi.
Ryzyko błędówBrak błędów pobierania.Możliwość błędów pobierania i rankingowania.
Optymalne zastosowaniaStatyczne, niskolatencyjne zadania.Dynamiczne, duże lub często aktualizowane zadania.

Przykłady zastosowań

CAG w praktyce

  1. Systemy HR
    Firma wykorzystuje CAG do załadowania polityk pracowniczych do modelu. Pracownicy mogą w każdej chwili zapytać o konkretne wytyczne i natychmiast otrzymać odpowiedź.

  2. Asysta prawna
    Asystent prawny ładuje istotne orzecznictwo do kontekstu modelu, by szybko odpowiadać na zapytania prawne bez korzystania z systemu pobierania.

  3. Obsługa klienta
    Chatbot produktu SaaS używa CAG do załadowania FAQ i poradników rozwiązywania problemów, zapewniając płynną i szybką obsługę klienta.

RAG dla scenariuszy dynamicznych

  1. Agregacja wiadomości
    Aplikacja newsowa używa RAG do pobierania i streszczania najnowszych artykułów, dynamicznie dostarczając najbardziej aktualne informacje.

  2. Wyszukiwarka e-commerce
    RAG służy do pobierania szczegółów produktów i dostępności z dużego, często aktualizowanego katalogu.

  3. Platformy badawcze
    Platforma naukowa używa RAG do pobierania odpowiednich publikacji i badań z dużych zewnętrznych baz danych.

Przykład implementacji: wstępne ładowanie wiedzy w Pythonie

Poniższy fragment kodu w Pythonie pokazuje, jak załadować wiedzę do modelu dla 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

Ten mechanizm załadunku zapewnia, że model przetwarza zapytania bez konieczności zewnętrznego pobierania, umożliwiając efektywną i szybką pracę.

Kiedy warto używać CAG

  1. Statyczne bazy wiedzy
    Idealne tam, gdzie baza wiedzy rzadko się zmienia.

  2. Aplikacje niskolatencyjne
    Odpowiednie dla obsługi klienta, edukacji czy systemów medycznych, gdzie kluczowa jest szybkość odpowiedzi.

  3. Scenariusze opłacalne kosztowo
    Korzystne, gdy załadowana wiedza pozostaje spójna dla wielu zapytań, ograniczając koszty obliczeniowe.

CAG to efektywna alternatywa dla RAG w zadaniach wymagających szybkości, prostoty i spójności. Ma jednak ograniczenia wynikające z wielkości i statycznego charakteru bazy wiedzy.

Badania nad Cache Augmented Generation (CAG)

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

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

Artykuł opisuje wyzwania wdrażania dużych modeli językowych (LLM) na urządzeniach brzegowych, takie jak ograniczone zasoby obliczeniowe i wysoka latencja pobierania. Autorzy proponują framework Adaptive Contextual Caching (ACC), który wykorzystuje głębokie uczenie przez wzmacnianie (DRL) do optymalizacji polityk zastępowania cache, uwzględniając kontekst użytkownika, podobieństwo dokumentów i koszt nietrafionych cache. Wyniki eksperymentów pokazują, że ACC osiąga ponad 80% trafień do cache po 11 epizodach treningowych, znacząco skracając latencję pobierania (do 40% względem tradycyjnych metod). Dodatkowo zmniejsza obciążenie lokalnej pamięci podręcznej o 55%, czyniąc ACC odpowiednim rozwiązaniem dla skalowalnych, niskolatencyjnych usług LLM w środowiskach o ograniczonych zasobach. Praca podkreśla potencjał ACC w zwiększaniu efektywności systemów edge LLM.
Zobacz artykuł

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

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

Badanie analizuje możliwość ponownego wykorzystania pamięci podręcznych klucz-wartość (KV) w celu zmniejszenia opóźnień prefill w aplikacjach LLM, szczególnie przy powtarzających się tekstach wejściowych. Autorzy badają także opłacalność takiego rozwiązania w chmurze publicznej, gdzie liczą się koszty obliczeń, przechowywania i transferu. Proponują zweryfikowany model analityczny do oceny kosztów chmurowych przechowywania i ponownego użycia cache KV przy różnych parametrach obciążenia. Wyniki pokazują, że ponowne wykorzystanie cache KV pozwala oszczędzić zarówno czas, jak i koszty chmurowe dla dłuższych kontekstów wejściowych, zachęcając do dalszych prac nad bardziej ekonomicznymi systemami LLM z rozszerzonym kontekstem.
Zobacz artykuł

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

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

Artykuł przedstawia system MPIC, niezależny od pozycji multimodalny system cache kontekstu, który adresuje nieefektywność przy wnioskowaniu w multimodalnych dużych modelach językowych (MLLM). Tradycyjne rozwiązania ponownie obliczają całą pamięć podręczną KV nawet przy niewielkich zmianach w kontekście, co prowadzi do nieefektywności. MPIC oferuje niezależny od pozycji system cache, przechowujący dane lokalnie lub zdalnie, oraz równoległe obliczanie i ładowanie cache podczas wnioskowania. Zintegrowane mechanizmy ponownego użycia i przeliczania cache minimalizują degradację dokładności, jednocześnie skracając czas reakcji aż o 54% względem istniejących metod. Praca wskazuje potencjał poprawy efektywności obsługi systemów MLLM.
Zobacz artykuł

Najczęściej zadawane pytania

Czym jest Cache Augmented Generation (CAG)?

Cache Augmented Generation (CAG) to metoda poprawiająca wydajność dużych modeli językowych (LLM) poprzez wcześniejsze załadowanie statycznej wiedzy do wstępnie obliczonej pamięci podręcznej klucz-wartość (KV). W przeciwieństwie do Retrieval Augmented Generation (RAG), która pobiera wiedzę z zewnątrz podczas działania, CAG osadza wszystkie istotne informacje z wyprzedzeniem, zmniejszając latencję i upraszczając architekturę systemu AI.

Czym CAG różni się od RAG?

CAG ładuje całą niezbędną wiedzę do okna kontekstowego modelu przed rozpoczęciem wnioskowania i eliminuje konieczność pobierania informacji w czasie rzeczywistym, zapewniając niską latencję. RAG natomiast dynamicznie pobiera odpowiednie informacje podczas działania, co może prowadzić do błędów pobierania i wyższej latencji, ale lepiej sprawdza się przy dynamicznych lub często aktualizowanych bazach wiedzy.

Jakie są zalety stosowania CAG?

Kluczowe zalety CAG to niska latencja, zwiększona dokładność dzięki pełnemu wcześniejszemu załadowaniu, uproszczona architektura systemu oraz wydajność przy powtarzających się zapytaniach w obrębie statycznych domen wiedzy.

Jakie są ograniczenia CAG?

CAG jest ograniczony maksymalnym rozmiarem okna kontekstowego modelu (obecnie do 128 000 tokenów), najlepiej sprawdza się przy statycznych i łatwych do zarządzania bazach wiedzy oraz jest mniej skuteczny przy dynamicznych zbiorach danych lub scenariuszach wymagających częstych aktualizacji. Duże okna kontekstowe mogą także zwiększać koszty obliczeniowe podczas załadunku.

Gdzie CAG znajduje największe zastosowanie?

CAG jest idealny do statycznych, niskolatencyjnych zastosowań, takich jak chatboty obsługi klienta, analiza dokumentów, asystenci medyczni, korporacyjne FAQ, zapytania dotyczące polityki HR i asystenci prawni — wszędzie tam, gdzie baza wiedzy zmienia się rzadko, a wymagane są natychmiastowe odpowiedzi.

Rozpocznij budowanie wydajnych workflow AI

Poznaj moc CAG i innych narzędzi AI z FlowHunt. Umów się na demo, aby zobaczyć, jak rozwiązania z pamięcią podręczną i niską latencją mogą odmienić Twoją firmę.

Dowiedz się więcej