Compressão de prompt

From Systems analysis wiki
Jump to navigation Jump to search

A compressão de prompt (em inglês: prompt compression) é um conjunto de métodos em engenharia de prompt que visam reduzir o comprimento do texto de entrada (prompt) para modelos de linguagem grandes (LLMs), preservando as informações essenciais[1]. Com o aumento da janela de contexto dos LLMs para milhões de tokens (por exemplo, no Google Gemini), tornou-se possível processar textos muito longos, mas isso criou novos desafios: alto custo de chamadas, aumento da latência e diminuição da qualidade do raciocínio devido ao efeito de "perda no meio" (lost in the middle)[2].

A compressão de prompt resolve esses problemas ao concentrar os dados mais essenciais em uma entrada reduzida e descartar informações redundantes. Isso diminui o risco de exceder o limite de contexto, acelera a geração e reduz os custos, mantendo a precisão das respostas[3].

Métodos de compressão de prompt

Os métodos de compressão de prompt podem ser divididos em várias classes principais.

Remoção de tokens (filtragem)

Esta abordagem consiste em remover os tokens, frases ou sentenças menos informativos do texto original, sem alterar as partes restantes. A importância dos tokens é determinada por heurísticas.

  • LLMLingua: Um método desenvolvido pela Microsoft que calcula a perplexidade de cada token e remove aqueles que têm pouco impacto na previsibilidade do texto. Na versão LongLLMLingua, essa abordagem é adaptada para documentos longos, considerando a relevância dos fragmentos em relação a uma consulta específica do usuário[4].
  • Selective-Context: Utiliza um modelo de linguagem menor para avaliar a self-information de cada token e descarta os tokens com menor informatividade[5].
  • PCRL (Prompt Compression via Reinforcement Learning): Treina um agente usando aprendizagem por reforço para tomar uma decisão para cada token — "manter" ou "remover" — com o objetivo de maximizar uma métrica de qualidade (por exemplo, ROUGE) da resposta final[6].

Compressão abstrativa (resumo)

Nesta abordagem, um modelo compressor (geralmente menor) gera um resumo abstrato e conciso do texto original, que é então passado para o LLM principal.

  • RECOMP (Retrieval-Compression-Prompting): Para cada documento em uma base de conhecimento, um resumo conciso (summary) é gerado antecipadamente, levando em conta possíveis consultas do usuário (query-aware summary). Isso permite não apenas comprimir, mas também pré-processar a informação[7].
  • PRCA (Prompt Compression with Reinforced Context Aggregation): Combina o treinamento de um modelo resumidor com aprendizagem por reforço para gerar resumos que maximizem a qualidade das respostas do LLM principal[8].
  • Prompt-SAW (Semantic Aware Winnowing): Antes da sumarização, extrai um grafo de conhecimento (entidades e relações) do texto, seleciona os nós relevantes do grafo e, com base neles, gera um texto comprimido[9].

Compressão extrativa

Este método extrai fragmentos-chave (sentenças, parágrafos) do texto original sem parafraseá-los.

  • Reranker-LLMs: Utiliza um modelo de reclassificação (reranker) que avalia a importância de cada parágrafo ou documento para a consulta atual e seleciona apenas os mais relevantes[10].
  • CompAct: Demonstra uma extração-sumarização iterativa. O modelo processa segmentos de um texto longo sequencialmente, comprime-os e verifica se a informação é suficiente para a resposta. Caso contrário, adiciona o próximo segmento e comprime novamente, alcançando uma compressão significativa com preservação da qualidade[11].

Destilação e "tokens de memória"

Uma nova classe de métodos onde, em vez de texto, o modelo recebe tokens substitutos especialmente treinados ou embeddings que contêm informações comprimidas.

  • Gist Tokens: Um modelo LLM é ajustado para "condensar" instruções longas em um pequeno conjunto de gist tokens especiais (por exemplo, 20-30 tokens em vez de vários milhares). Esses tokens são então usados no lugar do prompt original, proporcionando uma compressão de até 26 vezes com perda mínima de qualidade[12].
  • Soft Prompt Tuning: Em vez de um prompt textual, são utilizados "tokens virtuais" treináveis (embeddings) que são ajustados para resolver uma tarefa específica.
  • SelfCP: Propõe o uso do próprio LLM congelado como compressor. Ao fornecer um segmento de texto com marcadores especiais, o modelo gera uma representação densa (memory tokens), que é então utilizada por ele mesmo para gerar a resposta[13].

Eficiência e trade-offs

  • Aceleração e redução de custos: Como a complexidade de um transformer cresce quadraticamente ($O(n^2)$) com o comprimento da sequência, reduzir o prompt várias vezes resulta em uma economia substancial. Por exemplo, os gist tokens, com uma compressão de 26 vezes, demonstram uma economia de até 40% em FLOPs[12].
  • Melhora da qualidade: Às vezes, a compressão de prompt pode até melhorar a qualidade das respostas, especialmente se o texto original continha ruído ou detalhes distrativos. A remoção de contexto irrelevante ajuda o modelo a focar nos aspectos importantes da tarefa.
  • Trade-off de qualidade (faithfulness): Uma compressão excessivamente agressiva pode levar à perda de detalhes importantes (datas, nomes, negações), o que degrada a qualidade da resposta. Métodos abstrativos são particularmente suscetíveis ao risco de alucinações. O controle da completude e da precisão (faithfulness) do prompt comprimido é uma tarefa fundamental.

Relação com outras áreas

  • Geração Aumentada por Recuperação (RAG): RAG e a compressão de prompt estão intimamente relacionados. O RAG pode ser visto como uma etapa externa de compressão: em vez de processar todo o banco de dados, realiza-se uma busca e seleção de documentos relevantes. A compressão de prompt complementa o RAG, reduzindo o volume dos documentos já selecionados antes de serem enviados ao LLM.
  • In-Context Learning: Exemplos no contexto (demonstrações) aumentam significativamente o comprimento do prompt. A compressão dessas demonstrações (por exemplo, usando Instruction Distillation, onde múltiplos exemplos são substituídos por uma única instrução curta) é uma área de pesquisa ativa.

Referências

  • 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.

Notas

  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]