Prompt compression — การบีบอัด prompt

From Systems analysis Wiki
Jump to navigation Jump to search

การบีบอัด 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.

หมายเหตุ

  1. Jha, S., et al. (2024). «Characterizing Prompt Compression Methods for Long Context Inference». arXiv. [1]
  2. «Efficient Prompting Methods for Large Language Models: A Survey». arXiv. [2]
  3. «Prompt Compression: A Guide With Python Examples». DataCamp. [3]
  4. Jiang, H., et al. (2023). «LLMLingua: Compressing Prompts for Accelerated Inference of Large Language Models». arXiv.
  5. Li, M. (2023). «Compressing context to summarize and answer questions». arXiv.
  6. Jung, H., & Kim, K. (2023). «Learning to Compress Prompts with Reinforcement Learning». arXiv.
  7. Xu, F., et al. (2024). «RECOMP: Improving Retrieval-Augmented LMs with Compression and Selective Augmentation». arXiv.
  8. Yang, C., et al. (2023). «PRCA: A new framework for prompt compression». arXiv.
  9. Ali, M., et al. (2024). «Prompt-SAW: A new method for prompt compression». arXiv.
  10. Pradeep, R., et al. (2023). «How to select the best passages for RAG?». arXiv.
  11. Yoon, J., et al. (2024). «CompAct: A new framework for interactive prompt compression». arXiv.
  12. 12.0 12.1 Mu, J., et al. (2023). «Learning to Compress Prompts with Gist Tokens». OpenReview. [4]
  13. Gao, C., et al. (2024). «SelfCP: Compressing Over-Limit Prompt via the Frozen Large Language Model Itself». arXiv. [5]