Ausgangslage: Ein öffentliches Forum mit über Jahre gewachsenem Bestand an Threads und Beiträgen. Das Wissen war fachlich wertvoll, aber nur über Stichwortsuche und manuelles Durchklicken einzelner Threads zugänglich. Semantisch verwandte Beiträge blieben unauffindbar, sobald die Formulierung von der Suchanfrage abwich.
Umsetzung:
- Ingest-Pipeline in Python: Abruf und Normalisierung der Forenbeiträge, Bereinigung von Markup, Signaturen und Zitatblöcken, Deduplizierung
- Chunking entlang der Thread-Struktur, sodass Frage-Antwort-Zusammenhänge erhalten bleiben statt Beiträge blind nach Zeichenlänge zu schneiden
- Anreicherung jedes Chunks mit Metadaten (Thread, Kategorie, Datum, Beitragsposition) für spätere Filterung
- Erzeugung von Embeddings und Ablage in Qdrant als Vektordatenbank
- Hybrid-Retrieval aus semantischer Ähnlichkeitssuche und klassischen Metadatenfiltern, Re-Ranking der Treffer vor der Übergabe an das Sprachmodell
- Definiertes Verhalten bei Treffernull: Das System antwortet ausdrücklich nicht, statt aus Modellwissen zu ergänzen
- Antwortgenerierung ausschließlich auf Basis der abgerufenen Chunks, jede Aussage mit Quellenverweis auf den Originalbeitrag
- Web-Frontend mit Chat-Interface für die dialogische Abfrage, inklusive Anzeige der herangezogenen Quellen
- Inkrementelle Neuindexierung für neu hinzukommende Beiträge
- Betrieb auf eigener Infrastruktur: VPS in Deutschland, Docker, Monitoring und Backups
Ergebnis: Der Bestand ist nach Bedeutung statt nach Stichwort durchsuchbar. Antworten entstehen ausschließlich aus dem indexierten Material und sind bis zum Originalbeitrag nachvollziehbar. Die gesamte Kette von der Vektorisierung bis zum Frontend läuft auf eigener Infrastruktur.