KI-Projekt von Beat Hutter
Dorfgeschichte aus dem Archiv holen
Alte Chroniken, Jahresschriften und Fotosammlungen stecken voller Geschichten über das eigene Dorf, liegen aber meist ungehoben in Schachteln und PDF-Files. Dieses Projekt macht das Wissen eines Ortsmuseums für die Bevölkerung einfach durchsuchbar. Wer nach einem alten Hof, einer Strasse oder einem historischen Gewerbe fragt, bekommt verlässliche Auskunft direkt aus den Originalquellen und sieht die passenden Bilder dazu.
Das Projekt
Anhand des realen Bestands eines historischen Ortsmuseums wird erprobt, wie unstrukturierte Altbestände verlässlich und kontrolliert für den Dialog erschlossen werden.
Realer Archivbestand
Die Wissensbasis umfasst 2'543 seitenübergreifende Textabschnitte aus 24 historischen Publikationen sowie 1'786 inventarisierte Fotoeinträge mit über 8'300 erfassten Personen, Gebäuden und Orten.
Kontrollierte Antwortkette
Ein vorgelagerter Planer löst Rückbezüge im Gespräch auf, ein Reranker bewertet die Relevanz der Textstellen und eine feste Schwelle blockiert unbelegte Antworten vor der Textgenerierung.
Gemessen und weiterentwickelt
Jede Änderung an Indexierung, Suchfiltern und Prompts wird gegen ein festes Testset aus 70 Prüf- und Gegenfragen gemessen und entlang echter Suchanfragen ausgebaut.
Hinweis zum Projektstatus: Wir arbeiten derzeit an einem produktiven Prototypen. Der Chat läuft live auf eigener Infrastruktur über Web-Oberfläche und Telegram, ist aus Gründen des Urheberrechts und des Datenschutzes aktuell aber noch nicht für die breite Öffentlichkeit zugänglich.
Architektur des RAG-Systems
Anfragen durchlaufen eine mehrstufige Pipeline aus Planung, Namensabgleich, hybrider Suche und Relevanzprüfung. Quellenzeilen werden deterministisch aus dem Katalog erzeugt.
Qualität & Evals
Nachvollziehbarkeit
Was das System heute leistet
Die Anwendung verbindet historische Textrecherche und gezielte Bildersuche unter einer gemeinsamen Oberfläche im Web und auf Telegram.
Seitenübergreifendes Contextual Chunking
Silbentrennungen werden bereinigt, Absätze über Seitengrenzen verbunden und jeder Abschnitt vor der Vektorisierung mit Werk-, Kapitel- und Sprecherkontext versehen.
Zweigleisige Textsuche
Anfragen nach Personen, Gebäuden oder Hausnummern nutzen wortgenaue Registerfilter, während offene Sachthemen über die hybride Vektor- und Stichwortsuche laufen.
Rollenscharfe Foto-Galerie
Die Bildersuche trennt zwischen abgebildeten Motiven und der fotografierenden Person, unterstützt Jahresfilter und liefert Ergebnisse ohne Sprachmodell-Aufruf.
Kontext über mehrere Gesprächsrunden
Der Planer löst Pronomen in Folgefragen wie «Wann wurde es erbaut?» oder «Gibt es dazu Fotos?» anhand des Verlaufs in eigenständige Suchabfragen auf.
Ehrliche Lückenbenennung
Liegen zu einer mehrteiligen Frage nur Teilinformationen vor, beantwortet das System den belegten Teil und benennt ausdrücklich, wozu im Bestand Angaben fehlen.
Anonymes Qualitäts-Monitoring
Ein lokales Protokoll speichert Antwortzeiten, Trefferzahlen und Bewertungen ohne Personendaten, um unbeantwortete Fragen und Bestandslücken sichtbar zu machen.
Governance und Grundsätze
Für den verlässlichen Umgang mit historischen Quellen und Vereinsdaten gelten in der Architektur feste Regeln:
Keine Aussage ohne Beleg im Bestand
Unterschreiten die gefundenen Textstellen nach dem Reranking die Relevanzschwelle, bricht das System vor dem Sprachmodell-Aufruf ab und meldet transparent, dass keine Angaben vorliegen.
Code baut die Quellenangabe
Das Sprachmodell setzt im Text nur interne Verweismarker. Die sichtbare Quellenzeile mit Buchtitel, Heftnummer und Seitenzahl erzeugt der Programmcode deterministisch aus dem Katalog.
Rechte am Inhalt wahren
Originaltexte, historische Fotografien und Bestandsdaten bleiben unter der Hoheit des Museums und sind strikt vom öffentlichen Quellcode-Repository getrennt.
Datenschutz im Bild- und Textbestand
Nutzungsprotokolle erfassen keine IP-Adressen oder Klarnamen. Für die geplante Öffnung des Fotoarchivs werden Aufnahmen mit zeitgenössischen Personen vorab geprüft und datenschutzkonform bereinigt.
Abgesicherte Schnittstellen
Die interne Programmierschnittstelle und die Vektordatenbank sind von aussen nicht erreichbar. Öffentlich zugänglich sind nur die Web-Oberfläche und der kryptografisch geprüfte Telegram-Webhook.
Messen vor dem Ändern
Jede Anpassung an Chunking, Suchgewichtung oder Prompts durchläuft vor der Freigabe die automatisierte Evaluation über alle vier Testsuiten.
Roadmap
Was heute auf dem Server läuft, woran aktuell gearbeitet wird und welche Erweiterungen folgen.
In Betrieb
- Hybride Suche auf Qdrant (2'543 Textabschnitte, 1'786 Fotoeinträge)
- Query-Planer mit Pronomenauflösung und Namensregister (8'331 Entitäten)
- LLM-Reranker und kalibriertes Relevanz-Gate
- Deterministische Zitate für Web-Chat und Telegram
- API-Schutz mit Rate-Limiting und anonymem Logging
Als Nächstes
- Datenschutz-Massnahmen: Abklärungen zum Bildbestand und Unkenntlichmachung aktueller Personen auf Fotos
- Feintuning der Vektorsuche: Optimierung der Gewichtung bei komplexen Sachthemen
- Portfolio-Freigabe: Schrittweise Publikation geprüfter Architektur- und Code-Module
Danach
- Automatisierung der OCR-Pipeline für neu gescannte Schriften und historische Protokolle
- Inkrementelles Register-Update beim Einspielen neuer Archivbestände
- Auswertungs-Ansicht für Archivverantwortliche zur Analyse von Suchlücken
Forschung
- Lokaler Cross-Encoder für schnelleres Reranking ohne externen API-Aufruf
- Multimodale Bildsuche über visuelle Embeddings für unbeschriftete Fotos
- Audio-Erschliessung für gesprochene Mundart-Zeitzeugenberichte
Technik
Betrieb auf eigenem virtuellem Server in Europa mit interner Container-Netzwerktrennung und ohne offene Datenbank-Ports. Nur die Aufrufe für das Sprachmodell und die dichten Vektoren laufen über die API von OpenAI.
- Orchestrierung
- Eigener Python-Service (FastAPI, AsyncIO, Pydantic Structured Outputs) ohne externe Agenten-Frameworks
- Sprachmodell
- OpenAI gpt-4o-mini für Anfrageplanung, Reranking und quellenbasierte Antwortgenerierung
- Embeddings
- OpenAI text-embedding-3-small (1536D Dense) und FastEmbed Qdrant/bm25 (lokale deutsche Sparse-Vektoren)
- Namensregister
- In-Memory-Lookup mit RapidFuzz (WRatio) und regelbasierter Normalisierung für Personen, Gebäude und Adressen
- Kanäle
- Streamlit (Web-Oberfläche) und Telegram Bot API über abgesicherten HTTPS-Webhook
- Vektordatenbank
- Qdrant (v1.16.1, selbst betrieben in Docker, Hybrid-Abfrage über Reciprocal Rank Fusion)
- Katalog und Protokoll
- Geprüfter YAML-Schriftenkatalog und lokales SQLite im WAL-Modus für anonymisierte Betriebsmetriken
- Plattform und Netz
- Linux-VPS (Ubuntu 24.04), Docker Compose, Traefik Reverse Proxy (Let's Encrypt), Nginx für Mediendateien
- Qualität und Release
- Eigenes Evaluations-Framework (70 Testfälle in 4 Suiten) und mehrstufige Release-Prüfung mit Gitleaks