Promptkomprimering
Promptkomprimering (eng. prompt compression) — är en samling metoder inom prompt-engineering som syftar till att minska längden på inmatningstexten (prompten) för stora språkmodeller (LLM) med bibehållande av nyckelinformation[1]. I takt med att LLM:ers kontextfönster växte till miljontals token (exempelvis hos Google Gemini) uppstod möjligheten att behandla mycket långa texter, men detta skapade nya problem: höga kostnader per anrop, ökad latens och försämrad resonemangskvalitet på grund av effekten "lost in the middle"[2].
Promptkomprimering löser dessa problem genom att koncentrera de mest väsentliga uppgifterna i den förkortade inmatningen och kasta bort det överflödiga. Detta minskar risken att överskrida kontextgränsen, snabbar upp genereringen och sänker kostnaderna, samtidigt som svarens precision bibehålls[3].
Metoder för promptkomprimering
Metoderna för promptkomprimering kan delas in i flera huvudklasser.
Borttagning av token (filtrering)
Detta tillvägagångssätt innebär att de minst informativa token, fraser eller meningar tas bort från källtexten utan att de kvarvarande delarna förändras. Tokenens betydelse bestäms heuristiskt.
- LLMLingua: En metod utvecklad av Microsoft som beräknar perplexiteten för varje token och tar bort de som har liten inverkan på textens förutsägbarhet. I versionen LongLLMLingua anpassas detta tillvägagångssätt för långa dokument, med hänsyn till fragmentens relevans i förhållande till en specifik användarfråga[4].
- Selective-Context: Använder en liten språkmodell för att beräkna self-information för varje token och kasserar de token med lägst informativitet[5].
- PCRL (Prompt Compression via Reinforcement Learning): Tränar en agent med hjälp av Reinforcement Learning att fatta beslut för varje token — "behåll" eller "ta bort" — i syfte att maximera kvalitetsmåttet (exempelvis ROUGE) för det slutliga svaret[6].
Abstrakt komprimering (sammanfattning)
I detta tillvägagångssätt genererar en kompressormodell (vanligtvis av mindre storlek) en kort abstrakt sammanfattning av källtexten, som sedan skickas till huvud-LLM:en.
- RECOMP (Retrieval-Compression-Prompting): För varje dokument i kunskapsbasen genereras i förväg en kort sammanfattning (summary) som tar hänsyn till möjliga användarfrågor (query-aware summary). Detta gör det möjligt att inte bara komprimera utan även förbehandla information[7].
- PRCA (Prompt Compression with Reinforced Context Aggregation): Kombinerar träning av en sammanfattningsmodell med Reinforcement Learning för att generera sådana sammanfattningar som maximalt förbättrar kvaliteten på huvud-LLM:ens svar[8].
- Prompt-SAW (Semantic Aware Winnowing): Extraherar före sammanfattningen en kunskapsgraf (entiteter och relationer) från texten, väljer ut relevanta noder i grafen och genererar utifrån dessa en komprimerad text[9].
Extraktiv komprimering
Denna metod extraherar nyckelfragment (meningar, stycken) ur källtexten utan att omformulera dem.
- Reranker-LLMs: Använder en rankningsmodell (reranker) som bedömer vikten av varje stycke eller dokument för den aktuella frågan och väljer ut enbart de mest relevanta[10].
- CompAct: Demonstrerar iterativ extraktion och sammanfattning. Modellen tar sekventiellt segment av en lång text, komprimerar dem och kontrollerar om det finns tillräckligt med information för att svara. Om inte, läggs nästa segment till och komprimeras på nytt, vilket uppnår avsevärd komprimering med bibehållen kvalitet[11].
Destillation och "minnestoken"
En ny klass av metoder där modellen i stället för text tar emot specialtränade ersättningstoken eller embedding som innehåller komprimerad information.
- Gist Tokens: LLM-modellen finjusteras för att "vika ihop" långa instruktioner till en liten uppsättning speciella gist-token (exempelvis 20–30 token i stället för flera tusen). Dessa token används sedan i stället för den ursprungliga prompten och ger upp till 26-faldig komprimering med minimal kvalitetsförlust[12].
- Soft Prompt Tuning: I stället för en textprompt används träningsbara "virtuella token" (embedding) som konfigureras för att lösa en specifik uppgift.
- SelfCP: Föreslår att använda den frysta LLM:en själv som kompressor. Genom att mata in ett textsegment med särskilda markeringar genererar modellen en tät representation (memory tokens) som den sedan använder för att svara[13].
Effektivitet och avvägningar
- Acceleration och kostnadsminskning: Eftersom komplexiteten hos en transformer växer kvadratiskt ($O(n^2)$) med sekvensens längd, ger en mångfaldig förkortning av prompten väsentliga besparingar. Exempelvis uppvisar gist tokens vid 26-faldig komprimering upp till 40 % besparing i FLOPs[12].
- Kvalitetsförbättring: Ibland kan promptkomprimering till och med förbättra kvaliteten på svaren, om källtexten innehöll brus eller störande detaljer. Borttagning av irrelevant kontext hjälper modellen att bättre fokusera på viktiga aspekter av uppgiften.
- Kvalitetsavvägning (faithfulness): Alltför aggressiv komprimering kan leda till förlust av viktiga detaljer (datum, namn, negationer), vilket försämrar svarets kvalitet. Abstrakta metoder är särskilt utsatta för risken för hallucinationer. Att kontrollera fullständigheten och precisionen (faithfulness) hos den komprimerade prompten är en central utmaning.
Koppling till andra inriktningar
- Retrieval-Augmented Generation (RAG): RAG och promptkomprimering är nära besläktade. RAG kan betraktas som ett externt komprimeringssteg: i stället för att bearbeta hela databasen genomförs sökning och urval av relevanta dokument. Promptkomprimering kompletterar RAG genom att minska volymen av redan utvalda dokument innan de skickas till LLM:en.
- In-Context Learning: Exempel i kontexten (demonstrationer) ökar promptens längd avsevärt. Komprimering av dessa demonstrationer (exempelvis med hjälp av Instruction Distillation, där ett flertal exempel ersätts av en kort instruktion) är ett aktivt forskningsområde.
Litteratur
- 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.
Anmärkning
- ↑ 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]