Какие приёмы prompt compression вы знаете (LLMLingua)?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
LLMLingua и похожие методы решают задачу сжатия промпта без сильной потери смысла. Обычно ждут понимание, что сжимают не «все подряд», а убирают наименее важные токены/фразы, сохраняя инструкции, ограничения и ключевой контекст. Также важно упомянуть, что компрессия полезна для уменьшения latency, стоимости и укладывания контекста в лимит окна.
Определение:
Prompt compression — это набор приёмов, которые уменьшают длину входного текста для LLM, сохраняя максимально полезную информацию.
LLMLingua — один из подходов к такой компрессии: он оценивает важность токенов/фрагментов и удаляет или сокращает наименее значимые части промпта.
На практике это помогает вместить больше полезного контекста в ограниченное окно модели и снизить стоимость вызова.
Пример использования:
Например, в RAG-сценарии в промпт попадает длинная история диалога, инструкция и несколько найденных документов. Перед отправкой в LLM лишние повторы, служебный текст и малозначимые фрагменты сжимаются, а остаются вопрос пользователя, ключевые факты и ограничения ответа.
# Упрощённый псевдокод идеи prompt compression
prompt = """
Ты - помощник. Ответь кратко и по делу.
Контекст: ... очень длинный текст ...
Дополнительные детали: ... ещё длинный текст ...
Вопрос: Какие риски у этой схемы?
"""
compressed_prompt = compress(prompt, keep=["инструкция", "вопрос", "ключевые факты"])
response = llm.generate(compressed_prompt)
Пояснение кода:
Код не требуется, потому что здесь важен сам принцип, а не конкретный API.
Разбор примера по шагам:
- Входной промпт содержит полезные и шумовые части.
- Функция
compress(...)условно оценивает, какие части несут основную смысловую нагрузку. - Сохраняются инструкции, вопрос и важные факты.
- Убираются повторы, второстепенные детали и длинные фрагменты, которые мало влияют на ответ.
- Сжатый промпт отправляется в LLM.
Ключевые моменты:
- LLMLingua — это не «сжатие текста по символам», а отбор наиболее информативных токенов и фрагментов.
- Важно сохранять системные инструкции, ограничения, вопрос пользователя и сущностно важные факты.
- Компрессия полезна для снижения стоимости, задержки и для работы с длинным контекстом.
- Есть риск потери деталей, поэтому агрессивное сжатие может ухудшить качество ответа.
- Особенно хорошо подходит для длинных промптов в RAG, суммаризации, агентных сценариях и многошаговых диалогах.
- На собеседовании полезно показать понимание баланса: меньше токенов, но без потери критического смысла.