Promptcompressie
Promptcompressie (Engels: prompt compression) — is een verzameling methoden in prompt-engineering die gericht zijn op het verkorten van de lengte van de invoertekst (prompt) voor grote taalmodellen (LLM) met behoud van essentiële informatie[1]. Met de groei van het contextvenster van LLM's tot miljoenen tokens (bijvoorbeeld bij Google Gemini) is het mogelijk geworden om zeer lange teksten te verwerken, maar dit heeft nieuwe problemen gecreëerd: hoge kosten per aanroep, toenemende latentie en verminderde kwaliteit van redeneren door het zogenaamde 'lost-in-the-middle'-effect[2].
Promptcompressie lost deze problemen op door in de verkorte invoer de meest relevante gegevens te concentreren en overbodige informatie weg te laten. Dit vermindert het risico de contextlimiet te overschrijden, versnelt de generatie en verlaagt de kosten, terwijl de nauwkeurigheid van antwoorden behouden blijft[3].
Methoden voor promptcompressie
Methoden voor promptcompressie kunnen worden onderverdeeld in een aantal hoofdklassen.
Tokenverwijdering (filtering)
Deze aanpak bestaat uit het verwijderen van de minst informatieve tokens, zinsdelen of zinnen uit de brontekst zonder de resterende delen te wijzigen. Het belang van tokens wordt heuristisch bepaald.
- LLMLingua: Een door Microsoft ontwikkelde methode die de perplexiteit van elk token berekent en die tokens verwijdert welke weinig invloed hebben op de voorspelbaarheid van de tekst. In de versie LongLLMLingua is deze aanpak aangepast voor lange documenten, waarbij de relevantie van fragmenten ten opzichte van een specifieke gebruikersvraag in aanmerking wordt genomen[4].
- Selective-Context: Gebruikt een klein taalmodel om de self-information van elk token te evalueren en verwijdert tokens met de laagste informatiewaarde[5].
- PCRL (Prompt Compression via Reinforcement Learning): Traint een agent met behulp van Reinforcement Learning om voor elk token een beslissing te nemen — 'behouden' of 'verwijderen' — met als doel de kwaliteitsmetriek (bijvoorbeeld ROUGE) van het uiteindelijke antwoord te maximaliseren[6].
Abstractieve compressie (samenvatting)
Bij deze aanpak genereert een compressormodel (doorgaans van kleinere omvang) een beknopte abstracte samenvatting van de brontekst, die vervolgens wordt doorgegeven aan het hoofd-LLM.
- RECOMP (Retrieval-Compression-Prompting): Voor elk document in de kennisbank wordt vooraf een korte samenvatting gegenereerd (summary) die rekening houdt met mogelijke vragen van de gebruiker (query-aware summary). Dit maakt het mogelijk informatie niet alleen te comprimeren, maar ook vooraf te verwerken[7].
- PRCA (Prompt Compression with Reinforced Context Aggregation): Combineert het trainen van een samenvattingsmodel met Reinforcement Learning om samenvattingen te genereren die de kwaliteit van antwoorden van het hoofd-LLM maximaal verbeteren[8].
- Prompt-SAW (Semantic Aware Winnowing): Extraheert vóór de samenvatting een kennisgraaf uit de tekst (entiteiten en relaties), selecteert relevante knooppunten uit de graaf en genereert op basis daarvan een gecomprimeerde tekst[9].
Extractieve compressie
Deze methode extraheert sleutelfragmenten (zinnen, alinea's) uit de brontekst zonder ze te parafraseren.
- Reranker-LLMs: Gebruikt een rangschikkingsmodel (reranker) dat het belang van elke alinea of elk document voor de huidige vraag beoordeelt en alleen de meest relevante selecteert[10].
- CompAct: Demonstreert iteratieve extractie-samenvatting. Het model neemt achtereenvolgens segmenten van een lange tekst, comprimeert deze en controleert of er voldoende informatie is om te antwoorden. Zo niet, wordt het volgende segment toegevoegd en opnieuw gecomprimeerd, waarmee aanzienlijke compressie wordt bereikt met behoud van kwaliteit[11].
Distillatie en 'geheugen-tokens'
Een nieuwe klasse methoden waarbij het model in plaats van tekst speciaal getrainde vervangende tokens of embeddings ontvangt die gecomprimeerde informatie bevatten.
- Gist Tokens: Het LLM wordt fine-getuned om lange instructies 'samen te vouwen' in een kleine set speciale gist-tokens (bijvoorbeeld 20-30 tokens in plaats van enkele duizenden). Deze tokens worden vervolgens gebruikt in plaats van de oorspronkelijke prompt, wat tot 26-voudige compressie biedt met minimaal kwaliteitsverlies[12].
- Soft Prompt Tuning: In plaats van een tekstuele prompt worden trainbare 'virtuele tokens' (embeddings) gebruikt die worden afgestemd op het oplossen van een specifieke taak.
- SelfCP: Stelt voor het bevroren LLM zelf als compressor te gebruiken. Door het model een tekstsegment met speciale markeringen aan te bieden, genereert het model een compacte representatie (memory tokens) die het vervolgens zelf gebruikt om te antwoorden[13].
Efficiëntie en afwegingen
- Versnelling en kostenverlaging: Omdat de complexiteit van een transformer kwadratisch toeneemt ($O(n^2)$) met de lengte van de invoerreeks, levert een meervoudige verkorting van de prompt aanzienlijke besparingen op. Zo demonstreren gist tokens bij 26-voudige compressie tot 40% besparing op FLOPs[12].
- Kwaliteitsverbetering: Soms kan promptcompressie de kwaliteit van antwoorden zelfs verbeteren, als de brontekst ruis of afleidende details bevatte. Het verwijderen van irrelevante context helpt het model zich beter te focussen op de belangrijke aspecten van de taak.
- Kwaliteitsafweging (faithfulness): Te agressieve compressie kan leiden tot verlies van belangrijke details (datums, namen, negaties), wat de kwaliteit van het antwoord verslechtert. Abstractieve methoden zijn bijzonder gevoelig voor het risico van hallucinaties. Het bewaken van volledigheid en nauwkeurigheid (faithfulness) van de gecomprimeerde prompt is een kernopgave.
Relatie met andere onderzoeksrichtingen
- Retrieval-Augmented Generation (RAG): RAG en promptcompressie zijn nauw met elkaar verbonden. RAG kan worden beschouwd als een externe compressiefase: in plaats van de gehele database te verwerken, worden relevante documenten gezocht en geselecteerd. Promptcompressie is een aanvulling op RAG door het volume van de reeds geselecteerde documenten te verkleinen voordat deze aan het LLM worden aangeboden.
- In-Context Learning: Voorbeelden in de context (demonstraties) vergroten de promptlengte aanzienlijk. Het comprimeren van deze demonstraties (bijvoorbeeld met behulp van Instruction Distillation, waarbij een groot aantal voorbeelden wordt vervangen door één korte instructie) is een actief onderzoeksgebied.
Literatuur
- Ali, M. et al. (2024). Prompt-SAW: Semantic-Aware Winnowing for Prompt Compression. arXiv:2403.00000.
- Gao, J.; Cao, Z.; Li, W. (2024). SelfCP: Compressing Over-Limit Prompt via the Frozen Large Language Model Itself. arXiv:2405.17052.
- Jiang, H. et al. (2023). LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models. arXiv:2310.05736.
- Jiang, H. et al. (2023). LongLLMLingua: Accelerating and Enhancing LLMs in Long-Context Scenarios via Prompt Compression. arXiv:2310.06839.
- Jung, H.; Kim, K. (2023). PCRL: Discrete Prompt Compression with Reinforcement Learning. arXiv:2308.08758.
- Li, M. et al. (2023). Selective-Context: Compressing Context to Summarise and Answer Questions. arXiv:2307.00000.
- Mu, J. et al. (2023). Learning to Compress Prompts with Gist Tokens. NeurIPS 2023.
- Xu, F.; Shi, W.; Choi, E. (2023). RECOMP: Improving Retrieval-Augmented LMs with Compression and Selective Augmentation. arXiv:2310.04408.
- Yang, C. et al. (2023). PRCA: Prompt Compression with Reinforced Context Aggregation. arXiv:2311.00000.
- Yoon, J. et al. (2024). CompAct: Interactive Prompt Compression for Long-Document QA. arXiv:2402.00000.
- Zhang, S. et al. (2024). Efficient Prompting Methods for Large Language Models: A Survey. arXiv:2404.01077.
- Jha, S. et al. (2024). Characterizing Prompt Compression Methods for Long Context Inference. arXiv:2407.08892.
Noot
- ↑ Jha, S., et al. (2024). «Characterizing Prompt Compression Methods for Long Context Inference». arXiv. [1]
- ↑ «Efficient Prompting Methods for Large Language Models: A Survey». arXiv. [2]
- ↑ «Prompt Compression: A Guide With Python Examples». DataCamp. [3]
- ↑ Jiang, H., et al. (2023). «LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models». arXiv.
- ↑ Li, M. (2023). «Compressing context to summarize and answer questions». arXiv.
- ↑ Jung, H., & Kim, K. (2023). «Learning to Compress Prompts with Reinforcement Learning». arXiv.
- ↑ Xu, F., et al. (2024). «RECOMP: Improving Retrieval-Augmented LMs with Compression and Selective Augmentation». arXiv.
- ↑ Yang, C., et al. (2023). «PRCA: A new framework for prompt compression». arXiv.
- ↑ Ali, M., et al. (2024). «Prompt-SAW: A new method for prompt compression». arXiv.
- ↑ Pradeep, R., et al. (2023). «How to select the best passages for RAG?». arXiv.
- ↑ Yoon, J., et al. (2024). «CompAct: A new framework for interactive prompt compression». arXiv.
- ↑ 12.0 12.1 Mu, J., et al. (2023). «Learning to Compress Prompts with Gist Tokens». OpenReview. [4]
- ↑ Gao, C., et al. (2024). «SelfCP: Compressing Over-Limit Prompt via the Frozen Large Language Model Itself». arXiv. [5]