FTS5 volledige-tekst zoekopdracht
Hoe Synapse SQLite FTS5 gebruikt voor sub-milliseconde volledige-tekst memory-zoekopdrachten.
FTS5 volledige-tekst zoekopdracht
Synapse gebruikt FTS5 (Full-Text Search 5) voor snelle, flexibele memory-zoekopdrachten. Deze pagina legt uit hoe het werkt en hoe u het effectief kunt gebruiken.
Wat is FTS5?
FTS5 is een SQLite-extensie (ook beschikbaar in PostgreSQL via extensies) die volledige-tekst zoekmogelijkheden biedt. Het:
- Indexeert tekstinhoud voor snelle trefwoordzoekopdrachten
- Ondersteunt booleaanse operatoren (AND, OR, NOT)
- Ondersteunt overeenkomsten met zinnen via aanhalingstekens
- Ondersteunt prefix-overeenkomsten met
* - Rangschikt resultaten op relevantie
Synapse gebruikt FTS5 om alle memory-inhoud te indexeren, waardoor sub-milliseconde zoekopdrachten mogelijk zijn over duizenden herinneringen.
Hoe Synapse FTS5 gebruikt
Wanneer u POST /memory uitvoert:
- Memory-inhoud wordt opgeslagen in de
memories-tabel - Inhoud wordt ook ingevoegd in de FTS5 virtuele tabel
- FTS5 tokenizeert en indexeert de inhoud automatisch
Wanneer u GET /memory/search?q=... uitvoert:
- Synapse parseert de query met FTS5-syntaxis
- Voert een
MATCHuit tegen de FTS5-index - Filtert op
mind_id(tenant-isolatie) - Retourneert gerangschikte resultaten
Query-syntaxis
Eenvoudige trefwoordzoekopdracht
?q=dockerRetourneert herinneringen die "docker" bevatten.
Meerdere trefwoorden (impliciete AND)
?q=docker+swarm
?q=docker%20swarmRetourneert herinneringen die ZOWEL "docker" ALS "swarm" bevatten.
Zin-overeenkomst
?q="docker+swarm"
?q=%22docker%20swarm%22Retourneert herinneringen die de exacte zin "docker swarm" bevatten.
Prefix-overeenkomst
?q=docker*Retourneert herinneringen die woorden bevatten die beginnen met "docker" (bijv. "dockers", "dockerfile", "dockerize").
Booleaans OR
?q=docker+OR+kubernetesRetourneert herinneringen die "docker" OF "kubernetes" bevatten.
Booleaans NOT
?q=docker+-swarm
?q=docker+NOT+swarmRetourneert herinneringen die "docker" bevatten maar NIET "swarm".
Groepering
?q=(docker+OR+kubernetes)+-testRetourneert herinneringen die "docker" of "kubernetes" bevatten, maar niet "test".
Praktische voorbeelden
Vind herinneringen over een project
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/memory/search?q=synapse+deployment"Vind exacte zin
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/memory/search?q=%22docker+swarm%22"Sluit test-herinneringen uit
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/memory/search?q=production+-test"Vind op technologie
curl -H "Authorization: Bearer YOUR_MIND_KEY" \
"https://synapse.schaefer.zone/memory/search?q=(postgres+OR+sqlite)+-mysql"Rangschikking
FTS5 rangschikt resultaten op relevantie met behulp van het BM25-algoritme. Factoren:
- Termfrequentie (hoe vaak de term voorkomt)
- Inverse documentfrequentie (zeldzame termen ranken hoger)
- Documentlengte (kortere docs met de term ranken hoger)
- Kolomgewicht (title > content)
Resultaten worden geretourneerd in rangschikkingsvolgorde (meest relevant eerst).
Prestaties
| Bewerking | Latentie |
|---|---|
| 100 herinneringen doorzoeken | < 5ms |
| 1.000 herinneringen doorzoeken | < 10ms |
| 10.000 herinneringen doorzoeken | < 25ms |
| 100.000 herinneringen doorzoeken | < 100ms |
FTS5 is sterk geoptimaliseerd voor lees-intensieve workloads.
Beperkingen
Stamvorming
FTS5 doet standaard geen stamvorming. "running" en "run" zijn verschillende termen.
Tijdelijke oplossing: Gebruik prefix-overeenkomst: ?q=run*
Typefout-tolerantie
FTS5 ondersteunt geen fuzzy matching. Een typefout levert geen resultaten op.
Tijdelijke oplossing: Gebruik semantisch zoeken (/memory/semantic-search) voor
conceptuele overeenkomsten.
Stopwoorden
Veelvoorkomende woorden (the, a, an, is) worden geïndexeerd maar zijn mogelijk niet nuttig voor zoekopdrachten. FTS5 handelt dit automatisch af.
FTS5 versus semantisch zoeken
| Aspect | FTS5 | Semantisch zoeken |
|---|---|---|
| Snelheid | Sub-milliseconde | 50-100ms |
| Matching | Exacte trefwoorden | Conceptueel |
| Typefout-tolerantie | Geen | Enigszins |
| Stamvorming | Geen | Impliciet |
| Vereist embeddings | Nee | Ja |
| Geschikt voor | Specifieke termen | Concepten |
Gebruik FTS5 als u de trefwoorden kent. Gebruik semantisch zoeken als u "herinneringen over X" wilt waarbij X anders wordt omschreven.