Sobre o projeto
Lexos é um mecanismo de processamento de documentos com IA orientado a eventos, construído em torno de modelos de linguagem auto-hospedados. Ele combina um gateway Go de alta concorrência com workers Python assíncronos para executar sumarização de documentos, geração aumentada por recuperação e transcrição de fala, sem bloquear o manuseio de solicitações HTTP ou depender de APIs de IA externas.
Principais capacidades descritas no README:
Auto-hospedado e focado em privacidade: análise de documentos, embeddings, recuperação vetorial, transcrição e inferência de LLM ocorrem inteiramente no ambiente Docker auto-hospedado, sem exigir APIs de IA externas.
Processamento assíncrono: os clientes recebem uma resposta imediata 202 Accepted com um identificador de tarefa, enquanto o trabalho intensivo em CPU continua em segundo plano.
Streaming de respostas em tempo real: Server-Sent Events transmitem as respostas geradas token por token do worker Python, através de Redis Pub/Sub e do gateway Go, até o navegador.
Armazenamento de objetos compatível com S3: MinIO para desenvolvimento e Cloudflare R2 para produção, usando a mesma configuração de cliente compatível com S3.
Processamento com endereçamento de conteúdo: impressões digitais SHA-256 combinam conteúdo-fonte, operação e parâmetros para reutilizar artefatos concluídos e suprimir processamento duplicado concorrente.
Recuperação multilíngue: embeddings multilíngues, chunking ciente de tokenizador e busca por similaridade de cosseno com FAISS recuperam evidências relevantes entre idiomas suportados.
Testes automatizados isolados: handlers Go usam interfaces Redis e armazenamento injetadas por dependência, enquanto testes Python simulam modelos, armazenamento e operações de rede com Pytest e pytest-mock.
Arquitetura: um frontend Next.js fornece fluxos de trabalho para transcrição, sumarização e perguntas e respostas, com polling TanStack Query e renderização SSE. O gateway Go + Echo lida com ingestão, validação, uploads de streaming para armazenamento de objetos, despacho de tarefas, supressão de duplicatas e proxy SSE. O Redis atua como broker, armazenamento de estado de tarefas, cache de processamento e camada de bloqueio distribuído. O worker Python faz polling nas filas e executa três pipelines: Distiller para sumarização via pipeline Map-Reduce com Qwen3 0.6B, Gleaner para RAG usando embeddings FastEmbed e índices FAISS, e Scriber para transcrição de áudio via Faster-Whisper.
Implantação: projetado para um pequeno VPS apenas com CPU, aproximadamente 4 vCPUs e 8 GB de RAM, com o worker de IA com orçamento de memória em torno de 2 GB. Modelos GGUF quantizados Q4_K_M, carregamento com mapeamento de memória, embeddings baseados em ONNX, índices FAISS IndexFlatIP por documento, concorrência sequencial de workers e estado externalizado mantêm o uso de recursos previsível.
Execução: Docker e Docker Compose são pré-requisitos; clone o repositório e execute docker-compose up --build -d. A inicialização pode levar minutos enquanto os arquivos de modelo são baixados e armazenados em cache. O armazenamento de produção usa a mesma superfície de configuração S3 com um endpoint R2 e S3_REGION=auto, e regras de ciclo de vida podem ser aplicadas com Wrangler. Objetos brutos expiram após um dia e objetos de cache após oito dias, enquanto os metadados de cache do Redis permanecem reutilizáveis por sete dias.
Testes: testes do gateway Go usam mocks Testify para comportamento de handlers, impressões digitais, acertos de cache, recuperação de bloqueios obsoletos e acesso a armazenamento; testes Python validam propriedade de cache, indexação ciente de tokenizador, limpeza de streaming, roteamento de workers, reutilização de artefatos e recuperação de falhas; CI do frontend executa verificação de tipos TypeScript, ESLint e build de produção Next.js.
Licença: MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.