Pesquisa semântica local para conversas de IA com fastembed e LanceDB

Um desenvolvedor implementou um sistema de busca semântica local para histórico de conversas de IA, processando 368 mil mensagens sem dependências de nuvem ou chaves de API. O projeto usa fastembed com o modelo BAAI/bge-small-en-v1.5 para embeddings baseados em CPU e LanceDB como armazenamento vetorial que opera como um único diretório sem processo de servidor.
Stack Técnica
- Embeddings: fastembed com modelo BAAI/bge-small-en-v1.5 (384 dimensões)
- Armazenamento vetorial: LanceDB - diretório único, sem processo de servidor, amigável para anexos
- Ingestão: Coleta de transcrições de sessões JSONL (Claude Code, qualquer exportação de chat)
- Desempenho de embedding: ~500 documentos/segundo em CPU M4
Detalhes Principais de Implementação
O desenvolvedor aprendeu várias lições práticas durante a iteração de 4 meses:
- Embedding seletivo: Versões iniciais incorporavam todas as mensagens, o que reduzia a relação sinal-ruído. A implementação atual incorpora apenas mensagens de usuários e mensagens de assistentes com conteúdo substancial (ignorando respostas como "claro, aqui está esse código"), reduzindo a contagem de vetores em 60% enquanto melhora a qualidade da busca.
- Estratégia de fragmentação: Mudar de fragmentos de tamanho fixo para fragmentos por turno de conversa fez uma diferença enorme na relevância da recuperação. A escolha do modelo (testados nomic-embed-text, bge-large, all-MiniLM) mostrou diferenças marginais comparadas à abordagem de fragmentação.
- Vantagens do LanceDB: O desenvolvedor considerou o LanceDB "estupidamente subestimado para escala pessoal" - sem servidor, sem Docker, apenas um diretório com anexação instantânea de novos vetores, substituindo uma configuração pgvector superdimensionada.
- Fluxo de trabalho de re-embedding: O modelo bge-small-en-v1.5 com 384 dimensões é rápido o suficiente para reincorporar a cada hora como um trabalho cron. Uma reindexação completa de 117 mil vetores leva aproximadamente 4 minutos em hardware M2.
Métricas de Desempenho
- Total de mensagens ingeridas: 407 mil
- Vetores indexados: 87 mil
- Latência de busca (p50): 12ms em 117 mil vetores
- Tempo de reindexação completa: ~4 minutos (M2)
- Armazenamento: ~180MB em disco
- Chaves de API necessárias: 0
O projeto é de código aberto sob licença MIT e está disponível em github.com/mordechaipotash/brain-mcp. A instalação é via pipx install brain-mcp && brain-mcp setup.
📖 Leia a fonte completa: r/LocalLLaMA
👀 See Also

Gerenciando Múltiplas Tarefas de Agentes de IA com Quadros Kanban
Um desenvolvedor compartilha sua experiência executando múltiplos agentes de IA Claude em abas de terminal e identifica três desafios principais no fluxo de trabalho: falta de visibilidade do progresso, perda de contexto ao alternar entre tarefas e interrupções por limite de taxa. Sua solução envolve tratar tarefas de IA como itens de trabalho em um quadro Kanban.

Codiff v0.1.0: Um Visualizador de Diff Local para Revisões de Código Geradas por LLM
Codiff v0.1.0 é um aplicativo de desktop rápido e minimalista para revisar diferenças Git locais, com modo de walkthrough com LLM e comentários em linha que podem ser copiados como Markdown.

Habilidades de Código Claude para Estruturação Automatizada de Projetos
Um desenvolvedor criou habilidades Claude Code que automatizam a configuração inicial de projetos full-stack com comandos para React, Next.js, APIs Node.js e monorepos Turborepo. As habilidades buscam as dependências mais recentes, suportam mais de 50 integrações e são licenciadas sob MIT.

Plugin Claude Code Yoink Substitui Dependências de Biblioteca para Reduzir Riscos na Cadeia de Suprimentos
Yoink é um plugin do Claude Code que remove dependências complexas reimplementando apenas as funções necessárias, usando um fluxo de trabalho de três etapas com os comandos /setup, /curate-tests e /decompose. Atualmente suporta Python, com suporte para TypeScript e Rust em desenvolvimento.