Prompt Compression
Prompt-Komprimierung verkürzt LLM-Eingaben, indem sie wenig informative Tokens entfernt oder den Kontext kompakt kodiert. So sinken Kosten und Latenz, ohne die Antworten zu beeinträchtigen.
Prompt-Komprimierung verkürzt die Eingabe eines großen Sprachmodells (LLM), ohne die Informationen zu verlieren, die das Modell für seine Antwort benötigt. Dadurch verwendet eine Anfrage weniger Token, wird schneller verarbeitet und passt in das Kontextfenster. Die Verfahren reichen vom Löschen vorhersehbarer Wörter mithilfe eines kleinen Sprachmodells über die Zusammenfassung langer Verläufe bis zum Trainieren kompakter, gelernter Token, die ganze Textabschnitte ersetzen. Die Komprimierung lohnt sich bei langen Prompts, die häufig gesendet werden, etwa in Retrieval-Augmented-Generation-Pipelines (RAG), die viele abgerufene Dokumente einfügen, bei KI-Agenten, deren Verlauf mit jedem Schritt wächst, sowie bei Anwendungen mit langen Anweisungen und Beispielen. Anbieter berechnen die Kosten pro Eingabetoken, und der Rechenaufwand für Attention wächst mit der Eingabelänge. Eine um die Hälfte komprimierte Eingabe halbiert daher ungefähr die Eingabekosten und verringert die Inferenzlatenz.
So funktioniert die Prompt-Komprimierung#
Bei der harten Prompt-Komprimierung wird Text in kürzeren Text umgewandelt, den jedes LLM lesen kann, auch ein Modell mit geschlossener API. Die meisten Verfahren bewerten jedes Token mit einem kleinen Sprachmodell und entfernen Token, deren Vorhersage einfach ist, da sie die wenigsten Informationen enthalten. Selective Context wendet diese Idee auf Wörter und Wortgruppen an. Microsofts LLMLingua ergänzt eine Budgetsteuerung, die Anweisung, Beispiele und Frage unterschiedliche Komprimierungsraten zuweist, sowie eine iterative Token-Ausdünnung. So wird eine bis zu 20-fache Komprimierung bei geringen Leistungseinbußen erreicht. LLMLingua-2 formuliert die Komprimierung als Token-Klassifizierung mit einem bidirektionalen Encoder wie XLM-RoBERTa um, der mit aus einem größeren LLM abgeleiteten Komprimierungsbeispielen trainiert wird. Das Verfahren ist drei- bis sechsmal schneller als frühere Methoden und beschleunigt die Latenz von Anfang bis Ende bei einer zwei- bis fünffachen Komprimierung um das 1,6- bis 2,9-Fache. Bei abstraktiven Verfahren wird das Modell stattdessen gebeten, den Kontext zusammenzufassen. Das ermöglicht stärkere Komprimierung, kann aber benötigte Einzelheiten auslassen.
Bei der weichen Prompt-Komprimierung wird Text in einige gelernte Einbettungen umgewandelt, die das Modell anstelle der ursprünglichen Token liest. Gist-Token trainieren LLaMA-7B und FLAN-T5-XXL darauf, eine Anweisung in eine Handvoll spezieller Token zu komprimieren. Dadurch wird eine bis zu 26-fache Komprimierung und eine Verringerung der FLOPs um bis zu 40 % erreicht. Für diese Verfahren muss auf die Modellgewichte zugegriffen werden können. Sie eignen sich daher für offene Modelle.
Der Kern der Komprimierung auf Token-Ebene passt in wenige Zeilen PyTorch. In diesem Beispiel wird GPT-2 mit 124 Millionen Parametern aus Hugging Face Transformers verwendet, um die Selbstinformation jedes Tokens zu berechnen – den negativen Logarithmus der Wahrscheinlichkeit des Tokens angesichts aller vorherigen Token. Beibehalten wird die Hälfte mit dem höchsten Überraschungswert:
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")
prompt = (
"The quarterly maintenance report states that, as of the end of the quarter, a total of three conveyor "
"belts on line 4 were found to have worn bearings, and all of them were replaced on March 12 by the night shift."
)
ids = tokenizer(prompt, return_tensors="pt").input_ids[0]
# Self-information of each token, -log p(token | preceding tokens), under a small language model
with torch.no_grad():
logits = model(ids[None]).logits[0, :-1]
info = -logits.log_softmax(-1).gather(1, ids[1:, None]).squeeze(1)
# Keep the first token and the more surprising half of the rest, in their original order
keep = torch.cat([torch.tensor([True]), info > info.median()])
compressed = tokenizer.decode(ids[keep])
print(f"{len(ids)} -> {keep.sum().item()} tokens: {compressed}")Die Ausgabe lautet 46 -> 23 tokens: The quarterly maintenance report states, a three convey on line 4 found worn bearings all replaced on March 12 by night shift. Die Fakten bleiben erhalten, darunter Zeile 4, verschlissene Lager, der 12. März und die Nachtschicht. Vorhersehbare Füllwörter wie „zum Ende des Quartals“ verschwinden dagegen. Das Fragment „förd“, übrig geblieben von „Förderbänder“, ist ein typisches Ergebnis, wenn einzelne Token entfernt werden. Deshalb entfernen manche Verfahren ganze Wörter oder Wortgruppen.
Bilder komprimieren#
Bild-Sprach-Modelle wandeln jedes Bild in Hunderte visuelle Token um, von denen viele redundant sind. FastV entfernt nach der zweiten Schicht die Hälfte der Bild-Token und senkt die FLOPs bei LLaVA-1.5-13B um 45 %, ohne die Leistung zu beeinträchtigen. Eine ähnliche Idee wird beim Zusammenführen von Token in Vision Transformers angewendet. Ein Objektdetektor kann Bilder ebenfalls komprimieren: Ultralytics YOLO26 reduziert ein Foto auf Results.summary(), eine Liste mit dem Klassennamen, der Konfidenz und den Koordinaten des Begrenzungsrahmens jedes Objekts. Eine LLM-Verarbeitungskette, die nur wissen muss, welche Objekte wo vorhanden sind, kann so einige Dutzend Token pro Objekt senden statt eines Bildes, das Hunderte bis über tausend Token kostet.
Prompt-Komprimierung im Vergleich zu verwandten Techniken#
- Prompt-Caching: Speichert die berechneten Zustände des Modells für einen wiederholten Prompt-Präfix, damit sie nicht erneut berechnet werden müssen. Die Prompt-Länge bleibt gleich. Beide Verfahren lassen sich gut kombinieren, indem der veränderliche Teil eines Prompts komprimiert und der feste Teil zwischengespeichert wird.
- Komprimierung des KV-Cache: Entfernt oder quantisiert die Schlüssel-Wert-Zustände im Modell während der Generierung. Die Prompt-Komprimierung bearbeitet die Eingabe, bevor das Modell sie erhält.
- Prompt-Engineering: Menschen verfassen klare und knappe Prompts von Hand. Die Komprimierung erfolgt automatisch und kann auch Inhalte bearbeiten, die niemand anpasst, etwa abgerufene Dokumente.
- Kontextgestaltung: Das umfassendere Vorgehen, bei dem festgelegt wird, was in jedem Schritt in den Kontext eines Modells gelangt. Komprimierung ist neben Abruf und Filterung eines der verfügbaren Werkzeuge.
- Prompt-Anreicherung: Ergänzt einen Prompt um abgerufenen oder generierten Kontext. Verarbeitungsketten reichern den Kontext häufig zuerst an und komprimieren anschließend das Ergebnis.
Anwendungen in der Praxis#
- RAG-Verarbeitungsketten: Abgerufene Textpassagen werden vor der Generierung komprimiert. Dadurch passen mehr Quellen in das Budget, und das Modell konzentriert sich auf die Sätze, die die Frage beantworten.
- Verläufe von Agenten: Programmier- und Rechercheagenten kürzen ihren Verlauf, wenn der Kontext voll wird. Dabei ersetzen sie alte Werkzeugausgaben und Gesprächsrunden durch eine Zusammenfassung, da die Genauigkeit nachlässt, wenn sich veraltete Inhalte in langen Kontexten ansammeln.
- Few-Shot-Prompts: Lange Listen ausgearbeiteter Beispiele lassen sich gut komprimieren. Die Budgetsteuerung von LLMLingua entfernt zunächst vollständige Beispiele, geordnet nach ihrer Perplexität. Anschließend dünnt sie einzelne Token aus und behält dabei in den Standardeinstellungen des Papers 85 % der Anweisung und 90 % der Frage bei.










