Prompt compression — דחיסת פרומפט
דחיסת פרומפט (באנגלית: prompt compression) — היא מכלול שיטות בתחום prompt engineering, שמטרתן קיצור אורך הטקסט הקלט (הפרומפט) עבור מודלי שפה גדולים (LLM) תוך שמירה על המידע המהותי[1]. עם גידול חלון ההקשר של LLM למיליוני token (לדוגמה, ב-Google Gemini) נוצרה האפשרות לעבד טקסטים ארוכים מאוד, אך הדבר יצר בעיות חדשות: עלות גבוהה של קריאות, עלייה בהשהיה וירידה באיכות ההיסק בשל תופעת ה"אבוד באמצע"[2].
דחיסת פרומפט פותרת בעיות אלה על ידי ריכוז הנתונים המהותיים ביותר בקלט המקוצר והשלכת המידע המיותר. פעולה זו מפחיתה את הסיכון לחריגה ממגבלת ההקשר, מאיצה את תהליך היצירה ומורידה את העלות, תוך שמירה על דיוק התשובות[3].
שיטות לדחיסת פרומפט
ניתן לחלק את שיטות דחיסת הפרומפט למספר מחלקות עיקריות.
הסרת token (סינון)
גישה זו מבוססת על הסרת ה-token, הביטויים או המשפטים הפחות אינפורמטיביים מהטקסט המקורי מבלי לשנות את החלקים הנותרים. חשיבות ה-token נקבעת בשיטות היוריסטיות.
- LLMLingua: שיטה שפותחה על ידי Microsoft, המחשבת את ה-perplexity של כל token ומסירה את אלה שכמעט אינם משפיעים על יכולת החיזוי של הטקסט. בגרסה LongLLMLingua גישה זו הותאמה למסמכים ארוכים, תוך התחשבות ברלוונטיות הקטעים ביחס לשאילתת המשתמש הספציפית[4].
- Selective-Context: משתמשת במודל שפה קטן להערכת ה-self-information של כל token ומשליכה את ה-token בעלי האינפורמטיביות הנמוכה ביותר[5].
- PCRL (Prompt Compression via Reinforcement Learning): מאמנת סוכן באמצעות Reinforcement Learning לקבל החלטה עבור כל token — "לשמור" או "להסיר" — במטרה למקסם את מדד האיכות (לדוגמה, ROUGE) של התשובה הסופית[6].
דחיסה אבסטרקטיבית (סיכום)
בגישה זו, מודל הדחיסה (בדרך כלל קטן יותר) מייצר תקציר אבסטרקטי קצר של הטקסט המקורי, אשר מועבר לאחר מכן ל-LLM הראשי.
- RECOMP (Retrieval-Compression-Prompting): עבור כל מסמך בבסיס הידע מיוצר מראש תקציר קצר (summary) המתחשב בשאילתות המשתמש האפשריות (query-aware summary). הדבר מאפשר לא רק לדחוס אלא גם לעבד מידע מראש[7].
- PRCA (Prompt Compression with Reinforced Context Aggregation): משלבת אימון מודל-סיכום עם Reinforcement Learning כדי לייצר תקצירים המשפרים באופן מרבי את איכות תשובות ה-LLM הראשי[8].
- Prompt-SAW (Semantic Aware Winnowing): לפני הסיכום מחלץ מהטקסט גרף ידע (ישויות ויחסים), בוחר צמתים רלוונטיים מהגרף ועל בסיסם מייצר טקסט דחוס[9].
דחיסה אקסטרקטיבית
שיטה זו מחלצת קטעים מרכזיים (משפטים, פסקאות) מהטקסט המקורי מבלי לנסח אותם מחדש.
- Reranker-LLMs: משתמשת במודל דירוג (reranker) המעריך את חשיבות כל פסקה או מסמך עבור השאילתה הנוכחית ובוחר רק את הרלוונטיים ביותר[10].
- CompAct: מדגים חילוץ-סיכום איטרטיבי. המודל לוקח באופן רציף קטעים של טקסט ארוך, דוחס אותם ובודק אם יש מספיק מידע לתשובה. אם לא — מוסיף את הקטע הבא ודוחס שוב, ומשיג דחיסה משמעותית תוך שמירה על איכות[11].
דיסטילציה ו"token זיכרון"
מחלקה חדשה של שיטות, שבהן במקום טקסט המודל מקבל token-ממלאי מקום מאומנים במיוחד או embedding המכילים מידע דחוס.
- Gist Tokens: מודל LLM עובר fine-tuning ל"גלגל" הוראות ארוכות לתוך קבוצה קטנה של gist token מיוחדים (לדוגמה, 20–30 token במקום כמה אלפים). ה-token הללו משמשים לאחר מכן במקום הפרומפט המקורי ומספקים דחיסה של עד פי 26 עם אובדן איכות מינימלי[12].
- Soft Prompt Tuning: במקום פרומפט טקסטואלי משתמשים ב"token וירטואליים" ניתנים לאימון (embedding), המוגדרים לפתרון משימה ספציפית.
- SelfCP: מציע להשתמש ב-LLM הקפוא עצמו כמדחס. על ידי הזנת קטע טקסט עם סמנים מיוחדים, המודל מייצר ייצוג צפוף (memory tokens) המשמש אותו עצמו לאחר מכן לצורך מתן תשובה[13].
יעילות ופשרות
- האצה והפחתת עלויות: מכיוון שמורכבות ה-transformer גדלה בריבועיות ($O(n^2)$) עם אורך הרצף, קיצור הפרומפט בכמה פעמים מניב חיסכון משמעותי. לדוגמה, gist tokens בדחיסה פי 26 מדגימים חיסכון של עד 40% ב-FLOPs[12].
- שיפור האיכות: לעיתים דחיסת הפרומפט יכולה אף לשפר את איכות התשובות, אם הטקסט המקורי כלל רעש או פרטים מסיחים. הסרת ההקשר הלא רלוונטי מסייעת למודל להתמקד טוב יותר בהיבטים החשובים של המשימה.
- פשרת האיכות (faithfulness): דחיסה אגרסיבית מדי עלולה לגרום לאובדן פרטים חשובים (תאריכים, שמות, שלילות), מה שיפגע באיכות התשובה. שיטות אבסטרקטיביות חשופות במיוחד לסיכון הזיות. בקרת השלמות והדיוק (faithfulness) של הפרומפט הדחוס היא משימה מרכזית.
קשר לתחומים אחרים
- Retrieval-Augmented Generation (RAG): RAG ודחיסת פרומפט קשורים קשר הדוק. ניתן לראות ב-RAG שלב דחיסה חיצוני: במקום עיבוד כל מסד הנתונים מתבצע חיפוש ובחירה של מסמכים רלוונטיים. דחיסת פרומפט משלימה את RAG בכך שהיא מקצרת את נפח המסמכים שנבחרו כבר לפני הזנתם ל-LLM.
- In-Context Learning: דוגמאות בהקשר (דמונסטרציות) מגדילות משמעותית את אורך הפרומפט. דחיסת דמונסטרציות אלה (לדוגמה, באמצעות Instruction Distillation, שבה מספר רב של דוגמאות מוחלף בהוראה קצרה אחת) היא תחום מחקר פעיל.
ספרות
- 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.
הערה
- ↑ 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]