Dokumentenstapel löst sich in Datenpunkte auf und formt einen strukturierten Knowledge Graph

    Entity Extraction mit LLMs – vom Dokument zum Knowledge Graph

    30. Mai 20264 min Lesezeit
    Till Freitag

    TL;DR: „Vor zwei Jahren war Entity Extraction ein eigenes ML-Projekt. Heute ist es ein gut gesetzter Prompt mit JSON-Schema und 200 Zeilen Pipeline-Code. Die schwierige Arbeit liegt nicht in der Extraction, sondern in Deduplizierung und Resolution."

    — Till Freitag

    Worum es geht

    Ein Knowledge Graph ist nur so gut wie die Pipeline, die ihn füllt. Bis 2023 war Entity Extraction ein Spezialgebiet: spaCy, Stanford NER, Custom-Trainings, viele Edge Cases. Mit LLMs ist daraus ein gut beherrschbares Engineering-Problem geworden.

    Dieser Artikel zeigt, wie eine moderne Pipeline aussieht, wo sie reibt, und welche Tools die Arbeit abnehmen.

    Die vier Schritte einer Extraction-Pipeline

    Dokumente
       ↓ Chunking              (Token-Limits, Kontextfenster)
    Chunks
       ↓ Extraction (LLM)      (strukturierter Output)
    Triplets (Subject, Relation, Object)
       ↓ Deduplizierung        (gleiche Entität, anderer Wortlaut)
       ↓ Resolution            (Anna B. = Anna Becker = anna@acme)
    Knowledge Graph

    Jeder Schritt hat seine eigenen Stolperfallen. Schauen wir sie der Reihe nach an.

    Schritt 1: Chunking

    Quelldokumente sind selten gut geschnitten. Verträge sind 80 Seiten, E-Mail-Threads sind 40 Nachrichten, PDFs haben Tabellen. Klassische Strategien:

    • Naiv: feste Token-Größen (z.B. 1.000 Tokens, 200 Overlap) – funktioniert für Fließtext, zerstört Tabellen.
    • Semantisch: an Absatz- oder Heading-Grenzen splitten – besser, aber langsamer.
    • Strukturell: Markdown-Header, HTML-Sections, oder bei PDFs Layout-aware Parser wie Unstructured oder Docling.

    Faustregel: Lieber etwas mehr Overlap und kleinere Chunks. Halluzinierte Beziehungen entstehen fast immer, wenn ein Chunk zwei Entitäten erwähnt, ohne deren Beziehung vollständig zu beschreiben.

    Schritt 2: Extraction mit strukturierten Outputs

    Hier hat sich in den letzten zwei Jahren am meisten geändert. Statt freier Prompts (mit Regex-Parsing) nutzen alle ernstzunehmenden Pipelines heute Structured Outputs – JSON Schema, das das Modell zwingt, korrekt geformte Daten zurückzugeben.

    Minimales Beispiel mit Pydantic + Instructor:

    from pydantic import BaseModel, Field
    from typing import Literal
    import instructor
    from openai import OpenAI
    
    class Entity(BaseModel):
        id: str = Field(description="kebab-case stable identifier")
        type: Literal["person", "company", "product", "contract", "ticket"]
        name: str
        attributes: dict[str, str] = {}
    
    class Relation(BaseModel):
        source_id: str
        target_id: str
        label: str = Field(description="verb-phrase, lower case")
        confidence: float = Field(ge=0, le=1)
    
    class ExtractionResult(BaseModel):
        entities: list[Entity]
        relations: list[Relation]
    
    client = instructor.from_openai(OpenAI())
    
    result = client.chat.completions.create(
        model="gpt-4.1",
        response_model=ExtractionResult,
        messages=[{
            "role": "system",
            "content": "Extrahiere Entitäten und Beziehungen aus dem Text. "
                       "Verwende stabile ids. Setze confidence ehrlich.",
        }, {
            "role": "user",
            "content": chunk_text,
        }],
    )

    Was hier wirklich wichtig ist:

    1. confidence ist Pflicht. Modelle, die alles mit 1.0 markieren, sind kaputt – aber wenn ihr es nicht fordert, bekommt ihr keine.
    2. Stabile ids. Sonst landen „Anna Becker", „A. Becker" und „Frau Becker" als drei Knoten im Graph.
    3. Schema möglichst klein. Je mehr Felder ihr fordert, desto schlechter wird die Qualität. Lieber zwei Passes.

    Schritt 3: Deduplizierung

    Die Realität: Dasselbe Modell extrahiert aus zwei Chunks „Acme GmbH" und „Acme Group" – zwei Knoten, eine Firma. Drei pragmatische Strategien, in der Reihenfolge ihrer Kosten:

    • Exact match: normalisiert auf lowercase, Whitespace strippen, Trade-Suffixe (gmbh, inc, ltd) entfernen. Holt 60–70 %.
    • Embedding-basiert: Cosine Similarity über Entity-Embeddings + Threshold. Holt weitere 20–25 %.
    • LLM-Reconciliation: Kandidatenpaare an ein LLM geben („gleiche Entität? ja/nein"). Holt den Rest, ist aber teuer.

    Wir laufen die Pipeline meistens batchweise mit allen drei, in dieser Reihenfolge.

    Schritt 4: Entity Resolution

    Deduplizierung ist intra-Korpus. Resolution verknüpft mit der Realität: „Anna Becker" ist user_id=4471 im CRM, „Acme GmbH" hat customer_id=cust_8821.

    Das geht selten automatisch. Bewährt hat sich:

    • Ein Resolution-Layer mit klaren Schlüsseln (E-Mail-Domain → Firma, vollständiger Name + Firma → Person).
    • Human-in-the-Loop für die ersten 5–10 % unsicherer Matches. Danach lernt die Heuristik mit.
    • Fallback-Knoten für unaufgelöste Entitäten, statt sie wegzuwerfen – sie können später noch aufgelöst werden.

    Tool-Vergleich

    Tool Stärke Schwäche
    LlamaIndex KG Index End-to-End, Neo4j-Integration, schnell zum Prototyp wenig Kontrolle über Schema
    Instructor + OpenAI/Anthropic volle Kontrolle, Pydantic-typsicher Pipeline selbst bauen
    LangChain GraphIndex viel Glue, viele Integrationen viel Abstraktion, hohe Lernkurve
    Microsoft GraphRAG Community Detection eingebaut, batch-orientiert Python-only, opinionated
    Unstructured + Custom Pipeline bestes PDF/HTML-Parsing Bauteile selbst zusammenstellen

    Unser Default für Prototypen: LlamaIndex KG Index. Für Production: Instructor + eigene Pipeline + Neo4j.

    Die häufigsten Fail-Modes

    1. Halluzinierte Entitäten: Das Modell erfindet Personen oder Firmen, die im Chunk nicht stehen. → Strikte Prompts („nur, was wörtlich erwähnt wird"), confidence-Filter unter 0.7 verwerfen.
    2. Zu viele Beziehungen pro Chunk: Das Modell will alles verbinden. → max_triplets_per_chunk setzen (10–15 ist gut).
    3. Inkonsistente Relation-Labels: „arbeitet bei", „angestellt von", „Mitarbeiter:in von" → drei Kanten. → Vorab definierte Relation-Vokabulare oder LLM-basiertes Label-Mapping als Post-Processing.
    4. Schema-Drift über Zeit: Neue Dokumenttypen → neue Felder. → Versionierte Schemata, regelmäßige Audits eines Sample.

    Kosten-Realität

    Für ein typisches Enterprise-Setup (10.000 Dokumente, ~5 Mio. Tokens):

    • Extraction mit GPT-4.1 / Claude Sonnet 4.5: 80–200 USD einmalig
    • Embedding-basierte Deduplizierung: 5–15 USD
    • LLM-Reconciliation: 20–60 USD
    • Inkrementelle Updates: ~1–3 USD pro 100 neuen Dokumenten

    Das ist weniger als ein Tag Engineering. Der teure Teil ist das Aufsetzen der Pipeline und die Datenmodellierung — nicht die Tokens.

    Fazit

    Entity Extraction ist 2026 kein ML-Problem mehr, sondern ein Engineering-Problem. Die schwierige Arbeit liegt nicht im Prompt, sondern in den drei Schritten danach: Deduplizierung, Resolution, Schema-Disziplin.

    Wer das einmal sauber gebaut hat, kann jeden neuen Dokumentenkorpus in Stunden statt Wochen graph-fähig machen. Das ist der Grund, warum Knowledge Graphs gerade wieder Mainstream werden.


    Verwandte Artikel:

    TeilenLinkedInWhatsAppE-Mail

    Verwandte Artikel

    Vector-Embedding-Wolke versus strukturierter Knowledge Graph nebeneinander
    29. Mai 20264 min

    GraphRAG vs. Vector RAG – wann reicht Ähnlichkeit nicht mehr?

    Vector RAG ist Standard – aber sobald Fragen mehrstufig werden, bricht es zusammen. GraphRAG kombiniert Knowledge Graphs…

    Weiterlesen
    Abstrakte Visualisierung eines Knowledge Graphs mit Knoten und Verbindungen
    27. Mai 20264 min

    Was ist ein Knowledge Graph – und warum reden gerade alle darüber?

    Knowledge Graphs sind plötzlich überall – von Google über Palantir bis hin zu jedem zweiten AI-Agenten-Startup. Was stec…

    Weiterlesen
    Architektur-Diagramm: zentraler Orchestrator-Agent verbindet drei spezialisierte Sub-Agents (Sales, CRM, Ops) über TOOLS.md-Schnittstellen mit operativen Enterprise-Systemen
    30. April 20266 min

    Enterprise-Grade Agentic Setup: Warum ein API-Key keine KI-Strategie ist

    Ein API-Key in deiner Website ist Spielzeug. Ein agentisches Setup mit spezialisierten Sub-Agents, TOOLS.md, sauberen Sy…

    Weiterlesen
    Vergleich dreier Agent-Runtime-Architekturen für Production Deployments
    9. April 20266 min

    Claude Managed Agents vs. LangGraph vs. CrewAI: Agent-Runtimes für Production im Vergleich

    Drei Wege, Production Agents zu deployen: Anthropics gehostete Runtime, LangGraphs Graph-Orchestrierung oder CrewAIs Rol…

    Weiterlesen
    Claude Managed Agents Architektur – Gehirn verbunden mit mehreren Händen für Tools und Sandboxes
    8. April 20265 min

    Claude Managed Agents: Anthropics Griff nach der Agent-Runtime

    Anthropic launcht Managed Agents in der Public Beta – eine gehostete Runtime, die das 'Gehirn' von den 'Händen' entkoppe…

    Weiterlesen
    Agent Skills werden Industrie-Standard: Was Teams jetzt wissen müssen
    19. September 20254 min

    Agent Skills werden Industrie-Standard: Was Teams jetzt wissen müssen

    Agent Skills sind wiederverwendbare Fähigkeiten für KI-Agenten – und werden zum neuen Standard. Was sie von MCP untersch…

    Weiterlesen
    Enterprise-KI-Agenten verbinden sich sicher über den Gemini Enterprise Agent Marketplace
    28. Mai 20263 min

    Googles Agent Marketplace ist live – und monday.com ist von Tag eins dabei

    Google öffnet Gemini Enterprise für Partner-AI-Agenten – und monday.com ist von Anfang an drin. Was das für Enterprise-W…

    Weiterlesen
    Visualisierung vernetzter Notizen mit Backlinks – ein persönlicher Knowledge Graph
    28. Mai 20264 min

    Obsidian als persönlicher Knowledge Graph – warum Notizen mit Backlinks alles verändern

    Obsidian ist mehr als eine Notiz-App – es ist ein persönlicher Knowledge Graph. Warum Markdown, Backlinks und lokale Dat…

    Weiterlesen
    MCP als zentraler Hub, der KI-Agenten mit CRM, ERP, Datenbanken und SaaS-Tools verbindet
    13. Mai 20265 min

    No MCP, no Party: Warum kein Unternehmen mehr an MCP vorbeikommt

    MCP ist nicht mehr nur ein Protokoll – es ist ein neuer Distributionskanal. Wer als SaaS oder Unternehmen jetzt keinen M…

    Weiterlesen