Prompt Sıkıştırma
Prompt sıkıştırma (İng. prompt compression) — büyük dil modellerine (LLM) verilen giriş metninin (prompt'un) uzunluğunu, temel bilgileri koruyarak kısaltmaya yönelik prompt mühendisliği yöntemlerinin bütünüdür[1]. LLM'lerin bağlam penceresinin milyonlarca token'a kadar genişlemesiyle (örneğin Google Gemini'de) çok uzun metinleri işlemek mümkün hale gelmiş; ancak bu durum yeni sorunlar doğurmuştur: yüksek çağrı maliyeti, artan gecikme süresi ve "ortada kaybolma" etkisi nedeniyle çıkarım kalitesinin düşmesi[2].
Prompt sıkıştırma, bu sorunları sıkıştırılmış girişte en önemli verileri yoğunlaştırarak ve gereksiz olanları eleyerek çözer. Bu yaklaşım bağlam limitini aşma riskini azaltır, üretim hızını artırır ve maliyeti düşürürken yanıt doğruluğunu korur[3].
Prompt sıkıştırma yöntemleri
Prompt sıkıştırma yöntemleri birkaç temel sınıfa ayrılabilir.
Token silme (filtreleme)
Bu yaklaşım, kaynak metindeki en az bilgi içeren token'ları, ifadeleri veya cümleleri kalan bölümlerde değişiklik yapmadan silmeye dayanır. Token'ların önemi sezgisel yöntemlerle belirlenir.
- LLMLingua: Microsoft tarafından geliştirilen bu yöntem, her token'ın şaşkınlık (perplexity) değerini hesaplar ve metnin öngörülebilirliği üzerinde düşük etkisi olan token'ları siler. LongLLMLingua sürümünde bu yaklaşım, metin parçalarının kullanıcının belirli sorgusuna olan ilgisini göz önünde bulundurarak uzun belgeler için uyarlanmıştır[4].
- Selective-Context: Her token'ın self-information değerini değerlendirmek için küçük bir dil modeli kullanır ve bilgi içeriği en düşük token'ları eler[5].
- PCRL (Prompt Compression via Reinforcement Learning): Reinforcement Learning yardımıyla bir ajan eğiterek her token için "sakla" veya "sil" kararını, nihai yanıtın kalite metriğini (örneğin ROUGE) maksimize edecek şekilde almayı öğretir[6].
Soyutlayıcı sıkıştırma (özetleme)
Bu yaklaşımda bir sıkıştırıcı model (genellikle daha küçük boyutlu), kaynak metnin kısa ve soyut bir özetini oluşturur; bu özet daha sonra ana LLM'e iletilir.
- RECOMP (Retrieval-Compression-Prompting): Bilgi tabanındaki her belge için kullanıcının olası sorgularını dikkate alan kısa bir özet (query-aware summary) önceden oluşturulur. Bu sayede bilgi yalnızca sıkıştırılmakla kalmaz, aynı zamanda ön işlemden de geçirilmiş olur[7].
- PRCA (Prompt Compression with Reinforced Context Aggregation): Özetleyici modelin eğitimini Reinforcement Learning ile birleştirerek ana LLM'in yanıt kalitesini en üst düzeye çıkaran özetler üretmeyi amaçlar[8].
- Prompt-SAW (Semantic Aware Winnowing): Özetlemeden önce metinden bir bilgi grafiği (varlıklar ve ilişkiler) çıkarır, grafın ilgili düğümlerini seçer ve bunlara dayanarak sıkıştırılmış metin üretir[9].
Çıkarımsal sıkıştırma
Bu yöntem, kaynak metinden anahtar parçaları (cümleler, paragraflar) yeniden ifade etmeksizin çıkarır.
- Reranker-LLMs: Her paragrafın veya belgenin geçerli sorgu için önemini değerlendiren ve yalnızca en ilgili olanları seçen bir yeniden sıralayıcı (reranker) model kullanır[10].
- CompAct: Yinelemeli çıkarım-özetleme sürecini gösterir. Model, uzun metnin bölümlerini sırayla alır, sıkıştırır ve yanıt için yeterli bilginin mevcut olup olmadığını denetler. Yeterli değilse bir sonraki bölümü ekler ve yeniden sıkıştırır; böylece kaliteyi koruyarak önemli ölçüde sıkıştırma sağlar[11].
Damıtma ve "bellek token'ları"
Model'in metin yerine sıkıştırılmış bilgi içeren özel eğitilmiş vekil token'lar veya embedding'ler aldığı yeni bir yöntem sınıfıdır.
- Gist Tokens: LLM modeli, uzun talimatları küçük bir özel gist-token kümesine (örneğin binlerce token yerine 20-30 token) "katlamayı" öğrenmek üzere fine-tuning yapılır. Bu token'lar daha sonra kaynak prompt yerine kullanılarak minimum kalite kaybıyla 26 kata kadar sıkıştırma sağlar[12].
- Soft Prompt Tuning: Metin tabanlı prompt yerine, belirli bir görevi çözmek üzere ayarlanan öğrenilebilir "sanal token'lar" (embedding'ler) kullanılır.
- SelfCP: Donmuş LLM'nin kendisini sıkıştırıcı olarak kullanmayı önerir. Model'e özel işaretlerle birlikte bir metin bölümü sunulduğunda, model yoğun bir temsil (memory tokens) üretir; bu temsil daha sonra yanıt vermek için yine modelin kendisi tarafından kullanılır[13].
Verimlilik ve ödünleşimler
- Hızlanma ve maliyet azaltma: Transformer'ın karmaşıklığı dizi uzunluğuna göre ikinci dereceden ($O(n^2)$) arttığından, prompt'u birkaç kat kısaltmak önemli tasarruf sağlar. Örneğin gist tokens, 26 katlık sıkıştırmada FLOPs bakımından %40'a varan tasarruf gösterir[12].
- Kalite artışı: Kaynak metin gürültü veya dikkat dağıtıcı ayrıntılar içeriyorsa prompt sıkıştırma zaman zaman yanıt kalitesini bile iyileştirebilir. İlgisiz bağlamın kaldırılması, modelin görevin önemli yönlerine daha iyi odaklanmasına yardımcı olur.
- Kalite ödünleşimi (faithfulness): Aşırı agresif sıkıştırma, önemli ayrıntıların (tarihler, isimler, olumsuzlamalar) kaybolmasına ve dolayısıyla yanıt kalitesinin düşmesine yol açabilir. Soyutlayıcı yöntemler özellikle halüsinasyon riskine karşı savunmasızdır. Sıkıştırılmış prompt'un eksiksizliğini ve doğruluğunu (faithfulness) denetlemek temel bir görevdir.
Diğer alanlarla ilişkisi
- Retrieval-Augmented Generation (RAG): RAG ile prompt sıkıştırma birbirine sıkı sıkıya bağlıdır. RAG, harici bir sıkıştırma aşaması olarak değerlendirilebilir: tüm veritabanını işlemek yerine ilgili belgeler aranıp seçilir. Prompt sıkıştırma, LLM'e verilmeden önce seçilmiş belgelerin hacmini daha da azaltarak RAG'ı tamamlar.
- In-Context Learning: Bağlamdaki örnekler (gösterimler) prompt uzunluğunu önemli ölçüde artırır. Bu gösterimlerin sıkıştırılması (örneğin çok sayıda örneğin tek bir kısa talimatla değiştirildiği Instruction Distillation yöntemiyle) aktif bir araştırma alanı olmaya devam etmektedir.
Kaynakça
- 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.
Notlar
- ↑ 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]