# Búsqueda de texto completo FTS5 SUMMARY: Cómo Synapse usa SQLite FTS5 para búsqueda de texto completo de memoria sub-milisegundo. Búsqueda de texto completo FTS5 Synapse usa FTS5 (Full-Text Search 5) para búsqueda de memoria rápida y flexible. Esta página explica cómo funciona y cómo usarlo eficazmente. ¿Qué es FTS5? FTS5 es una extensión de SQLite (también disponible en PostgreSQL vía extensiones) que proporciona capacidades de búsqueda de texto completo. Esta persona: - Indexa contenido de texto para búsqueda rápida por palabra clave - Admite operadores booleanos (AND, OR, NOT) - Admite coincidencia de frases con comillas - Admite coincidencia por prefijo con - Ordena resultados por relevancia Synapse usa FTS5 para indexar todo el contenido de memoria, lo que habilita búsqueda sub-milisegundo entre miles de memorias. Cómo Synapse usa FTS5 Cuando hace : 1. El contenido de la memoria se almacena en la tabla 2. El contenido también se inserta en la tabla virtual FTS5 3. FTS5 tokeniza e indexa el contenido automáticamente Cuando hace : 1. Synapse parsea la consulta usando la sintaxis FTS5 2. Ejecuta un contra el índice FTS5 3. Filtra por (aislamiento de tenant) 4. Devuelve resultados ordenados por relevancia Sintaxis de consulta Búsqueda simple por palabra clave [CODE BLOCK] Devuelve memorias que contienen "docker". Múltiples palabras clave (AND implícito) [CODE BLOCK] Devuelve memorias que contienen BOTH "docker" AND "swarm". Coincidencia de frase [CODE BLOCK] Devuelve memorias que contienen la frase exacta "docker swarm". Coincidencia por prefijo [CODE BLOCK] Devuelve memorias que contienen palabras que comienzan por "docker" (p. ej. "dockers", "dockerfile", "dockerize"). OR booleano [CODE BLOCK] Devuelve memorias que contienen "docker" OR "kubernetes". NOT booleano [CODE BLOCK] Devuelve memorias que contienen "docker" pero NOT "swarm". Agrupamiento [CODE BLOCK] Devuelve memorias que contienen "docker" o "kubernetes", pero no "test". Ejemplos prácticos Buscar memorias sobre un proyecto [CODE BLOCK] Buscar frase exacta [CODE BLOCK] Excluir memorias de test [CODE BLOCK] Buscar por tecnología [CODE BLOCK] Ranking FTS5 ordena los resultados por relevancia usando el algoritmo BM25. Factores: - Frecuencia del término (con qué frecuencia aparece) - Frecuencia inversa de documento (términos más raros obtienen mayor ranking) - Longitud del documento (documentos más cortos con el término suben) - Peso de columna (title > content) Los resultados se devuelven en orden de ranking (más relevantes primero). Rendimiento | Operación | Latencia | |-----------|---------| | Search 100 memories | < 5ms | | Search 1,000 memories | < 10ms | | Search 10,000 memories | < 25ms | | Search 100,000 memories | < 100ms | FTS5 está altamente optimizado para cargas de trabajo con muchas lecturas. Limitaciones Stemming FTS5 no hace stemming por defecto. "running" y "run" son términos diferentes. Workaround: Use coincidencia por prefijo: Tolerancia a erratas FTS5 no admite coincidencia difusa. Una errata no devolverá resultados. Workaround: Use búsqueda semántica () para coincidencia conceptual. Stop words Las palabras comunes (the, a, an, is) se indexan pero pueden no ser útiles para la búsqueda. FTS5 lo gestiona automáticamente. FTS5 vs Búsqueda semántica | Aspecto | FTS5 | Búsqueda semántica | |--------|------|-----------------| | Velocidad | Sub-milisegundo | 50-100ms | | Coincidencia | Palabras clave exactas | Conceptual | | Tolerancia a erratas | Ninguna | Alguna | | Stemming | Ninguno | Implícito | | Requiere embeddings | No | Sí | | Mejor para | Términos específicos | Conceptos | Use FTS5 cuando conozca las palabras clave. Use búsqueda semántica cuando quiera "memorias sobre X" donde X se describe de forma diferente. Mejores prácticas > [!TIP] > - Use términos específicos — "docker swarm" vence a "container orchestration" > - Encadene frases entre comillas — garantiza coincidencia de frase > - Use prefijo para variaciones — captura "deploy", "deployment", "deploying" > - Excluya ruido — filtra memorias de test > - Combine con etiquetas — acota resultados Próximos pasos - Búsqueda semántica - API de Memory - Mejores prácticas de memoria