Context Compression

Weniger Tokens, ohne das Wesentliche zu verlieren

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

Experte2 Min Lesezeit

Erklärung starten

Auf einen Blick

3 Punkte

  1. Reduziert Token-Anzahl bei Erhalt der wichtigen Informationen
  2. Ermöglicht längere effektive Kontexte trotz Fenster-Limits
  3. Methoden: Summarization, Filtering, Embedding-basiert

Sofortantwort

Context Compression einfach erklärt

Komprimierung von Kontext, um mehr Informationen ins Kontextfenster zu packen.

Kurz gesagt
Reduziert Token-Anzahl bei Erhalt der wichtigen Informationen
Typischer Einsatz
RAG-Systeme, Lange Konversationen, Code-Assistenten
Wichtig zu wissen
Methoden: Summarization, Filtering, Embedding-basiert

Context Compression im Überblick

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: begrenzt
Deine Daten: größer als der verfügbare Kontext
→ Passt nicht vollständig. Was tun?

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

Kompression in Aktion:

Vorher:
"In dem Meeting wurde ausführlich über ein neues Projekt gesprochen. 
Die Projektleitung stellte Budgetrahmen, Zeitplan und technische 
Anforderungen vor. Danach folgte eine längere Diskussion über Risiken, 
Abhängigkeiten und nächste Schritte."

Nachher:
"Meeting: Projekt mit Budgetrahmen, Zeitplan, technischen Anforderungen, 
Risiken, Abhängigkeiten und nächsten Schritten besprochen."

→ deutlich weniger Text, Kerninfos bleiben erhalten

Technisch betrachtet

Kompressionsstrategien

1. Extractive Compression:

def extractive_compress(text, target_ratio):
    """Wichtige Sätze extrahieren"""
    sentences = split_sentences(text)
    
    # Relevanz-Score für jeden Satz
    scores = [compute_importance(s) for s in sentences]
    
    # Wichtigste Sätze 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="compression-model"
)

compressed = compressor.compress_prompt(
    original_prompt,
    rate=target_compression_rate,
    force_tokens=["wichtig", "deadline", "budget"]  # Behalten
)

Chat-Historie komprimieren

class CompressedMemory:
    def __init__(self, max_tokens):
        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[:-recent_message_count]
        
        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[-recent_message_count:]
    
    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):
    # 1. Relevante Dokumente abrufen
    relevant_docs = retrieve(query, documents, top_k=retrieval_limit)
    
    # 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
Truncationflexibeloft riskantsehr schnellkeine Zusatzkosten
Extractivemoderatabhängig vom Rankingschnellgering
LLM Summaryoft starkabhängig von Modell und Promptlangsamerzusätzlich
Spezialisierte Kompressionvariabelabhängig von Tool und Evaluationmitteltoolabhängig

Schritt für Schritt

Kontext gezielt verdichten

Kompression ist eine kontrollierte Auswahl: Relevante Fakten, Bedingungen und Quellen bleiben erhalten, Wiederholungen und Nebensachen gehen.

  1. Budget und Risiko festlegen

    Planung

    Die Anwendung bestimmt, wie viele Tokens verfügbar sind und welche Details auf keinen Fall verloren gehen dürfen.

    Tokenbudget + Pflichtinformationen
  2. Redundanz entfernen

    Filter

    Wiederholte Aussagen, Formatballast und nicht relevante Passagen werden vor einer Modellzusammenfassung reduziert.

    voller Kontext → relevante Ausschnitte
  3. Essenz verdichten

    Kompression

    Eine Zusammenfassung oder ein spezialisiertes Verfahren hält Entscheidungen, Fakten und offene Punkte kompakt fest.

    Ausschnitte → kompakte Notizen
  4. Mit Quellen absichern

    Prüfung

    Wichtige Aussagen behalten Verweise auf die Originalstellen, damit Details bei Bedarf nachgeladen werden können.

    Kurzfassung + Quellenanker

Konkretes Beispiel

Beispiel: Ein Projektverlauf im Chat

Ein Projektassistent begleitet ein Team über viele Wochen und muss den aktuellen Stand im Blick behalten.

Vollständiger Verlauf

Jede frühere Nachricht wird mitgesendet: Diskussionen, Zwischenstände, Wiederholungen und bereits erledigte Fragen.

Komprimierte Arbeitsnotiz

Der Assistent behält Ziele, Entscheidungen, Verantwortliche, offene Risiken und Links zu den relevanten Originalnachrichten.

Eine gute Kurzfassung ist handlungsfähig und rückverfolgbar. Sie ersetzt die Quelle nicht, sondern macht sie gezielt erreichbar.

Einordnung

Vorteile und Grenzen

Das spricht dafür

  • Schafft Raum für neue Informationen innerhalb eines begrenzten Kontextfensters.
  • Kann Kosten und Antwortzeit deutlich reduzieren.
  • Bewahrt bei langen Chats den handlungsrelevanten Verlauf.
  • Lässt sich mit Retrieval kombinieren, um Details bei Bedarf nachzuladen.

Das solltest du beachten

  • Zusammenfassungen können Bedingungen, Zahlen oder Ausnahmen verlieren.
  • Ein zusätzlicher Verarbeitungsschritt kostet Zeit und kann Fehler einführen.
  • Für kurze und einfache Aufgaben ist Kompression oft unnötig.
  • Die Qualität muss mit realen Folgefragen geprüft werden.
Vertiefung · für Fortgeschrittene

Kompression mit Rückweg zur Quelle

Der sicherste Ablauf kombiniert Verdichtung mit eindeutigen Referenzen auf die ursprünglichen Inhalte.

Wissenskarte

Essenz bewahren

Je größer das Risiko eines Detailverlusts, desto wichtiger werden Quellenanker und eine Evaluation mit kritischen Fragen. Context Compression gliedert sich in: Originalkontext, Tokenbudget, Filter, Kompressor, Kurzfassung, Quellenanker.

01Einsatzbereiche

Wann ist Context Compression sinnvoll?

Geeignet für

  • RAG-SystemeMehr Dokumente in den Kontext packen
  • Lange KonversationenChat-Historie komprimieren statt abschneiden
  • Code-AssistentenGroße Codebasen effizient einbinden
  • Kosten-OptimierungWeniger Tokens können API-Kosten und Latenz reduzieren

↑ Inhalt

02Werkzeuge

Womit Context Compression umgesetzt wird

↑ Inhalt

Merksatz

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.

  1. Reduziert Token-Anzahl bei Erhalt der wichtigen Informationen
  2. Ermöglicht längere effektive Kontexte trotz Fenster-Limits
  3. Methoden: Summarization, Filtering, Embedding-basiert

04Redaktion

Herkunft und Stand

Redaktion und Aktualität

Ebenex RedaktionRedaktion

Veröffentlicht
Aktualisiert

Dieses Feld entwickelt sich schnell. Oben stehen Veröffentlichung und letzte Änderung; ein Prüfdatum kommt dazu, sobald die Erklärung nach ihrer letzten Änderung geprüft wurde.

↑ Inhalt

05FAQ

Häufige Fragen zu Context Compression

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, hohen Token-Kosten oder Latenz-Anforderungen. Für kurze Prompts kann der zusätzliche Aufwand den Nutzen übersteigen.

Kann ich das Modell selbst komprimieren lassen?

Ja, einfache Zusammenfassungen können helfen. Sie kosten aber selbst Tokens und können Fehler einführen. Spezialisierte oder evaluierte Verfahren sind oft robuster.

↑ Inhalt

06Weiterlernen

Was möchtest du als Nächstes verstehen?

  • Grundlage nachholen

    Kontextfenster

    Maximale Textmenge, die ein Sprachmodell verarbeiten kann.

  • Technisch vertiefen

    Prompt Compression

    Prompts kürzen ohne Informationsverlust – für weniger Kosten und geringere Latenz.

↑ Inhalt