# Busca em texto completo FTS5 SUMMARY: Como o Synapse usa SQLite FTS5 para busca de memória em texto completo sub-milissegundo. Busca em texto completo FTS5 O Synapse usa FTS5 (Full-Text Search 5) para busca de memória rápida e flexível. Esta página explica como funciona e como usá-lo de forma eficaz. O que é FTS5? FTS5 é uma extensão do SQLite (também disponível no PostgreSQL via extensões) que oferece capacidades de busca em texto completo. Ele: - Indexa conteúdo textual para busca rápida por palavras-chave - Suporta operadores booleanos (AND, OR, NOT) - Suporta correspondência de frases com aspas - Suporta correspondência por prefixo com - Classifica resultados por relevância O Synapse usa FTS5 para indexar todo o conteúdo das memórias, permitindo busca sub-milissegundo entre milhares de memórias. Como o Synapse usa FTS5 Quando você faz : 1. O conteúdo da memória é armazenado na tabela 2. O conteúdo também é inserido na tabela virtual FTS5 3. FTS5 automaticamente tokeniza e indexa o conteúdo Quando você faz : 1. O Synapse faz parse da consulta usando a sintaxe FTS5 2. Executa um contra o índice FTS5 3. Filtra por (isolamento de tenant) 4. Retorna resultados classificados Sintaxe de consulta Busca simples por palavra-chave [CODE BLOCK] Retorna memórias contendo "docker". Múltiplas palavras-chave (AND implícito) [CODE BLOCK] Retorna memórias contendo TANTO "docker" QUANTO "swarm". Correspondência de frase [CODE BLOCK] Retorna memórias contendo a frase exata "docker swarm". Correspondência por prefixo [CODE BLOCK] Retorna memórias contendo palavras que começam com "docker" (ex.: "dockers", "dockerfile", "dockerize"). Booleano OR [CODE BLOCK] Retorna memórias contendo "docker" OU "kubernetes". Booleano NOT [CODE BLOCK] Retorna memórias contendo "docker" mas NÃO "swarm". Agrupamento [CODE BLOCK] Retorna memórias contendo "docker" ou "kubernetes", mas não "test". Exemplos práticos Encontrar memórias sobre um projeto [CODE BLOCK] Encontrar frase exata [CODE BLOCK] Excluir memórias de teste [CODE BLOCK] Buscar por tecnologia [CODE BLOCK] Ranking FTS5 classifica resultados por relevância usando o algoritmo BM25. Fatores: - Frequência do termo (com que frequência o termo aparece) - Frequência inversa de documentos (termos mais raros recebem classificação maior) - Comprimento do documento (documentos mais curtos com o termo recebem classificação maior) - Peso da coluna (title > content) Os resultados são retornados em ordem de classificação (mais relevantes primeiro). Desempenho | Operação | Latência | |----------|----------| | Busca em 100 memórias | < 5ms | | Busca em 1.000 memórias | < 10ms | | Busca em 10.000 memórias | < 25ms | | Busca em 100.000 memórias | < 100ms | FTS5 é altamente otimizado para workloads com muita leitura. Limitações Stemming FTS5 não faz stemming por padrão. "running" e "run" são termos diferentes. Solução alternativa: Use correspondência por prefixo: Tolerância a typos FTS5 não suporta correspondência fuzzy. Um typo não retornará resultados. Solução alternativa: Use busca semântica () para correspondência conceitual. Stop words Palavras comuns (the, a, an, is) são indexadas mas podem não ser úteis para busca. FTS5 lida com isso automaticamente. FTS5 vs busca semântica | Aspecto | FTS5 | Busca semântica | |---------|------|-----------------| | Velocidade | Sub-milissegundo | 50-100ms | | Correspondência | Palavras-chave exatas | Conceitual | | Tolerância a typos | Nenhuma | Alguma | | Stemming | Nenhum | Implícito | | Requer embeddings | Não | Sim | | Melhor para | Termos específicos | Conceitos | Use FTS5 quando você conhece as palavras-chave. Use busca semântica quando você quer "memórias sobre X" onde X é descrito de outra forma. Melhores práticas > [!TIP] > - Use termos específicos — "docker swarm" supera "container orchestration" > - Aspas para frases — garante correspondência de frase > - Use prefixo para variações — captura "deploy", "deployment", "deploying" > - Exclua ruído — filtra memórias de teste > - Combine com tags — estreita os resultados Próximos passos - Busca semântica - API de Memória - Melhores práticas de memória