Prompt compression — การบีบอัด prompt
การบีบอัด prompt (อังกฤษ: prompt compression) — คือกลุ่มวิธีการใน prompt engineering ที่มุ่งลดความยาวของข้อความนำเข้า (prompt) สำหรับ large language models (LLM) โดยยังคงรักษาข้อมูลสำคัญไว้[1] เมื่อ context window ของ LLM ขยายตัวถึงหลักล้าน token (เช่น Google Gemini) จึงเป็นไปได้ที่จะประมวลผลข้อความยาวมาก แต่ก็ก่อให้เกิดปัญหาใหม่ ได้แก่ ต้นทุนการเรียกใช้งานสูง เวลาแฝงที่เพิ่มขึ้น และคุณภาพการให้เหตุผลที่ลดลงเนื่องจากปรากฏการณ์ "สูญหายไปในตรงกลาง"[2]
การบีบอัด prompt แก้ปัญหาเหล่านี้โดยรวบรวมข้อมูลที่สำคัญที่สุดไว้ในข้อมูลนำเข้าที่ย่อลง และตัดส่วนที่ซ้ำซ้อนออก ซึ่งช่วยลดความเสี่ยงที่จะเกินขีดจำกัด context เร่งความเร็วในการสร้างข้อความ และลดต้นทุน ในขณะที่ยังรักษาความแม่นยำของคำตอบไว้[3]
วิธีการบีบอัด prompt
วิธีการบีบอัด prompt สามารถแบ่งออกเป็นหลายประเภทหลัก
การลบ token (การกรอง)
แนวทางนี้ประกอบด้วยการลบ token, วลี หรือประโยคที่มีข้อมูลน้อยที่สุดออกจากข้อความต้นฉบับโดยไม่เปลี่ยนแปลงส่วนที่เหลือ ความสำคัญของ token ถูกกำหนดโดยใช้หลักฮิวริสติก
- LLMLingua: วิธีการที่พัฒนาโดย Microsoft ซึ่งคำนวณค่า perplexity ของแต่ละ token และลบ token ที่มีผลกระทบน้อยต่อการทำนายข้อความออก ในเวอร์ชัน LongLLMLingua แนวทางนี้ได้รับการปรับให้เหมาะกับเอกสารยาว โดยคำนึงถึงความเกี่ยวข้องของส่วนข้อความกับคำถามเฉพาะของผู้ใช้[4]
- Selective-Context: ใช้โมเดลภาษาขนาดเล็กเพื่อประเมิน self-information ของแต่ละ token และทิ้ง token ที่มีความเป็นข้อมูลน้อยที่สุดออก[5]
- PCRL (Prompt Compression via Reinforcement Learning): ฝึก agent ด้วย Reinforcement Learning ให้ตัดสินใจสำหรับแต่ละ token ว่า "เก็บไว้" หรือ "ลบออก" โดยมีเป้าหมายเพื่อเพิ่มค่าเมตริกคุณภาพ (เช่น ROUGE) ของคำตอบขั้นสุดท้ายให้สูงสุด[6]
การบีบอัดแบบนามธรรม (การสรุป)
ในแนวทางนี้ โมเดล compressor (มักมีขนาดเล็กกว่า) จะสร้างบทสรุปเชิงนามธรรมสั้นๆ ของข้อความต้นฉบับ ซึ่งจากนั้นจะถูกส่งต่อไปยัง LLM หลัก
- RECOMP (Retrieval-Compression-Prompting): สำหรับแต่ละเอกสารในฐานความรู้ จะมีการสร้างบทสรุป (summary) สั้นๆ ไว้ล่วงหน้า โดยคำนึงถึงคำถามที่เป็นไปได้ของผู้ใช้ (query-aware summary) ซึ่งช่วยให้ไม่เพียงแต่บีบอัด แต่ยังประมวลผลข้อมูลล่วงหน้าได้อีกด้วย[7]
- PRCA (Prompt Compression with Reinforced Context Aggregation): รวมการฝึกโมเดล summarizer เข้ากับ Reinforcement Learning เพื่อสร้างบทสรุปที่ช่วยปรับปรุงคุณภาพคำตอบของ LLM หลักให้ดีที่สุด[8]
- Prompt-SAW (Semantic Aware Winnowing): ก่อนการสรุป จะดึงกราฟความรู้ (entities และความสัมพันธ์) ออกจากข้อความ คัดเลือก node ที่เกี่ยวข้องของกราฟ และสร้างข้อความที่บีบอัดโดยอิงจากข้อมูลเหล่านั้น[9]
การบีบอัดแบบสกัด
วิธีการนี้ดึงส่วนสำคัญ (ประโยค, ย่อหน้า) ออกจากข้อความต้นฉบับโดยไม่มีการถอดความใหม่
- Reranker-LLMs: ใช้โมเดล reranker ที่ประเมินความสำคัญของแต่ละย่อหน้าหรือเอกสารสำหรับคำถามปัจจุบัน และคัดเลือกเฉพาะส่วนที่เกี่ยวข้องมากที่สุด[10]
- CompAct: แสดงการสกัด-สรุปแบบวนซ้ำ โมเดลจะนำส่วนต่างๆ ของข้อความยาวมาบีบอัดทีละส่วน แล้วตรวจสอบว่ามีข้อมูลเพียงพอสำหรับการตอบหรือไม่ หากยังไม่พอ จะเพิ่มส่วนถัดไปและบีบอัดอีกครั้ง โดยให้อัตราการบีบอัดสูงในขณะที่ยังคงคุณภาพไว้[11]
การกลั่น (distillation) และ "token ความจำ"
กลุ่มวิธีการใหม่ที่แทนที่ข้อความ โมเดลจะได้รับ token ทดแทนที่ผ่านการฝึกโดยเฉพาะหรือ embedding ที่บรรจุข้อมูลที่ถูกบีบอัด
- Gist Tokens: LLM จะถูก fine-tune ให้ "พับ" คำสั่งยาวๆ ให้กลายเป็น gist token พิเศษจำนวนน้อย (เช่น 20-30 token แทนหลายพันคำ) จากนั้น token เหล่านี้จะถูกใช้แทน prompt ต้นฉบับ โดยให้อัตราการบีบอัดสูงถึง 26 เท่าโดยสูญเสียคุณภาพน้อยที่สุด[12]
- Soft Prompt Tuning: แทนที่จะใช้ prompt ที่เป็นข้อความ จะใช้ "virtual token" ที่ฝึกได้ (embedding) ซึ่งปรับแต่งสำหรับการแก้ปัญหาเฉพาะ
- SelfCP: เสนอให้ใช้ LLM ที่ถูกแช่แข็งนั้นเองเป็น compressor โดยการป้อนส่วนข้อความพร้อมเครื่องหมายพิเศษ โมเดลจะสร้างการแทนที่ที่หนาแน่น (memory tokens) ซึ่งจากนั้นจะถูกใช้โดยโมเดลเดิมนั้นเองในการตอบ[13]
ประสิทธิภาพและการแลกเปลี่ยน
- การเร่งความเร็วและการลดต้นทุน: เนื่องจากความซับซ้อนของ transformer เพิ่มขึ้นแบบกำลังสอง ($O(n^2)$) ตามความยาวของลำดับ การลด prompt ลงหลายเท่าจึงให้การประหยัดอย่างมีนัยสำคัญ ตัวอย่างเช่น gist tokens ที่อัตราการบีบอัด 26 เท่าแสดงให้เห็นการประหยัด FLOPs สูงถึง 40%[12]
- การปรับปรุงคุณภาพ: บางครั้งการบีบอัด prompt อาจปรับปรุงคุณภาพคำตอบได้ หากข้อความต้นฉบับมีสัญญาณรบกวนหรือรายละเอียดที่ทำให้เบี่ยงเบนความสนใจ การลบบริบทที่ไม่เกี่ยวข้องออกช่วยให้โมเดลมุ่งความสนใจไปยังแง่มุมสำคัญของงานได้ดีขึ้น
- การแลกเปลี่ยนคุณภาพ (faithfulness): การบีบอัดที่รุนแรงเกินไปอาจนำไปสู่การสูญเสียรายละเอียดสำคัญ (วันที่, ชื่อ, การปฏิเสธ) ซึ่งจะทำให้คุณภาพคำตอบแย่ลง วิธีการเชิงนามธรรมมีความเสี่ยงต่อการเกิด hallucination เป็นพิเศษ การควบคุมความครบถ้วนและความถูกต้อง (faithfulness) ของ prompt ที่บีบอัดถือเป็นงานสำคัญ
ความเชื่อมโยงกับทิศทางอื่น
- Retrieval-Augmented Generation (RAG): RAG และการบีบอัด prompt มีความเชื่อมโยงกันอย่างใกล้ชิด RAG สามารถมองได้ว่าเป็นขั้นตอนการบีบอัดภายนอก ได้แก่ แทนที่จะประมวลผลฐานข้อมูลทั้งหมด จะทำการค้นหาและคัดเลือกเอกสารที่เกี่ยวข้อง การบีบอัด prompt เสริม RAG โดยลดปริมาณเอกสารที่คัดเลือกแล้วก่อนป้อนเข้า LLM
- In-Context Learning: ตัวอย่างใน context (demonstrations) ช่วยเพิ่มความยาวของ prompt อย่างมีนัยสำคัญ การบีบอัด demonstrations เหล่านี้ (เช่น ด้วย 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]