# Recherche en texte intégral FTS5 SUMMARY: Comment Synapse utilise SQLite FTS5 pour la recherche de mémoire en texte intégral sub-milliseconde. Recherche en texte intégral FTS5 Synapse utilise FTS5 (Full-Text Search 5) pour une recherche de mémoire rapide et flexible. Cette page explique son fonctionnement et comment l'utiliser efficacement. Qu'est-ce que FTS5 ? FTS5 est une extension SQLite (aussi disponible dans PostgreSQL via des extensions) qui fournit des capacités de recherche en texte intégral. Elle : - Indexe le contenu textuel pour la recherche rapide par mot-clé - Prend en charge les opérateurs booléens (AND, OR, NOT) - Prend en charge la correspondance de phrases avec des guillemets - Prend en charge la correspondance par préfixe avec - Classe les résultats par pertinence Synapse utilise FTS5 pour indexer tout le contenu des mémoires, ce qui permet une recherche sub-milliseconde à travers des milliers de mémoires. Comment Synapse utilise FTS5 Lorsque vous faites : 1. Le contenu de la mémoire est stocké dans la table 2. Le contenu est aussi inséré dans la table virtuelle FTS5 3. FTS5 tokenize et indexe automatiquement le contenu Lorsque vous faites : 1. Synapse analyse la requête en utilisant la syntaxe FTS5 2. Exécute un contre l'index FTS5 3. Filtre par (isolation tenant) 4. Renvoie les résultats classés Syntaxe de requête Recherche simple par mot-clé [CODE BLOCK] Renvoie les mémoires contenant « docker ». Plusieurs mots-clés (AND implicite) [CODE BLOCK] Renvoie les mémoires contenant À LA FOIS « docker » ET « swarm ». Correspondance de phrase [CODE BLOCK] Renvoie les mémoires contenant la phrase exacte « docker swarm ». Correspondance par préfixe [CODE BLOCK] Renvoie les mémoires contenant des mots commençant par « docker » (ex. « dockers », « dockerfile », « dockerize »). Booléen OR [CODE BLOCK] Renvoie les mémoires contenant « docker » OU « kubernetes ». Booléen NOT [CODE BLOCK] Renvoie les mémoires contenant « docker » mais PAS « swarm ». Regroupement [CODE BLOCK] Renvoie les mémoires contenant « docker » ou « kubernetes », mais pas « test ». Exemples pratiques Trouver des mémoires sur un projet [CODE BLOCK] Trouver une phrase exacte [CODE BLOCK] Exclure les mémoires de test [CODE BLOCK] Rechercher par technologie [CODE BLOCK] Classement FTS5 classe les résultats par pertinence en utilisant l'algorithme BM25. Facteurs : - Fréquence du terme (combien de fois le terme apparaît) - Fréquence inverse de document (les termes rares sont mieux classés) - Longueur du document (les documents plus courts avec le terme sont mieux classés) - Pondération de colonne (titre > contenu) Les résultats sont renvoyés dans l'ordre de classement (les plus pertinents d'abord). Performance | Opération | Latence | |-----------|---------| | Recherche dans 100 mémoires | < 5 ms | | Recherche dans 1 000 mémoires | < 10 ms | | Recherche dans 10 000 mémoires | < 25 ms | | Recherche dans 100 000 mémoires | < 100 ms | FTS5 est hautement optimisé pour les charges de travail à forte lecture. Limites Stemming FTS5 ne fait pas de stemming par défaut. « running » et « run » sont des termes différents. Contournement : Utilisez la correspondance par préfixe : Tolérance aux fautes de frappe FTS5 ne prend pas en charge la correspondance floue. Une faute de frappe ne renverra aucun résultat. Contournement : Utilisez la recherche sémantique () pour la correspondance conceptuelle. Mots vides Les mots courants (the, a, an, is) sont indexés mais peuvent ne pas être utiles pour la recherche. FTS5 gère cela automatiquement. FTS5 vs recherche sémantique | Aspect | FTS5 | Recherche sémantique | |--------|------|-----------------| | Vitesse | Sub-milliseconde | 50-100 ms | | Correspondance | Mots-clés exacts | Conceptuelle | | Tolérance aux fautes | Aucune | Quelque peu | | Stemming | Aucun | Implicite | | Requiert des embeddings | Non | Oui | | Idéal pour | Termes spécifiques | Concepts | Utilisez FTS5 lorsque vous connaissez les mots-clés. Utilisez la recherche sémantique lorsque vous voulez « des mémoires sur X » où X est décrit différemment. Bonnes pratiques > [!TIP] > - Utilisez des termes spécifiques — « docker swarm » bat « container orchestration » > - Citez les phrases — garantit la correspondance de phrase > - Utilisez un préfixe pour les variantes — capture « deploy », « deployment », « deploying » > - Excluez le bruit — filtre les mémoires de test > - Combinez avec les tags — affine les résultats Prochaines étapes - Recherche sémantique - API Memory - Bonnes pratiques mémoire