Nén prompt
Nén prompt (tiếng Anh: prompt compression) — là tập hợp các phương pháp trong prompt engineering nhằm rút ngắn độ dài văn bản đầu vào (prompt) cho các mô hình ngôn ngữ lớn (LLM) trong khi vẫn giữ lại thông tin quan trọng[1]. Với sự mở rộng cửa sổ ngữ cảnh của LLM lên đến hàng triệu token (ví dụ, Google Gemini), khả năng xử lý các văn bản rất dài đã trở thành hiện thực, nhưng điều này tạo ra những vấn đề mới: chi phí gọi API cao, độ trễ tăng và chất lượng suy luận giảm do hiệu ứng "mất thông tin ở giữa"[2].
Nén prompt giải quyết những vấn đề này bằng cách tập trung dữ liệu quan trọng nhất vào đầu vào được rút gọn và loại bỏ những phần dư thừa. Điều này giảm nguy cơ vượt quá giới hạn ngữ cảnh, tăng tốc độ sinh văn bản và giảm chi phí, đồng thời vẫn duy trì độ chính xác của câu trả lời[3].
Các phương pháp nén prompt
Các phương pháp nén prompt có thể được chia thành một số lớp chính.
Loại bỏ token (lọc)
Cách tiếp cận này bao gồm việc loại bỏ các token, cụm từ hoặc câu ít thông tin nhất khỏi văn bản gốc mà không thay đổi các phần còn lại. Mức độ quan trọng của token được xác định theo phương pháp heuristic.
- LLMLingua: Phương pháp do Microsoft phát triển, tính toán perplexity của từng token và loại bỏ những token ít ảnh hưởng đến khả năng dự đoán văn bản. Trong phiên bản LongLLMLingua, cách tiếp cận này được điều chỉnh cho các tài liệu dài, tính đến độ liên quan của các đoạn văn bản so với truy vấn cụ thể của người dùng[4].
- Selective-Context: Sử dụng một mô hình ngôn ngữ nhỏ để đánh giá self-information của từng token và loại bỏ các token có độ thông tin thấp nhất[5].
- PCRL (Prompt Compression via Reinforcement Learning): Huấn luyện một tác nhân bằng Reinforcement Learning để đưa ra quyết định cho từng token — "giữ lại" hay "loại bỏ" — nhằm tối đa hóa chỉ số chất lượng (ví dụ, ROUGE) của câu trả lời cuối cùng[6].
Nén trừu tượng (tóm tắt)
Trong cách tiếp cận này, mô hình nén (thường có kích thước nhỏ hơn) tạo ra một bản tóm tắt trừu tượng ngắn gọn của văn bản gốc, sau đó được truyền cho LLM chính.
- RECOMP (Retrieval-Compression-Prompting): Đối với mỗi tài liệu trong cơ sở tri thức, một bản tóm tắt ngắn gọn (summary) có tính đến các truy vấn có thể của người dùng (query-aware summary) được tạo ra trước. Điều này cho phép không chỉ nén mà còn xử lý thông tin trước[7].
- PRCA (Prompt Compression with Reinforced Context Aggregation): Kết hợp việc huấn luyện mô hình tóm tắt với Reinforcement Learning để tạo ra các bản tóm tắt giúp tối đa hóa chất lượng câu trả lời của LLM chính[8].
- Prompt-SAW (Semantic Aware Winnowing): Trước khi tóm tắt, trích xuất đồ thị tri thức (các thực thể và quan hệ) từ văn bản, chọn các nút đồ thị liên quan và dựa trên đó tạo ra văn bản nén[9].
Nén trích xuất
Phương pháp này trích xuất các đoạn văn bản quan trọng (câu, đoạn văn) từ văn bản gốc mà không diễn đạt lại chúng.
- Reranker-LLMs: Sử dụng mô hình xếp hạng (reranker) đánh giá mức độ quan trọng của mỗi đoạn văn hoặc tài liệu đối với truy vấn hiện tại và chỉ chọn những đoạn liên quan nhất[10].
- CompAct: Thể hiện phương pháp trích xuất-tóm tắt lặp đi lặp lại. Mô hình lần lượt lấy các đoạn văn bản dài, nén chúng và kiểm tra xem đã đủ thông tin để trả lời chưa. Nếu chưa, thêm đoạn tiếp theo và nén lại, đạt được mức nén đáng kể trong khi vẫn duy trì chất lượng[11].
Chưng cất và "memory token"
Lớp phương pháp mới, trong đó thay vì văn bản, mô hình nhận các token đại diện được huấn luyện đặc biệt hoặc các embedding chứa thông tin nén.
- Gist Tokens: Mô hình LLM được fine-tuning để "cuộn" các hướng dẫn dài thành một tập hợp nhỏ các gist token đặc biệt (ví dụ, 20-30 token thay vì vài nghìn token). Các token này sau đó được sử dụng thay cho prompt gốc, đạt mức nén lên đến 26 lần với mức mất chất lượng tối thiểu[12].
- Soft Prompt Tuning: Thay vì prompt văn bản, sử dụng các "token ảo" có thể huấn luyện (embedding) được tinh chỉnh để giải quyết một nhiệm vụ cụ thể.
- SelfCP: Đề xuất sử dụng chính LLM đã được đóng băng làm bộ nén. Bằng cách cung cấp cho nó một đoạn văn bản với các nhãn đặc biệt, mô hình tạo ra một biểu diễn dày đặc (memory tokens), sau đó được chính mô hình đó sử dụng để trả lời[13].
Hiệu quả và sự đánh đổi
- Tăng tốc và giảm chi phí: Vì độ phức tạp của transformer tăng theo bình phương ($O(n^2)$) theo độ dài chuỗi, việc rút ngắn prompt nhiều lần mang lại tiết kiệm đáng kể. Ví dụ, gist tokens với mức nén 26 lần cho thấy tiết kiệm đến 40% FLOPs[12].
- Nâng cao chất lượng: Đôi khi nén prompt có thể cải thiện chất lượng câu trả lời nếu văn bản gốc chứa nhiễu hoặc các chi tiết gây phân tâm. Việc loại bỏ ngữ cảnh không liên quan giúp mô hình tập trung tốt hơn vào các khía cạnh quan trọng của nhiệm vụ.
- Sự đánh đổi về chất lượng (faithfulness): Nén quá mức có thể dẫn đến mất các chi tiết quan trọng (ngày tháng, tên người, phủ định), làm giảm chất lượng câu trả lời. Các phương pháp trừu tượng đặc biệt dễ bị rủi ro ảo giác. Kiểm soát tính đầy đủ và chính xác (faithfulness) của prompt nén là nhiệm vụ then chốt.
Mối liên hệ với các lĩnh vực khác
- Retrieval-Augmented Generation (RAG): RAG và nén prompt có mối liên hệ chặt chẽ. RAG có thể được xem như một giai đoạn nén bên ngoài: thay vì xử lý toàn bộ cơ sở dữ liệu, hệ thống tìm kiếm và chọn lọc các tài liệu liên quan. Nén prompt bổ sung cho RAG bằng cách giảm khối lượng các tài liệu đã được chọn lọc trước khi đưa vào LLM.
- In-Context Learning: Các ví dụ trong ngữ cảnh (minh họa) làm tăng đáng kể độ dài prompt. Nén các minh họa này (ví dụ, thông qua Instruction Distillation, trong đó nhiều ví dụ được thay thế bằng một hướng dẫn ngắn gọn) là một lĩnh vực nghiên cứu tích cực.
Tài liệu tham khảo
- 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.
Ghi chú
- ↑ 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]