Prompt compression — فشردهسازی پرامپت
فشردهسازی پرامپت (به انگلیسی: prompt compression) — مجموعهای از روشها در prompt engineering است که با هدف کاهش طول متن ورودی (پرامپت) برای مدلهای زبانی بزرگ (LLM) با حفظ اطلاعات کلیدی بهکار میرود[1]. با افزایش پنجره بافت LLM تا میلیونها token (برای مثال در Google Gemini)، امکان پردازش متون بسیار طولانی فراهم شد، اما این امر مشکلات جدیدی ایجاد کرد: هزینه بالای فراخوانیها، افزایش تأخیر و کاهش کیفیت استدلال به دلیل پدیده «گم شدن در میانه»[2].
فشردهسازی پرامپت این مشکلات را با تمرکز مهمترین دادهها در ورودی کوتاهشده و حذف اطلاعات اضافه حل میکند. این کار خطر تجاوز از محدودیت بافت را کاهش میدهد، تولید متن را تسریع میکند و هزینه را کم میکند، در حالی که دقت پاسخها حفظ میشود[3].
روشهای فشردهسازی پرامپت
روشهای فشردهسازی پرامپت را میتوان به چند دسته اصلی تقسیم کرد.
حذف token (فیلترگذاری)
این رویکرد شامل حذف کماطلاعترین tokenها، عبارات یا جملات از متن اصلی بدون تغییر بخشهای باقیمانده است. اهمیت tokenها بهصورت휴ریستیکی تعیین میشود.
- LLMLingua: روشی که توسط Microsoft توسعه یافته و perplexity هر token را محاسبه میکند و 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 برای «جمعآوری» دستورالعملهای طولانی در مجموعهای کوچک از gist-tokenهای ویژه (مثلاً ۲۰ تا ۳۰ token به جای چند هزار token) fine-tuning میشود. این tokenها سپس به جای پرامپت اصلی استفاده میشوند و تا ۲۶ برابر فشردهسازی با حداقل افت کیفیت فراهم میکنند[12].
- Soft Prompt Tuning: به جای پرامپت متنی از «tokenهای مجازی» قابل آموزش (embeddingها) استفاده میشود که برای حل وظیفه خاص تنظیم میشوند.
- SelfCP: پیشنهاد میکند از خود LLM منجمد به عنوان فشردهساز استفاده شود. با ارائه بخشی از متن با نشانگرهای ویژه، مدل یک بازنمایی متراکم (memory tokens) تولید میکند که سپس برای پاسخدادن توسط همان مدل استفاده میشود[13].
کارایی و مصالحهها
- تسریع و کاهش هزینه: از آنجا که پیچیدگی transformer بهصورت درجه دوم ($O(n^2)$) با طول دنباله رشد میکند، کاهش چند برابری پرامپت صرفهجویی قابل توجهی به همراه دارد. برای مثال، gist tokens با فشردهسازی ۲۶ برابری تا ۴۰٪ صرفهجویی در 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. [۱]
- ↑ «Efficient Prompting Methods for Large Language Models: A Survey». arXiv. [۲]
- ↑ «Prompt Compression: A Guide With Python Examples». DataCamp. [۳]
- ↑ 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. [۴]
- ↑ Gao, C., et al. (2024). «SelfCP: Compressing Over-Limit Prompt via the Frozen Large Language Model Itself». arXiv. [۵]