<EbeneX/>
Grundlagen LLM · Updated 11. März 2026

Context Compression

Definition

Techniken zur Komprimierung von Kontext-Informationen für LLMs – um mehr relevante Informationen in das begrenzte Kontextfenster zu packen.

Experte 3 Min. Lesezeit EN: Context Compression

Einfach erklärt

Context Compression reduziert die Menge an Text, die an ein LLM gesendet wird, ohne wichtige Informationen zu verlieren. Das ermöglicht längere effektive Kontexte und spart Kosten.

Das Problem:

Kontextfenster: 128k Tokens
Deine Daten: 200k Tokens
→ Passt nicht! Was tun?

Option 1: Abschneiden (verliert Infos)
Option 2: Komprimieren (erhält Essenz)

Kompression in Aktion:

Vorher (1000 Tokens):
"In dem Meeting am Montag, dem 15. März 2026, haben wir 
ausführlich über das neue Projekt gesprochen. Der Projektleiter 
Max Müller hat präsentiert, dass das Budget 500.000 Euro beträgt 
und die Deadline der 30. Juni ist. Es gab eine lange Diskussion 
über die technischen Anforderungen..."

Nachher (200 Tokens):
"Meeting 15.3.26: Projekt-Budget 500k€, Deadline 30.6., 
Projektleiter Max Müller. Technische Anforderungen diskutiert."

→ 80% weniger Tokens, Kerninfos erhalten

Technischer Deep Dive

Kompressionsstrategien

1. Extractive Compression:

def extractive_compress(text, target_ratio=0.3):
    """Wichtige Sätze extrahieren"""
    sentences = split_sentences(text)
    
    # Relevanz-Score für jeden Satz
    scores = [compute_importance(s) for s in sentences]
    
    # Top N% behalten
    n_keep = int(len(sentences) * target_ratio)
    top_indices = sorted(range(len(scores)), 
                         key=lambda i: scores[i], 
                         reverse=True)[:n_keep]
    
    # In Original-Reihenfolge
    top_indices.sort()
    return " ".join(sentences[i] for i in top_indices)

2. Abstractive Compression (LLM-basiert):

def abstractive_compress(text, model):
    """LLM fasst zusammen"""
    prompt = f"""Komprimiere den folgenden Text auf die 
    wichtigsten Fakten. Behalte alle Zahlen, Namen und Daten.
    
    Text: {text}
    
    Komprimierte Version:"""
    
    return model.generate(prompt)

3. Token-Level Compression (LLMLingua):

from llmlingua import PromptCompressor

compressor = PromptCompressor(
    model_name="microsoft/llmlingua-2-bert-base-multilingual-cased-meetingbank"
)

compressed = compressor.compress_prompt(
    original_prompt,
    rate=0.5,  # 50% Kompression
    force_tokens=["wichtig", "deadline", "budget"]  # Behalten
)

Chat-Historie komprimieren

class CompressedMemory:
    def __init__(self, max_tokens=4000):
        self.max_tokens = max_tokens
        self.messages = []
        self.summary = ""
    
    def add_message(self, role, content):
        self.messages.append({"role": role, "content": content})
        
        if self.count_tokens() > self.max_tokens:
            self._compress()
    
    def _compress(self):
        # Ältere Nachrichten zusammenfassen
        old_messages = self.messages[:-5]  # Letzte 5 behalten
        
        summary_prompt = f"""
        Bisherige Zusammenfassung: {self.summary}
        
        Neue Nachrichten:
        {format_messages(old_messages)}
        
        Aktualisiere die Zusammenfassung:
        """
        
        self.summary = llm.generate(summary_prompt)
        self.messages = self.messages[-5:]
    
    def get_context(self):
        return f"Zusammenfassung: {self.summary}\n\n" + \
               format_messages(self.messages)

RAG mit Compression

def compressed_rag(query, documents, max_context_tokens=8000):
    # 1. Relevante Dokumente abrufen
    relevant_docs = retrieve(query, documents, top_k=20)
    
    # 2. Komprimieren wenn nötig
    total_tokens = sum(count_tokens(d) for d in relevant_docs)
    
    if total_tokens > max_context_tokens:
        # Komprimiere jedes Dokument
        compression_ratio = max_context_tokens / total_tokens
        compressed_docs = [
            compress(d, ratio=compression_ratio) 
            for d in relevant_docs
        ]
    else:
        compressed_docs = relevant_docs
    
    # 3. An LLM senden
    context = "\n\n".join(compressed_docs)
    return llm.generate(f"Context: {context}\n\nFrage: {query}")

Trade-offs

MethodeKompressionQualitätSpeedKosten
TruncationBeliebig⭐⭐⭐⭐⭐⭐⭐Keine
Extractive30-50%⭐⭐⭐⭐⭐⭐⭐Gering
LLM Summary50-90%⭐⭐⭐⭐⭐⭐Mittel
LLMLingua50-80%⭐⭐⭐⭐⭐⭐⭐⭐Gering

Context Compression ist wie eine Zusammenfassung für eine Prüfung: Statt 500 Seiten Lehrbuch mitzunehmen, hast du 10 Seiten mit den wichtigsten Punkten – kompakter, aber die Essenz ist da.

Reduziert Token-Anzahl bei Erhalt der wichtigen Informationen

Ermöglicht längere effektive Kontexte trotz Fenster-Limits

Methoden: Summarization, Filtering, Embedding-basiert

RAG-Systeme

Mehr Dokumente in den Kontext packen

Lange Konversationen

Chat-Historie komprimieren statt abschneiden

Code-Assistenten

Große Codebasen effizient einbinden

Kosten-Optimierung

Weniger Tokens = niedrigere API-Kosten

Was ist der Unterschied zu Prompt Compression?

Prompt Compression fokussiert auf den Prompt selbst. Context Compression ist breiter: Dokumente, Chat-Historie, Code – alles was in den Kontext geht.

Verliere ich wichtige Informationen?

Möglich. Gute Kompression erhält Wichtiges und entfernt Redundanz. Schlechte Kompression kann kritische Details verlieren. Testen ist wichtig.

Wann lohnt sich Context Compression?

Bei langen Kontexten nahe am Limit, bei hohen API-Kosten, bei Latenz-Anforderungen. Für kurze Prompts ist der Overhead nicht wert.

Kann ich das Modell selbst komprimieren lassen?

Ja, 'Fasse zusammen' funktioniert. Aber: Kostet selbst Tokens und kann Fehler einführen. Spezialisierte Tools sind oft besser.

Dein persönliches Share-Bild für Instagram – 1080×1080px, bereit zum Posten.