Compresia promptului
Compresia promptului (engl. prompt compression) — reprezintă un ansamblu de metode în prompt engineering, orientate spre reducerea lungimii textului de intrare (promptului) pentru modelele lingvistice mari (LLM), păstrând în același timp informațiile esențiale[1]. Odată cu creșterea ferestrei de context a LLM-urilor până la milioane de tokenuri (de exemplu, la Google Gemini), a apărut posibilitatea de a procesa texte foarte lungi, însă aceasta a generat noi probleme: costuri ridicate ale apelurilor, creșterea latenței și scăderea calității raționamentului din cauza efectului „pierderii la mijloc"[2].
Compresia promptului rezolvă aceste probleme concentrând în intrarea redusă datele cele mai esențiale și eliminând redundanțele. Aceasta diminuează riscul de a depăși limita de context, accelerează generarea și reduce costurile, menținând în același timp acuratețea răspunsurilor[3].
Metode de compresie a promptului
Metodele de compresie a promptului pot fi împărțite în mai multe clase principale.
Eliminarea tokenurilor (filtrarea)
Această abordare constă în eliminarea tokenurilor, frazelor sau propozițiilor cele mai puțin informative din textul sursă, fără a modifica părțile rămase. Importanța tokenurilor este determinată euristic.
- LLMLingua: Metodă dezvoltată de Microsoft, care calculează perplexitatea fiecărui token și le elimină pe cele care influențează puțin predictibilitatea textului. În versiunea LongLLMLingua, această abordare este adaptată pentru documente lungi, ținând cont de relevanța fragmentelor în raport cu interogarea specifică a utilizatorului[4].
- Selective-Context: Utilizează un model lingvistic mic pentru a evalua self-information-ul fiecărui token și elimină tokenurile cu cea mai scăzută informativitate[5].
- PCRL (Prompt Compression via Reinforcement Learning): Antrenează un agent prin Reinforcement Learning pentru a lua o decizie pentru fiecare token — „păstrează" sau „elimină" — cu scopul de a maximiza metrica de calitate (de exemplu, ROUGE) a răspunsului final[6].
Compresia abstractivă (rezumarea)
În această abordare, modelul-compresor (de obicei de dimensiuni mai mici) generează un rezumat abstract scurt al textului sursă, care este ulterior transmis LLM-ului principal.
- RECOMP (Retrieval-Compression-Prompting): Pentru fiecare document din baza de cunoștințe se generează în prealabil un rezumat scurt (summary), care ține cont de posibilele interogări ale utilizatorului (query-aware summary). Aceasta permite nu doar comprimarea, ci și preprocesarea informațiilor[7].
- PRCA (Prompt Compression with Reinforced Context Aggregation): Combină antrenarea modelului-sumarizator cu Reinforcement Learning, pentru a genera rezumate care îmbunătățesc maximal calitatea răspunsurilor LLM-ului principal[8].
- Prompt-SAW (Semantic Aware Winnowing): Înaintea rezumării, extrage din text un graf de cunoștințe (entități și relații), selectează nodurile relevante ale grafului și pe baza acestora generează un text comprimat[9].
Compresia extractivă
Această metodă extrage fragmente cheie (propoziții, paragrafe) din textul sursă fără a le parafraza.
- Reranker-LLMs: Utilizează un model de reranking (reranker), care evaluează importanța fiecărui paragraf sau document pentru interogarea curentă și selectează doar cele mai relevante[10].
- CompAct: Demonstrează extracția-rezumarea iterativă. Modelul preia secvențial segmente ale unui text lung, le comprimă și verifică dacă există suficiente informații pentru a răspunde. Dacă nu, adaugă următorul segment și comprimă din nou, obținând o compresie semnificativă cu păstrarea calității[11].
Distilarea și „tokenurile de memorie"
O nouă clasă de metode, în care, în loc de text, modelul primește tokenuri-substitut sau embedding-uri special antrenate, care conțin informații comprimate.
- Gist Tokens: Modelul LLM este fine-tunat pentru a „împacheta" instrucțiunile lungi într-un set mic de gist token-uri speciale (de exemplu, 20-30 de tokenuri în loc de câteva mii). Aceste tokenuri sunt apoi utilizate în locul promptului original, asigurând o compresie de până la 26 de ori cu o pierdere minimă de calitate[12].
- Soft Prompt Tuning: În locul unui prompt textual se utilizează „tokenuri virtuale" antrenabile (embedding-uri), care sunt ajustate pentru rezolvarea unei sarcini specifice.
- SelfCP: Propune utilizarea însuși LLM-ului înghețat ca compresor. Furnizându-i un segment de text cu marcaje speciale, modelul generează o reprezentare densă (memory tokens), care este apoi utilizată de același model pentru a răspunde[13].
Eficiență și compromisuri
- Accelerare și reducerea costurilor: Deoarece complexitatea unui transformer crește pătratic ($O(n^2)$) față de lungimea secvenței, reducerea promptului de câteva ori aduce economii substanțiale. De exemplu, gist tokens la o compresie de 26 de ori demonstrează până la 40% economie de FLOPs[12].
- Îmbunătățirea calității: Uneori compresia promptului poate chiar îmbunătăți calitatea răspunsurilor, dacă textul sursă conținea zgomot sau detalii distragătoare. Eliminarea contextului nerelevant ajută modelul să se concentreze mai bine pe aspectele importante ale sarcinii.
- Compromisul de calitate (faithfulness): O compresie prea agresivă poate duce la pierderea unor detalii importante (date, nume, negații), ceea ce va deteriora calitatea răspunsului. Metodele abstractive sunt deosebit de expuse riscului de halucinații. Controlul completitudinii și al acurateței (faithfulness) promptului comprimat reprezintă o sarcină esențială.
Legătura cu alte direcții
- Retrieval-Augmented Generation (RAG): RAG și compresia promptului sunt strâns legate. RAG poate fi privit ca o etapă externă de compresie: în loc de procesarea întregii baze de date, se efectuează căutarea și selectarea documentelor relevante. Compresia promptului completează RAG, reducând volumul documentelor deja selectate înainte de a fi transmise LLM-ului.
- In-Context Learning: Exemplele din context (demonstrațiile) măresc semnificativ lungimea promptului. Compresia acestor demonstrații (de exemplu, prin Instruction Distillation, unde un număr mare de exemple este înlocuit cu o singură instrucțiune scurtă) reprezintă un domeniu activ de cercetare.
Bibliografie
- 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.
Note
- ↑ 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]