engineering deep-dive

Como funciona a memória híbrida do ZeroClaw: SQLite Vector + FTS5 explicado

ZeroClaws.io

ZeroClaws.io

@zeroclaws

February 25, 2026

9 min de leitura

Como funciona a memória híbrida do ZeroClaw: SQLite Vector + FTS5 explicado

Se você olhar como a maioria dos sistemas de memória de agentes de IA em produção são arquitetados, vai encontrar um padrão familiar: um banco de dados vetorial como Pinecone ou Weaviate para busca semântica, Elasticsearch ou OpenSearch para busca por palavras-chave, Redis para cache de memórias quentes, e Postgres para dados estruturados. Quatro serviços para implantar, quatro serviços para monitorar, quatro serviços que podem falhar, quatro faturas no fim do mês.

A complexidade é tratada como inevitável —o preço que você paga por uma memória capaz. Mas não é inevitável. É uma consequência de recorrer a ferramentas de sistemas distribuídos para resolver um problema que não os requer.

A memória do ZeroClaw é um único arquivo SQLite. Veja por que isso não é um compromisso.

A armadilha da infraestrutura

Bancos de dados vetoriais são ferramentas genuinamente poderosas. Para um sistema RAG sobre milhões de documentos, ou um motor de busca sobre um corpus grande, são a escolha certa. Mas a memória de agentes de IA é um problema diferente.

A maioria dos agentes armazena milhares de memórias, não milhões. Um ano de conversas diárias pode produzir 50.000 turnos de conversa. Isso não é um problema de big data —é um problema de dados pequenos que é tratado como um problema de dados grandes porque as ferramentas foram projetadas para outra coisa.

O custo desse descompasso é real. O Pinecone começa em 70 USD/mês para uso em produção. O Weaviate requer um servidor rodando. Cada busca de memória é uma viagem de ida e volta pela rede —tipicamente 10-50 ms— que adiciona latência a cada resposta.

Por que SQLite é a base certa

SQLite é o banco de dados mais implantado do mundo. Roda em todo smartphone, todo navegador, todo dispositivo embarcado. Está em desenvolvimento contínuo desde 2000, tem um conjunto de testes exaustivo e é usado em produção por empresas lidando com bilhões de transações. Não é um brinquedo.

O ZeroClaw usa duas extensões do SQLite juntas para construir um sistema de memória que lida com as duas coisas que agentes precisam: recuperação exata e compreensão semântica.

FTS5: Busca de texto completo

A extensão FTS5 do SQLite fornece busca rápida por palavras-chave com ranking BM25:

```sql CREATE VIRTUAL TABLE memory_fts USING fts5(content, tokenize='porter');

-- Buscar memórias sobre "implantação Rust" SELECT * FROM memory_fts WHERE memory_fts MATCH 'rust deployment' ORDER BY rank; ```

FTS5 lida com tokenização, stemming e ranking automaticamente. É rápido —submilissegundo para tamanhos típicos de memória de agentes— e se destaca na recuperação exata.

Busca vetorial: similaridade semântica

O ZeroClaw armazena vetores de embedding junto ao texto e realiza busca de similaridade de cosseno diretamente no SQLite. Isso lida com os casos onde a busca por palavras-chave fica aquem: encontrar memórias que são conceitualmente relacionadas mesmo quando não compartilham palavras exatas.

“Minha configuração de Raspberry Pi” corresponde a “implantando em hardware ARM” mesmo sem compartilhar palavras-chave. A busca vetorial entende significado, não apenas palavras.

Busca híbrida: acertando nos dois

Nenhuma abordagem sozinha é suficiente. A busca por palavras-chave perde conexões semânticas. A busca vetorial perde correspondências exatas —buscar “CVE-2026-25253” pode retornar conteúdo de segurança vagamente relacionado em vez do CVE específico que você procura.

O ZeroClaw roda ambas as buscas em paralelo e mescla os resultados usando Reciprocal Rank Fusion:

```sql score(doc) = 1/(k + rank_fts) + 1/(k + rank_vector) ```

Onde `k` é uma constante (tipicamente 60) que controla quanto peso vai para os resultados mais bem classificados. Documentos que ficam bem classificados em ambas as buscas sobem ao topo.

Os números de desempenho

Numa Raspberry Pi Zero 2 W —o hardware mais limitado em que o ZeroClaw comumente roda— a recuperação de memória leva menos de 3 ms no total: aproximadamente 0,3 ms para busca FTS5, 2 ms para busca vetorial e 0,1 ms para mesclar os resultados. Em hardware x86, esses números são submilissegundo.

Para comparar, uma viagem de ida e volta pela rede ao Pinecone ou Weaviate tipicamente leva 10-50 ms. A recuperação de memória do ZeroClaw é mais rápida do que um único pacote de rede consegue viajar por uma cidade.

Sua memória é apenas um arquivo

A consequência prática da memória baseada em SQLite é que todo o seu histórico de conversas, todo o contexto aprendido do seu agente, tudo que ele sabe sobre você —fica num único arquivo chamado `memory.db`.

Fazer backup é `cp memory.db memory.db.bak`. Mover para uma nova máquina é copiar o arquivo. Inspecionar é abrir com qualquer cliente SQLite. Não há ferramentas de exportação, não há scripts de migração, não há chamadas de API para fazer.

Zero infraestrutura, zero custo, zero complexidade, e desempenho que bancos de dados externos não conseguem igualar porque não há rede no caminho. Para memória de agentes de IA, isso não é um compromisso —é o design certo.

Fique por Dentro

Receba atualizações sobre novos releases, integrações e infraestrutura de agentes em Rust. Sem spam, cancele quando quiser.