Jahrzehnte an E-Mails durchsuchen: zuerst die Stichwörter, dann die Bedeutung
KI-Suche in E-Mails scheitert an schmutzigen Daten. Wie Sie ein E-Mail-Archiv bereinigen, in Threads ordnen und indexieren, damit Stichwortsuche und semantische Suche zusammen funktionieren, mit Quellenangaben.

Ein Sprachmodell auf ein Postfach zu richten und ihm Fragen zu stellen, klingt nach einem Wochenendprojekt. Dann nennt es Ihnen mit voller Überzeugung das falsche Datum eines Vertrags, weil es eine zitierte Kopie einer alten E-Mail in einer neueren Antwort gelesen hat, oder es findet die Rechnung 10442 nicht, weil die Nummer keine «Bedeutung» hat, an der eine Vektorsuche ansetzen könnte. Gute Suche über ein E-Mail-Archiv hat überwiegend nichts mit dem Modell zu tun. Sie hat mit den Daten zu tun, die Sie ihm geben, und mit der Art, wie Sie abrufen. So gehen wir es an.
E-Mail ist unordentlicher, als es aussieht
Ein E-Mail-Archiv, das Jahre, mehrere Mailsysteme und ein paar Migrationen umfasst, hat Probleme, die die Suche ruinieren, bevor irgendeine KI im Spiel ist:
- Duplikate. Dieselbe Nachricht liegt im Posteingang, in einem Projektordner und in einem alten Export. Die Suche liefert sie dreimal. Eine KI zählt sie als drei übereinstimmende Quellen.
- Zitierte Historie. Jede Antwort trägt den ganzen Thread unter sich. Indexieren Sie das naiv, und die älteste E-Mail eines Threads taucht in jeder Antwort auf, aus dem Zusammenhang gerissen und mit dem falschen Datum.
- Zeichenkodierungen. Ältere E-Mails stecken voller alter Zeichensätze, kodierter Header und falsch gekennzeichneter Teile. Dekodieren Sie sie falsch, und Namen und nicht-englischer Text werden zu Müll.
- Anhänge. Der Vertrag ist das PDF, nicht die E-Mail, in der «anbei» steht. Wenn Sie den Text der Anhänge nicht extrahieren, können Sie die wichtigsten Dokumente nicht finden.
- Löschungen. E-Mails, die aus Aufbewahrungsgründen aus dem Postfach gelöscht wurden, müssen auch aus jedem Index verschwinden.
Bereinigen, bevor Sie indexieren
Deduplizieren Sie anhand der Message-ID, mit einem Hash der wichtigsten Header und des Textkörpers als Rückfallebene, wenn sie fehlt. Speichern Sie ein Dokument pro Nachricht und behalten Sie die Liste der Ordner, in denen sie vorkam, als Metadaten.
Bilden Sie Threads anhand von References und In-Reply-To, nicht anhand der Betreffzeilen. Betreffzeilen ändern sich, und «Re: Rechnung» ist nicht eindeutig. Mit sauberem Threading können Sie eine ganze Unterhaltung in Reihenfolge zeigen und den Abrufschritt einen Thread als Ganzes ziehen lassen statt einzelner Fragmente.
Trennen Sie neuen Text von zitiertem Text. Indexieren Sie für jede Nachricht den vollständigen Textkörper für die Stichwortsuche, aber embedden Sie nur den Teil, den der Verfasser tatsächlich geschrieben hat. Ein einfacher Anfang:
import re
from email import policy
from email.parser import BytesParser
QUOTE_MARKERS = [
re.compile(r"^On .+ wrote:$", re.M),
re.compile(r"^-{2,}\s*Original Message\s*-{2,}", re.M | re.I),
re.compile(r"^From: .+\nSent: .+", re.M),
]
def new_text(raw: bytes) -> str:
msg = BytesParser(policy=policy.default).parsebytes(raw)
part = msg.get_body(preferencelist=("plain", "html"))
text = part.get_content() if part else ""
cut = len(text)
for rx in QUOTE_MARKERS:
m = rx.search(text)
if m:
cut = min(cut, m.start())
lines = [l for l in text[:cut].splitlines() if not l.startswith(">")]
return "\n".join(lines).strip()
Echte E-Mails brauchen mehr Marker als diese, in jeder Sprache, in der Ihr Unternehmen schreibt, aber das Prinzip gilt: Das Modell soll lesen, was jede Person gesagt hat, einmal, mit dem richtigen Datum und Absender.
Extrahieren Sie den Text der Anhänge mit Standardwerkzeugen (pdftotext für PDFs, Bibliotheks-Parser für Office-Formate) und indexieren Sie ihn als Teil der Nachricht, mit einem Link auf die Originaldatei.
Zwei Indizes, weil sie verschiedene Fragen beantworten
Ein Volltextindex beantwortet Fragen mit exakten Griffen: ein Absender, eine Domain, ein Datumsbereich, eine Rechnungsnummer, eine Phrase, «hat ein PDF». Er ist schnell, präzise und erklärbar. Verwenden Sie einen mit sprachbewusstem Stemming, damit «Rechnungen» auch «Rechnung» findet, und mit Synonymen über die Sprachen hinweg, die Ihr Unternehmen verwendet, damit eine Suche in der einen Sprache E-Mails findet, die in der anderen geschrieben sind.
Ein Vektorindex beantwortet Fragen nach der Bedeutung: «Wann hat der Lieferant zum ersten Mal gegen den Lieferplan Einwände erhoben?» Dafür gibt es vielleicht kein einzelnes Stichwort. Ein Embedding-Modell verwandelt jede bereinigte Nachricht in einen Vektor, und die Suche findet Nachrichten, die der Frage in der Bedeutung nahekommen.
Keiner von beiden reicht allein. Vektoren sind schwach bei Kennungen und Zahlen. Stichwörter sind schwach bei Umschreibungen. Lassen Sie beide laufen, und kombinieren Sie:
- Ziehen Sie zuerst Filter aus der Frage: Personen, Domains, Daten, «mit Anhang».
- Wenden Sie diese Filter auf beide Suchen an, damit die Vektorsuche nie aus dem Zeitraum oder dem Personenkreis hinauswandert, um den es in der Frage geht.
- Führen Sie die beiden Ergebnislisten zusammen. Reciprocal Rank Fusion ist einfach und funktioniert gut: Bewerten Sie jede Nachricht mit der Summe von
1 / (k + rank)über beide Listen. - Erweitern Sie die Top-Treffer auf ihre Threads, damit das Modell Unterhaltungen liest, nicht Fragmente.
Lassen Sie das Modell seine Arbeit zeigen
Erst dann kommt das Sprachmodell ins Spiel. Geben Sie ihm die abgerufenen Nachrichten, jede mit ID, Datum und Absender, und weisen Sie es an, nur daraus zu antworten und für jede Aussage die ID zu zitieren. Machen Sie in der Oberfläche aus jeder Quellenangabe einen Link, der die Original-E-Mail öffnet.
Quellenangaben erledigen zwei Aufgaben. Der Nutzer kann jede Behauptung mit einem Klick prüfen, was die einzig verantwortungsvolle Art ist, ein Modell auf Geschäftsunterlagen einzusetzen. Und Sie sehen sofort, wenn der Abruf versagt hat: Eine Antwort, die die falschen Nachrichten zitiert, ist ein Abrufproblem, kein Modellproblem, und sie sagt Ihnen, wo Sie nachsehen müssen.
Sagen Sie den Nutzern klar, dass ein Modell sich verlesen kann. Mit den Quellen einen Klick entfernt ist das ein beherrschbares Risiko.
Behalten Sie die Daten im Haus
Jede Komponente dieses Designs läuft problemlos auf Ihrer eigenen Hardware: der Volltextindex auf gewöhnlichen Servern, die Vektordatenbank daneben, und das Embedding-Modell und das Sprachmodell auf GPU-Servern, die Sie kontrollieren. Die E-Mails, die Fragen und die Antworten müssen Ihr Netzwerk nie verlassen.
Testen Sie es wie ein System, nicht wie eine Demo
Bevor Sie ihm vertrauen, stellen Sie eine kleine Menge von Fragen mit bekannten Antworten zusammen: eine bestimmte Rechnung, die erste E-Mail einer bekannten Meinungsverschiedenheit, eine Nachricht in Ihrer zweiten Sprache, eine Nachricht, die letzten Monat gelöscht wurde (sie darf nicht gefunden werden). Lassen Sie sie nach jeder Änderung an Bereinigung, Indexierung oder Prompts laufen, und bewahren Sie die Ergebnisse auf. Wenn eine Änderung bekannte Fragen verschlechtert, werden Sie es sehen.
Und beobachten Sie die Pipeline selbst. Eine Synchronisation, die still stehen geblieben ist, ein Index, der nicht aufgeholt hat, oder ein Rückstau an Vektoren nach einem Neustart sehen alle nach «die Suche funktioniert» aus, bis jemand die E-Mail von letzter Woche braucht. Prüfen Sie die ganze Kette von Ende zu Ende, nach Zeitplan, und alarmieren Sie, wenn irgendeine Stufe zurückfällt.
Kurz gefasst
- Deduplizieren, in Threads ordnen, dekodieren und zitierten Text entfernen, bevor Sie irgendetwas indexieren.
- Indexieren Sie die Anhänge. Dort sind die Verträge.
- Lassen Sie Stichwort- und Vektorsuche zusammen laufen, mit Filtern auf beiden.
- Antworten Sie nur aus abgerufenen E-Mails, mit einer Quellenangabe zu jeder Aussage.
- Halten Sie jede Komponente auf Hardware, die Sie kontrollieren, und testen Sie mit bekannten Fragen.
Wir bauen private E-Mail-Archive auf diese Weise, mit der KI auf Ihren eigenen privaten GPUs. Wenn Sie eines planen, helfen wir gern.
Verwandt: Privates E-Mail-Archiv mit lokaler KI-Suche · Managed Office-Dokumente auf Nextcloud
Veröffentlicht am 15. Oktober 2026.
Alle Notizen aus der Praxis