Prečo vypchávanie kontextu?
Dve najpopulárnejšie metódy na naplnenie kontextového okna jazykových modelov (LLM) sú RAG a agenti. Ja som však veľkým fanúšikom vypchávania kontextu (context stuffing). Vypchávanie kontextu sa snaží načítať čo najviac informácií, ideálne všetko, čo je k dispozícii, do kontextového okna ešte pred začiatkom generovania textu.
Vypchávanie kontextu má niekoľko výhod:
- Cena: Vypchávanie kontextu používa len lacné vstupné tokeny a spracúva ich iba raz, zatiaľ čo agentické načítavanie spotrebúva výstupné tokeny, najmä pri premýšlaní, a vstupné tokeny opakovane spracúva v každom kroku.
- Veľkosť kontextu: Keďže limit kontextového okna je v súčasnosti skôr ekonomický než technický, vypchávanie kontextu v praxi umožňuje vytvoriť väčší kontext.
- Prompt cache: Cenová výhoda je ešte väčšia, ak sa dá efektívne využiť prompt cache. Vypchávanie kontextu dokáže vytvoriť kontext s veľmi stabilným prefixom, ktorý je vhodný pre prompt cache, ak má cache dostatočne dlhé TTL.
- Latencia: Súčasné jazykové modely sú pri produkcii výstupných tokenov veľmi neefektívne. Nielenže to zvyšuje náklady, ale jazykový model to aj ohromne spomaľuje. Vypchávanie kontextu produkuje čistý kontext zložený len zo vstupných tokenov, ktorý jazykové modely dokážu spracovať v priebehu sekúnd.
- Zdravie kontextu: Agenti majú tendenciu otráviť si kontext nesprávnymi predpokladmi a rozhodnutiami, čo poškodzuje rozhodovanie v nasledujúcich krokoch. Keďže vypchávanie kontextu používa len čisté, pôvodné dáta, nemôže si kontext nijako otráviť.
- Spoľahlivosť: Ak môžete do kontextu napchať (takmer) všetko, je nulová šanca, že agent nebude vedieť načítať niečo, čo potrebuje. Aj keď vypchávanie kontextu dokáže načítať len 50% potrebných informácií, aj tak to znamená 50% pokles v zlyhaniach pri načítavaní.
- Kontextové učenie: Ponechanie podobných projektových súborov v kontexte dáva modelu nápovedu, ako písať nový obsah. V dobre udržiavanom projekte napodobňovanie existujúceho obsahu zlepšuje kvalitu výstupu.
- Povedomie: Agentické načítavanie vyžaduje, aby jazykový model vedel vopred, ktoré súbory budú potrebné, ale relevantnosť konkrétneho súboru sa niekedy ukáže až po jeho prečítaní. Aj keď súbor nie je priamo relevantný, stále môže jemne ovplyvniť výstup, napríklad tým, že nabáda ku konzistentnosti.
Niektorí ľudia sa obávajú, že preplnenie kontextu jazykový model rozptýli, ale premýšľajúce jazykové modely si vždy môžu presunúť relevantné časti kontextu na koniec, kde je pozornosť jazykového modelu najsilnejšia. Ak by som mal poukázať na skutočnú slabinu vypchávania kontextu, boli by to veľké projekty. Načítavanie založené na pravidlách (nedávne, spomenuté, kľúčové a súvisiace súbory) sa stáva neefektívnym, keď kontext tvorí len malý zlomok celkovej veľkosti projektu. Pre veľké projekty je efektívnejšie použiť agentické načítavanie. Určité množstvo vypchávania kontextu však stále pomáha.