Sistema self-hosted de Retrieval-Augmented Generation para o chatbot fiscal Abilioo.
Corpus fechado, zero alucinacoes, streaming em tempo real.
Crawl diario (04:00 UTC) compara hash do PDF/HTML com versao anterior. Se diferente, marca como actualizado.
Descarrega nova versao. Regista em crawl_logs com status "updated". Mantem versao anterior como backup.
Remove do Qdrant todos os pontos com document_id do documento antigo. Apaga registos da tabela chunks.
Parse → chunk → contextualizacao (Haiku) → embedding (Voyage) → upsert Qdrant. Pipeline identica a ingestao inicial.
Confirma que novos chunks existem no Qdrant. Regista duracao e contagens em crawl_logs. Corpus imediatamente actualizado.
Percorre paginacao da area (ex: CIVA). Compara PIV_ IDs encontrados com tabela documents. Novos IDs = documentos novos.
Descarrega PDF. Cria registo em documents com status "downloaded". Rate limit: 1 req/s para nao sobrecarregar AT.
Apenas os documentos novos passam pela pipeline. Chunks adicionados ao Qdrant (sem tocar nos existentes). Custo: ~$0.003/doc.
POST /admin/ingest com ficheiro PDF/HTML. Admin identifica fonte e tipo. Protegido por ADMIN_API_KEY.
Mesmo fluxo: parse → chunk → contexto → embed → Qdrant. Documento fica disponivel para queries imediatamente.
Testar query relacionada no /api/search para confirmar que chunks sao recuperados. Ajustar metadados se necessario.
Metadata filtering nativo, hybrid search (dense + sparse), quantizacao binaria, Rust = eficiente em RAM.
Sem overhead CPU/RAM no VPS. $0.06/1M tokens, 5x mais barato que OpenAI. Bom desempenho em portugues.
Prompt Caching = 90% desconto em tokens repetidos. Prompt system v1.5 cacheavel. Rapido, bom em PT.
Metodo Anthropic: -49% a -67% falhas de retrieval. Chunks legais com contexto do documento.
BM25 critico para termos legais exactos ("artigo 23.o do CIRC"). RRF funde os dois rankings.
Sem Node.js no VPS, < 50KB total, streaming nativo via EventSource, zero build step.
API oficial, gratuito ate 1000 conversas/mes, webhook simples.
Sites AT sao server-rendered HTML simples. Nao precisam de JS runtime.
VPS partilhado (custo incremental ~0). Ingestao inicial one-time: ~17 EUR (~5000 docs).
Docker-compose unificado, Qdrant + Redis, modelos PostgreSQL expandidos, nginx com rotas novas.
Parser PDF/HTML, chunking estrutural por artigo, contextual embeddings (Haiku), vectorizacao Voyage AI, upsert Qdrant.
Retrieval hibrido (dense + BM25 + RRF), Claude Haiku com prompt v1.5 cacheado, streaming SSE, rate limiting.
Interface web de chat com streaming em tempo real, Markdown, citacoes clicaveis, badges de robustez.
Crawlers por fonte AT/DRE, scheduler diario, deteccao de novos documentos, re-ingestao automatica.
Canal WhatsApp via Meta Cloud API. Webhook, formatacao adaptada, disclaimer legal.
Multiplos clientes com dados isolados. API keys, planos, upload de dados privados, conversas persistentes.
Painel para contabilista rever respostas do LLM, classificar qualidade, dar feedback e melhorar o sistema.
Alertas de nova informacao nas fontes, erros de sistema, bot em baixo. Notificacoes por email e Telegram.
Admin UI para gerir fontes: adicionar novas, remover antigas, upload de documentos soltos, definir novos schemas de crawling.
Total estimado: 26-40 dias de trabalho. Cada fase e independentemente deployavel e testavel.