# FTS5-Volltextsuche SUMMARY: Wie Synapse SQLite-FTS5 für sub-millisecond Volltext-Memory-Suche nutzt. FTS5-Volltextsuche Synapse verwendet FTS5 (Full-Text Search 5) für schnelle, flexible Memory-Suche. Diese Seite erklärt, wie es funktioniert und wie du es effektiv nutzt. Was ist FTS5? FTS5 ist eine SQLite-Erweiterung (in PostgreSQL ebenfalls über Erweiterungen verfügbar), die Volltextsuche bietet. Sie: - Indiziert Textinhalte für schnelle Keyword-Suche - Unterstützt boolesche Operatoren (AND, OR, NOT) - Unterstützt Phrase-Matching mit Anführungszeichen - Unterstützt Präfix-Matching mit - Bewertet Ergebnisse nach Relevanz Synapse nutzt FTS5, um alle Memory-Inhalte zu indizieren — das ermöglicht sub-millisecond Suche über Tausende von Memories. Wie Synapse FTS5 nutzt Wenn du aufrufst: 1. Memory-Inhalt wird in der -Tabelle gespeichert 2. Inhalt wird zusätzlich in die FTS5-Virtual-Table eingefügt 3. FTS5 tokenisiert und indiziert den Inhalt automatisch Wenn du aufrufst: 1. Synapse parst die Anfrage mit FTS5-Syntax 2. Führt ein gegen den FTS5-Index aus 3. Filtert nach (Tenant-Isolation) 4. Liefert bewertete Ergebnisse Query-Syntax Einfache Keyword-Suche [CODE BLOCK] Liefert Memories, die „docker" enthalten. Mehrere Keywords (implizites AND) [CODE BLOCK] Liefert Memories, die SOWOHL „docker" ALS AUCH „swarm" enthalten. Phrase-Matching [CODE BLOCK] Liefert Memories, die die exakte Phrase „docker swarm" enthalten. Präfix-Matching [CODE BLOCK] Liefert Memories mit Wörtern, die mit „docker" beginnen (z. B. „dockers", „dockerfile", „dockerize"). Boolesches OR [CODE BLOCK] Liefert Memories, die „docker" ODER „kubernetes" enthalten. Boolesches NOT [CODE BLOCK] Liefert Memories, die „docker", aber NICHT „swarm" enthalten. Gruppierung [CODE BLOCK] Liefert Memories mit „docker" oder „kubernetes", aber nicht „test". Praktische Beispiele Memories zu einem Projekt finden [CODE BLOCK] Exakte Phrase finden [CODE BLOCK] Test-Memories ausschließen [CODE BLOCK] Nach Technologie suchen [CODE BLOCK] Ranking FTS5 bewertet Ergebnisse nach Relevanz mit dem BM25-Algorithmus. Faktoren: - Term-Frequency (wie oft der Begriff vorkommt) - Inverse Document Frequency (seltenere Begriffe ranken höher) - Dokumentlänge (kürzere Docs mit dem Begriff ranken höher) - Spalten-Gewichtung (title > content) Ergebnisse werden in Reihenfolge des Rankings zurückgegeben (relevanteste zuerst). Performance | Operation | Latenz | |-----------|--------| | 100 Memories durchsuchen | < 5ms | | 1.000 Memories durchsuchen | < 10ms | | 10.000 Memories durchsuchen | < 25ms | | 100.000 Memories durchsuchen | < 100ms | FTS5 ist stark für lese-lastige Workloads optimiert. Einschränkungen Stemming FTS5 macht standardmäßig kein Stemming. „running" und „run" sind unterschiedliche Begriffe. Workaround: Präfix-Matching verwenden: Tippfehler-Toleranz FTS5 unterstützt kein Fuzzy-Matching. Ein Tippfehler liefert keine Ergebnisse. Workaround: Verwende semantische Suche () für konzeptionelles Matching. Stoppwörter Häufige Wörter (the, a, an, is) werden indiziert, sind aber für die Suche meist nicht nützlich. FTS5 behandelt das automatisch. FTS5 vs semantische Suche | Aspekt | FTS5 | Semantische Suche | |--------|------|-------------------| | Geschwindigkeit | Sub-millisecond | 50-100ms | | Matching | Exakte Keywords | Konzeptionell | | Tippfehler-Toleranz | Keine | Etwas | | Stemming | Keins | Implizit | | Benötigt Embeddings | Nein | Ja | | Optimal für | Spezifische Begriffe | Konzepte | Verwende FTS5, wenn du die Keywords kennst. Verwende semantische Suche, wenn du „Memories über X" suchst und X anders beschrieben wird. Best Practices > [!TIP] > - Verwende spezifische Begriffe — „docker swarm" schlägt „container orchestration" > - Phrasen in Anführungszeichen — sichert Phrase-Match > - Präfix für Variationen — erfasst „deploy", „deployment", „deploying" > - Noise ausschließen — filtert Test-Memories heraus > - Mit Tags kombinieren — schränkt Ergebnisse ein Nächste Schritte - Semantische Suche - Memory-API - Memory-Best-Practices