Fallstudie / RAG-Lab
Synapse
Docker Compose · FastAPI · Qdrant · Ollama · RAG
Überblick
Synapse verbindet technische Markdown-Notizen mit einer lokalen Such- und Frage-Antwort-Pipeline. Die Notizen bleiben als einfache Textdateien lesbar, werden im Wiki sichtbar gemacht und für die semantische Suche indexiert. Fragen an die eigenen Notizen werden mit Bezug zur verwendeten Quelle beantwortet.
Architektur
Synapse hat zwei verbundene Pfade: Die Ingestion macht Notizen auffindbar und lesbar; die Frage-Pipeline holt passenden Kontext und erzeugt daraus eine quellengebundene Antwort.
Pfad
Notizverarbeitung
Eingang
Markdown
Die ursprüngliche Notiz bleibt die lesbare Quelle.
Orchestrierung
FastAPI
Nimmt Notizen an, normalisiert Metadaten und steuert die Pipeline.
Verarbeitung
Ollama
Formatiert optional und erstellt Embeddings für Notizen und Fragen.
Ergebnis
Wiki.js
Macht die aufbereitete Notiz als Knowledge Interface lesbar.
Qdrant
Speichert Chunks, Vektoren und Quellenmetadaten für Retrieval.
Pfad
Fragebeantwortung
Eingang
Frage
Nimmt eine Frage mit optionalem Scope an.
Orchestrierung
Embedding
Ollama bildet die Frage als Vektor ab.
Verarbeitung
Qdrant-Retrieval
Liest ähnliche Chunks aus dem Index.
Kontext
Prüft Scope, Grounding und Quellenbezug.
Ollama
Erhält nur den freigegebenen Kontext.
Ergebnis
Antwort + Quellen
Gibt Antwort und Quellen aus oder lehnt ab.
TUI Demo

Das GIF zeigt Synapse Ask im Terminal: Eine Frage wird gegen lokale, indexierte Notizen gestellt; die Antwort erscheint direkt im Terminal und verweist auf die verwendete Quelle. Die Demo zeigt den aktuellen Kern des Projekts: Markdown-Notizen bleiben als Quellen erhalten und werden praktisch abfragbar.
Architekturentscheidungen
Die drei wichtigsten Entscheidungen (ADRs) dieses Projekts.
FastAPI als einzige Service-Grenze
Webhook-Auth, Validierung, Ingest und RAG liegen in testbaren Python-Modulen statt verteilt über Workflow-JSON und Eigenservices.
Qdrant als Vektorspeicher
Lokal mit Compose einfach zu betreiben, mit klarer HTTP-API und Metadaten für gefilterte Suche. Jeder Chunk trägt Hashes und Revisionen für nachvollziehbare Indexierung.
Deterministische Notiz-IDs
Jede Notiz bekommt eine feste ID aus Quelle und Pfad. Alte Chunks werden erst entfernt, wenn die neuen geschrieben und geprüft sind. So entstehen keine Duplikate.