Recherche-Prompts mit lokalem LLM: Geschäftsberichte mit Ollama auswerten
Ollama unter Linux einrichten, Systemprompt per Modelfile festlegen und vier Recherche-Prompts über die API ausführen, inklusive JSON-Schema für Kennzahlen und Abgleich mit dem Originaldokument.
Geprüft am 16.10.2026 · für Ollama Ollama-Doku Stand 16.10.2026

Geschäftsberichte, Quartalsmitteilungen und Investor-Präsentationen sind lange Dokumente, deren Kernaussagen sich gut mit einem Sprachmodell vorstrukturieren lassen. Diese Anleitung zeigt, wie Sie dafür ein lokales LLM mit Ollama einrichten, einen festen Systemprompt als eigenes Modell hinterlegen und vier Recherche-Prompts über die REST-API ausführen, einen davon mit erzwungener JSON-Ausgabe. Als Beispiel dient der Bericht eines börsennotierten Unternehmens. Das Verfahren funktioniert genauso für Lieferantenbewertungen, Ausschreibungen oder Wettbewerbsanalysen. Die Prompts liefern Struktur und Prüffragen, keine Bewertung. Dieser Beitrag ist keine Anlageberatung.
Voraussetzungen
- Linux-Rechner oder Server (x86_64 oder ARM64) mit Root- oder sudo-Rechten. Ollama gibt es laut Hersteller auch für macOS und Windows; die Befehle hier beziehen sich auf Linux.
- Arbeitsspeicher und GPU: Für das Modell
gemma4:e2bnennt die Ollama-Dokumentation einen Download von etwa 7,2 GB und empfiehlt 8 GB freien Grafikspeicher (VRAM) oder Unified Memory auf einem Mac. Mit weniger VRAM nutzt Ollama den Arbeitsspeicher, die Antworten kommen dann langsamer. Ohne passende GPU sollte mindestens so viel freier Arbeitsspeicher vorhanden sein, wie das Modell groß ist. Auf der Festplatte braucht das Modell den Platz des Downloads, dazu kommen Ihre Dokumente. - Werkzeuge:
curlundjq, für PDF-Dateien zusätzlichpdftotextaus dem Paketpoppler-utils. - Ein Quelldokument als PDF oder Text, z. B. ein Geschäftsbericht von der Investor-Relations-Seite des Unternehmens. Notieren Sie Titel, Berichtszeitraum und Abrufdatum.
Schritt 1: Ollama installieren und Modell laden
Ollama ist ein Server, der Sprachmodelle lokal ausführt und eine HTTP-API auf Port 11434 bereitstellt. Das offizielle Installationsskript richtet unter Linux den Dienst ollama mit systemd ein:
curl -fsSL https://ollama.com/install.sh | sh
ollama -v
sudo systemctl status ollamaWer Skripte nicht direkt aus dem Netz ausführen möchte, findet in der Linux-Dokumentation von Ollama die manuelle Installation aus dem Archiv samt eigener Service-Datei. Laden Sie anschließend das Modell:
ollama pull gemma4:e2b
sudo apt install -y jq poppler-utilsOllama lauscht laut Dokumentation standardmäßig nur auf 127.0.0.1:11434. Lassen Sie das so, solange nur dieser Rechner die API nutzt. Ein Freigeben über OLLAMA_HOST=0.0.0.0 macht die API ohne Anmeldung im ganzen Netz erreichbar.
Verifizieren: curl http://localhost:11434/api/version liefert ein JSON-Objekt mit dem Feld version, und ollama list zeigt gemma4:e2b.
Schritt 2: Systemprompt als eigenes Modell hinterlegen
Statt die Rollenbeschreibung in jede Anfrage zu kopieren, legen Sie sie in einem Modelfile fest. Ein Modelfile ist die Bauanleitung für ein abgeleitetes Modell: Basis (FROM), Parameter (PARAMETER) und Systemnachricht (SYSTEM). Drei Parameter sind für Recherche wichtig:
temperature: niedrige Werte machen die Antworten sachlicher und weniger kreativ (Standard laut Doku 0.8).num_ctx: Größe des Kontextfensters in Tokens. Ollama nutzt ohne Angabe ein kleines Fenster (4096 Tokens bei weniger als 24 GiB VRAM). Lange Berichte werden sonst abgeschnitten.seed: fester Startwert, damit derselbe Prompt dieselbe Antwort erzeugt. Das macht Ergebnisse nachvollziehbar.
mkdir -p ~/recherche && cd ~/recherche
cat > Modelfile <<'EOF'
FROM gemma4:e2b
PARAMETER temperature 0.2
PARAMETER num_ctx 16384
PARAMETER seed 42
SYSTEM """Sie sind ein sorgfältiger Analyst für Unternehmensdokumente.
Arbeiten Sie ausschließlich mit dem Text, den der Nutzer mitliefert.
Erfinden Sie keine Zahlen. Nennen Sie zu jeder Aussage die Belegstelle als wörtliches Kurzzitat.
Fehlt eine Information im Text, schreiben Sie: nicht im Dokument.
Geben Sie keine Kauf- oder Verkaufsempfehlung, kein Kursziel und keine Bewertung ab."""
EOF
ollama create recherche -f ModelfileEin größeres Kontextfenster braucht mehr Speicher. Beginnen Sie mit 16384 Tokens und erhöhen Sie nur, wenn die Dokumente es verlangen.
Verifizieren: ollama show --modelfile recherche zeigt die drei PARAMETER-Zeilen und den Systemprompt; ollama list enthält recherche:latest.
Schritt 3: Bericht vorbereiten und Geschäftsmodell auswerten
Wandeln Sie das PDF in Text um und prüfen Sie den Umfang. Ein vollständiger Geschäftsbericht ist meist zu lang für das Kontextfenster. Arbeiten Sie dann abschnittsweise, z. B. nur mit dem Lagebericht:
pdftotext -layout bericht.pdf bericht.txt
wc -c bericht.txt
# Nur die Seiten 20 bis 45 übernehmen:
pdftotext -f 20 -l 45 -layout bericht.pdf lagebericht.txtDer erste Prompt zerlegt das Geschäftsmodell. Die Anfrage baut jq zusammen, damit Anführungszeichen und Zeilenumbrüche im Berichtstext korrekt maskiert werden:
PROMPT='Beschreiben Sie das Geschäftsmodell anhand des folgenden Dokuments:
1. Kernprodukte oder Kerndienstleistungen
2. Kundengruppen (z. B. Geschäftskunden, Privatkunden, öffentliche Hand)
3. Umsatzquellen (Abo, Lizenz, Projekt, Transaktion, Werbung)
4. Genannte Wachstumstreiber
5. Kritische Abhängigkeiten (Lieferanten, Plattformen, Großkunden)
Antworten Sie als Tabelle mit den Spalten Punkt, Aussage, Belegstelle.
Markieren Sie unsichere Punkte mit: unsicher.'
jq -n --arg p "$PROMPT" --rawfile doc lagebericht.txt \
'{model:"recherche", stream:false, messages:[{role:"user", content:($p + "\n\nDOKUMENT:\n" + $doc)}]}' \
| curl -s http://localhost:11434/api/chat -d @- \
| jq -r '.message.content' | tee 01-geschaeftsmodell.mdstream:false sorgt dafür, dass die API eine einzige JSON-Antwort statt vieler Teilstücke liefert. Die Antwort landet zusätzlich in einer Datei, damit Sie sie später mit dem Original abgleichen können.
Verifizieren: 01-geschaeftsmodell.md enthält eine Tabelle mit fünf Zeilen und einer Spalte Belegstelle. Stichprobe: Suchen Sie zwei Zitate mit grep -F "ZITAT" lagebericht.txt; beide müssen gefunden werden.
Schritt 4: Kennzahlen als JSON mit Schema abfragen
Freitext ist für Kennzahlen ungeeignet, weil Sie die Werte weiterverarbeiten wollen. Ollama kann die Antwort an ein JSON-Schema binden: Das Feld format der Anfrage erhält das Schema, das Modell muss genau diese Struktur liefern. Die Dokumentation empfiehlt, das Schema zusätzlich im Prompt zu nennen. Legen Sie das Schema als Datei an:
{
"type": "object",
"properties": {
"kennzahlen": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"wert_aktuell": {"type": "string"},
"wert_vorjahr": {"type": "string"},
"einheit": {"type": "string"},
"belegstelle": {"type": "string"}
},
"required": ["name", "wert_aktuell", "wert_vorjahr", "einheit", "belegstelle"]
}
},
"offene_fragen": {"type": "array", "items": {"type": "string"}}
},
"required": ["kennzahlen", "offene_fragen"]
}Speichern Sie den Block als schema.json und senden Sie den zweiten Prompt:
PROMPT='Extrahieren Sie aus dem Dokument Umsatz, Bruttomarge, operatives Ergebnis,
Free Cashflow und Nettoverschuldung für Berichtsperiode und Vorperiode.
Übernehmen Sie Werte nur wörtlich aus dem Dokument, sonst: nicht im Dokument.
Formulieren Sie unter offene_fragen drei Fragen zu auffälligen Veränderungen.
Antworten Sie als JSON nach diesem Schema: '"$(cat schema.json)"
jq -n --arg p "$PROMPT" --rawfile doc lagebericht.txt --slurpfile s schema.json \
'{model:"recherche", stream:false, format:$s[0], messages:[{role:"user", content:($p + "\n\nDOKUMENT:\n" + $doc)}]}' \
| curl -s http://localhost:11434/api/chat -d @- \
| jq -r '.message.content' | jq . | tee 02-kennzahlen.jsonWerte werden bewusst als Text übernommen. So bleiben Schreibweisen wie „1.234,5 Mio. €“ erhalten, und Sie sehen sofort, ob das Modell gerundet oder umgerechnet hat.
Verifizieren: jq '.kennzahlen | length' 02-kennzahlen.json liefert 5, jq -r '.kennzahlen[].belegstelle' 02-kennzahlen.json zeigt fünf Zitate. Gleichen Sie jeden Wert mit der Tabelle im PDF ab.
Schritt 5: Gegenargumente und Prüfplan erzeugen
Wer ein Dokument mit einer Erwartung liest, übersieht leicht Gegenargumente (Bestätigungsfehler). Der dritte Prompt weist dem Modell deshalb ausdrücklich die Rolle des Skeptikers zu, der vierte macht daraus einen wiederholbaren Prüfplan. Beide nutzen dasselbe Muster wie Schritt 3, nur der Text in PROMPT wechselt:
Prompt 3 (Gegenargumente):
Prüfen Sie die folgende These kritisch: [These in einem Satz].
Suchen Sie im Dokument gezielt nach Gegenargumenten:
1. Risiken, die im Risikobericht genannt, aber im Ausblick nicht aufgegriffen werden
2. Kostenpositionen, die schneller wachsen als der Umsatz
3. Abhängigkeiten von Einzelpersonen, Großkunden oder Lieferanten
4. Bilanzposten mit ungewöhnlichen Veränderungen
Belegen Sie jeden Punkt mit einem Zitat. Nennen Sie am Ende die drei stärksten Einwände.
Prompt 4 (Prüfplan):
Erstellen Sie aus dem Dokument einen Prüfplan für die nächste Berichtsperiode:
1. Drei Kennzahlen, die regelmäßig zu prüfen sind, mit Fundstelle im Bericht
2. Drei Warnsignale, an denen sich die These als falsch erweisen würde
3. Zwei nächste Rechercheschritte mit Quelle (z. B. nächster Quartalsbericht)
Antworten Sie als Tabelle mit den Spalten Feld, Eintrag, Quelle.Speichern Sie die Ergebnisse als 03-gegenargumente.md und 04-pruefplan.md. Der Prüfplan ist eine Liste offener Fragen für Ihre eigene Recherche, keine Entscheidungsgrundlage.
Verifizieren: Beide Dateien enthalten zu jedem Punkt ein Zitat. grep -c "nicht im Dokument" 0*.md zeigt, wie oft das Modell Lücken gemeldet hat; null Treffer bei einem kurzen Auszug sind ein Grund, die Antworten besonders genau zu prüfen.
Schritt 6: Ergebnisse gegen das Original prüfen
Sprachmodelle erzeugen plausibel klingende, aber falsche Aussagen (Halluzinationen). Die Belegstellen machen das prüfbar. Ein kurzes Skript sucht jedes Zitat aus der JSON-Datei im Berichtstext:
jq -r '.kennzahlen[].belegstelle' 02-kennzahlen.json | while read -r z; do
if grep -qF -- "$z" lagebericht.txt; then echo "OK $z"; else echo "FEHLT $z"; fi
doneZitate mit Zeilenumbruch oder geänderter Leerzeichenfolge finden grep nicht, obwohl sie korrekt sind. Prüfen Sie jede Zeile mit FEHLT deshalb von Hand im PDF. Dokumentieren Sie zum Schluss Modell, Modelfile, Quelldokument mit Abrufdatum und die Ergebnisdateien gemeinsam in einem Ordner. So lässt sich später nachvollziehen, woraus eine Notiz entstanden ist.
Verifizieren: Jede Zeile der Ausgabe ist entweder OK oder von Hand im PDF bestätigt. Werte ohne Beleg streichen Sie aus Ihren Notizen.
Typische Fehler
- Antwort ignoriert den Schluss des Dokuments: Das Kontextfenster ist zu klein, der Text wurde abgeschnitten.
num_ctxim Modelfile erhöhen oder kürzere Abschnitte übergeben.ollama pszeigt in der SpalteCONTEXTdas tatsächlich zugewiesene Fenster. - Antworten dauern sehr lange: Das Modell läuft ganz oder teilweise auf der CPU.
ollama pszeigt in der SpaltePROCESSORz. B.100% CPUoder eine Aufteilung CPU/GPU. Kleineres Kontextfenster wählen oder ein kleineres Modell nutzen. curl: (7) Failed to connect to localhost port 11434: Der Dienst läuft nicht.sudo systemctl start ollamaund die Logs mitjournalctl -e -u ollamaprüfen.jq: parse errorbei der Antwort:stream:falsefehlt, die API liefert dann viele einzelne JSON-Zeilen.- Zahlen ohne Belegstelle oder mit Rundung: Der Systemprompt greift nicht. Mit
ollama show --modelfile rechercheprüfen, ob die Anfrage wirklich das Modellrechercheund nicht das Basismodell nutzt. - Modell gibt trotzdem eine Empfehlung: Sprachmodelle halten Vorgaben nicht in jedem Fall ein. Solche Absätze verwerfen und den Prompt um die Zeile „Keine Empfehlung, keine Bewertung.“ ergänzen.
Häufige Fragen
Verlassen meine Dokumente den Rechner?
Bei lokal ausgeführten Modellen nicht. Die Ollama-FAQ stellt klar, dass Ollama lokal läuft und der Hersteller Prompts und Daten dabei nicht sieht. Anders ist es bei Cloud-Modellen, die Ollama ebenfalls anbietet: Dort werden Prompts zur Verarbeitung übertragen. Verwenden Sie für vertrauliche Unterlagen nur lokal geladene Modelle.
Welches Modell eignet sich?
gemma4:e2b ist das Modell, das die Ollama-Schnellstartanleitung für den lokalen Einstieg nennt; empfohlen sind 8 GB VRAM. Größere Modelle brauchen mehr Speicher. Vergleichen Sie bei einem Modellwechsel die Ergebnisse aus Schritt 6, bevor Sie umstellen. Eine Übersicht nach VRAM bietet die Anleitung zur Ollama-Modellauswahl unten.
Kann ich die Prompts mit einer Weboberfläche nutzen?
Ja. Open WebUI verbindet sich mit derselben Ollama-API. Das Modell recherche erscheint dort in der Modellauswahl, weil es ein gewöhnliches Ollama-Modell ist. Für die JSON-Ausgabe mit Schema ist die API der einfachere Weg.
Ersetzt die Auswertung eine eigene Analyse?
Nein. Das Modell verdichtet und ordnet Text, es prüft keine Fakten außerhalb des Dokuments und kennt keine aktuellen Marktdaten. Die Ergebnisse sind Arbeitsmaterial für Ihre eigene Prüfung. Dieser Beitrag ist keine Anlageberatung.
Fazit
Mit Ollama, einem Modelfile und vier Prompts entsteht ein wiederholbarer Ablauf, der lange Berichte lokal vorstrukturiert. Den Ausschlag geben drei Dinge: ein Kontextfenster, das zum Dokument passt, eine erzwungene Struktur mit Belegstelle und die anschließende Prüfung gegen das Original. Das gleiche Muster eignet sich für Ausschreibungen, Verträge oder Lieferantenunterlagen in Ihrem Unternehmen.
Weiterführende Anleitungen und Quellen
- Ollama und Open WebUI mit Docker: eigenes lokales KI-Sprachmodell betreiben
- Ollama-Modelle richtig auswählen: VRAM, Quantisierung und Modellvergleich
- Strukturierte JSON-Ausgaben aus lokalen LLMs
- KI-Agenten absichern: Prompt-Injection abwehren
- KI-Nutzungsrichtlinie im Unternehmen erstellen
Offizielle Quellen: Ollama: Linux-Installation | Ollama: Modelfile-Referenz | Ollama: Structured Outputs | Ollama: Context length | Ollama: FAQ | Ollama: API-Referenz


