Estudo encomendado pela Arquivo · validado em produção no QIVIQ e no Conciliador

PESQUISA APROFUNDADA · CONTABILIDADE + IA LOCAL · DADOS ATÉ 2026-09

Do balancete à resposta,
sem sair da sua GPU

Modelos ≤32B, harnesses e a arquitetura NL→SQL para uma RTX 5090 de 32 GB

Esta pesquisa responde a uma pergunta concreta de uma empresa de contabilidade: dá para os funcionários escreverem em linguagem natural o relatório que querem — e receberem a resposta do PostgreSQL — rodando tudo localmente? A resposta é sim, com uma ressalva que atravessa todo o relatório: o harness (orquestração, retrieval, guardrails) contribui mais para a acurácia final do que a escolha do modelo. Os dados abaixo vêm de benchmarks públicos medidos entre 2025 e 2026, sempre com a fonte ancorada.

RTX 5090 · 32 GBRYZEN 9950 · 128 GB DDR5LITELLM + PYDANTICAIPOSTGRESQL · PT-BR

Evidência classificada: fonte primária/paper > indústria & técnica > avaliação independente · Números autorreportados sinalizados · Sem recomendação de compra

ROLE

§0 · Achados-chave

Cinco conclusões que decidem o projeto antes da primeira linha de código

O modelo é a peça mais fácil de trocar. O pipeline é o que separa um demo de um sistema em que um contador pode confiar.

1 · O harness pesa mais que o modelo. No FinanceBench — 10.231 perguntas de analistas sobre filings reais — o mesmo GPT-4 Turbo vai de 9% de acurácia sem documento a 85% com a evidência certa no contexto, e pipelines de domínio com re-ranking e metadados chegam a 91%K7K8K9. A variação de pipeline (76 p.p.) é maior que a variação entre qualquer par de modelos da prateleira ≤32B.

2 · 32B é o ponto ótimo da RTX 5090 — e MoE é o atalho de velocidade. Um denso de 32B roda a ~61 tok/s em Q4_K_M; um MoE Qwen3.6 35B-A3B, com só ~3B ativos por token, chega a ~118 tok/s estimados — rápido o bastante para uso interativo por vários funcionáriosK2K3.

3 · Para ler documentos, não use o VLM gigante — use o OCR dedicado de 1B. No OmniDocBench v1.6, PaddleOCR-VL (0,9B) faz 96,34% e MinerU2.5-Pro (1,2B) 95,75%, superando o Qwen3-VL-235B (89,78%) com 200× menos parâmetrosK11. O VLM de 32B entra na etapa seguinte: raciocinar sobre o que foi lido.

4 · Em text-to-SQL, modelos locais especializados de 7B–32B já superam o GPT-4o no benchmark BIRD (71,8% vs 58,5%)K14K16 — mas em esquemas empresariais reais todos despencam para 0–21%K17K18. É aí que schema linking, camada semântica e auto-correção com feedback de execução fazem a diferença.

5 · Português muda a escolha do embedding. Fine-tuning de domínio em português jurídico elevou MRR@10 de 0,53 para 0,70 (+32% relativo) contra o BGE-M3 genéricoK20 — o maior ganho unitário de baixo custo do projeto.

0
amplitude de acurácia do mesmo modelo conforme o harness (FinanceBench 9%→85%)
0
geração medida de um 32B denso em llama.cpp na RTX 5090
0
OmniDocBench v1.6 — PaddleOCR-VL, apenas 0,9B de parâmetros
0
teto do melhor agente no Spider 2.0 — o gap entre benchmark e produção real

Como ler este relatório. Cada número carrega uma âncora K — clique para saltar ao registro de fontes datadas no fim da página. Cada barra e ponto dos gráficos é clicável e abre a ficha do dado. Onde o número é autorreportado pelo fornecedor (Snowflake, Alibaba), o gráfico diz isso explicitamente.

§1 · O hardware — RTX 5090 32 GB + GPU de 16 GB · Ryzen 9950X · 128 GB DDR5

Duas GPUs, uma regra: a 5090 fica com o cérebro, a placa de 16 GB herda todos os serviços

A tentação de manter 32B e 27B residentes na mesma placa morre na aritmética: 33 GB de pesos antes do primeiro token de KV cache.

A RTX 5090 é a única GPU consumer com 32 GB de VRAM e 1.792 GB/s de banda — e é a banda, não o compute, que define a velocidade de geração: cada token de um modelo denso lê o conjunto inteiro de pesos uma vez, logo o teto teórico de um modelo de 20 GB é ~90 tok/s antes de overheadsK3. Na prática, a comunidade mede ~61 tok/s em um 32B denso (Q4_K_M) e 185–213 tok/s em modelos 8B via llama.cppK2. Para cenário multiusuário, o vLLM entrega ~44% mais throughput que Ollama em GPU e 2–3× mais que llama.cpp quando há 32+ requisições concorrentes, graças a PagedAttention e continuous batchingK6.

O plano "32B + 27B residentes juntos" não fecha. Em NVFP4, os dois somam ~33 GB de pesos — estouram a placa antes de alocar um único token de KV cacheK29. O desenho que fecha a conta é assimétrico: a 5090 hospeda um único cérebro — o Qwen3.8-32B NVFP4, servindo roteamento e redação do QIVIQ, classify/veto do Conciliador, visão pesada a 260 dpi e o open-webui — com 8,6 GB de KV cache FP8 para 8 sessões × 8K tokens e prefix caching ligado (o system prompt e o schema linkado se repetem entre usuários; o prefill caro vira hit de cache)K29. Troca de modelo: zero — a preocupação original desaparece porque não há segundo modelo grande para alternar.

A GPU de 16 GB herda os três serviços que hoje disputam (e derrubam) a placa principal: PaddleOCR-VL-1.6 para leitura de PDF (12,1 s/página na GPU, contra >15 min em CPU)K27, Arctic-Text2SQL-R1-14B AWQ (70,04% no BIRD — só 1,8 p.p. abaixo do 32B, por 9 GB em vez de 20)K14 e o BGE-M3 de embeddings. Total: ~14 GB com folga. Numa placa de ~450 GB/s (5060 Ti/5070 Ti 16 GB), o SQL-14B gera ~45–50 tok/s — sobra, porque SQL é resposta curta, e o OCR de 0,9B mal sente a banda menor. O detalhe que mais se esquece continua sendo o KV cache: quantizá-lo para FP8/Q8 corta o custo pela metade com perda desprezível, e é uma linha de configuração no vLLMK3.

Motor de inferência: qual usar onde

MotorPapel recomendadoPor quê
vLLMServidor principal (multiusuário)Maior throughput sob concorrência; API OpenAI-compatible (acopla direto ao LiteLLM); structured output via XGrammar com custo <40 µs/tokenK6K18
SGLangAlternativa ao vLLMThroughput comparável e structured output mais maduro; RadixAttention ajuda em prompts repetitivos (mesmo schema de banco)
llama.cppFallback / desenvolvimentoGGUF flexível, menor consumo de VRAM, offload híbrido CPU+GPU; sem continuous batching — fila serial sob cargaK2
OllamaProtótipo e demoSetup em 60 segundos; processa requisições simultâneas uma a uma — inadequado para produçãoK6

§2 · Modelos até 32B — testes reais

O que a prateleira de 2026 oferece abaixo de 32B — e quem lidera em cada tarefa

A geração 2026 (Qwen3.5/3.6, Gemma 4) aposentou a de 2025; a escolha prática se resume a três nomes, por tarefa.

Em modelos densos de texto, o Qwen3.6-27B lidera entre os abertos do porte com 77,2% no SWE-bench Verified — superando o MoE de 397B da própria geração anterior — e o Gemma 4 31B traz multimodalidade nativa, 140+ idiomas e licença Apache 2.0K4. No índice composto da timetoact (verão 2025), o Qwen3-32B marcou 71,1%, emparelhado com Claude 3.7 Sonnet em modo thinking e acima do GPT-4.1 — enquanto o Gemma 3 27B ficou em 45,0%K5. Para documentos em português, as famílias Qwen e Gemma são as apostas seguras: ambas treinadas em 100+ idiomas, com o português bem coberto — mas a recomendação dos próprios mantenedores é testar com seus dados reais, não confiar em benchmark genéricoK4.

Dois cuidados de leitura de benchmark importam aqui. Primeiro, suites diferentes medem coisas diferentes — um índice composto de chat não prevê acurácia em SQL nem em extração de tabela; por isso este relatório separa os modelos por tarefa em vez de coroar um vencedor único. Segundo, números de fornecedores são autorreportados: tratamos os resultados de Snowflake (Arctic) e Alibaba (XiYan) como sinais fortes, porém marcados, e a comparação justa é sempre dentro da mesma tabela/protocolo (ex.: todos os valores BIRD Dev@M-Schema citados juntos abaixo).

ModeloTipoDestaque medidoLicença

Recomendação por papel (validada contra o hardware do §1). Cérebro único na RTX 5090: Qwen3.8-32B — o mais forte da classe ~30B, residente sozinho com KV cache largo para 8 usuáriosK29. Geração de SQL na GPU de 16 GB: Arctic-Text2SQL-R1-14B (70,04% no BIRD, a 1,8 p.p. do 32B, por 9 GB) ou XiYanSQL-7B (62,13%, ~5 GB) — especialistas superam generalistas de 20× o tamanhoK14K16. Visão/documentos: o próprio 32B com torre visual quando houver raciocínio sobre o documento; OCR dedicado (§3) quando for só leitura. Fallback leve/offline: gpt-oss-20b, que roda em 16 GB.

§3 · Leitura multimodal de relatórios contábeis

O teste real de leitura separa duas coisas: ler o documento e raciocinar sobre ele

A maior surpresa de 2026: modelos de OCR dedicados com ~1B de parâmetros leem documentos melhor que VLMs de 235B — e cabem na folga da sua VRAM.

No OmniDocBench v1.6 — referência para parsing de PDF complexo com tabelas, fórmulas e múltiplas colunas — o pódio é inteiramente de modelos dedicados minúsculos: PaddleOCR-VL-1.6 (0,9B) com 96,34%, MinerU2.5-Pro (1,2B) com 95,75% e GLM-OCR (0,9B) com 95,22%, enquanto o Qwen3-VL-235B marca 89,78%K11. O PaddleOCR-VL ainda é o mais rápido: 1,22 páginas/s com backend vLLM e ~44 GB de VRAM médio em batch — e, para volumes menores, roda em qualquer folga da 5090K11. Na comparação direta de pipelines open-source de PDF, o Docling (IBM, licença MIT) vence em cobertura de formatos e tem o TableFormer, forte justamente em tabelas financeiras — relevante para balanços e DREsK10.

O VLM de 32B tem papel diferente: o Qwen3-VL-32B marca 93,3% no DocVQA, 94,0% no ChartQA e 86,9% no OCRBench, com OCR em 32 idiomas e contexto nativo de 256KK12 — ou seja, ele é o melhor ≤32B para responder perguntas sobre o documento (gráficos, notas explicativas, layout), não para transcrevê-lo em lote. No OCRBench v2 em inglês, modelos abertos pequenos como o GLM-4.6V-Flash (9B) já superam GPT-5 e Gemini 2.5 Pro na tarefaK13. A arquitetura vencedora é em dois estágios: OCR dedicado converte PDF em Markdown estruturado; o VLM/LLM raciocina sobre o texto. E atenção a um achado do MTEB-BR: limitar embeddings a 512 tokens penaliza documentos longos em ~25% de nDCG — relatórios contábeis longos pedem modelos de contexto longo ou chunking inteligenteK20.

OCR dedicadoVLM geralQwen3-VL-32B em outras suites
Veredito · leitura multimodal

Ingestão em lote: PaddleOCR-VL ou MinerU2.5 (1,2B) como serviço separado, convertendo PDFs escaneados em Markdown com tabelas fiéis — SOTA com 1% dos parâmetros de um VLM grande.

Perguntas visuais ad hoc ("o que diz o gráfico da página 12?"): Qwen3-VL-32B residente, sob demanda.

Português: os três líderes de OCR são multilíngues fortes, mas valide com seus próprios balancetes e notas fiscais antes do go-live — nenhum leaderboard público mede layout contábil brasileiro.

§4 · Orquestrador de queries — de linguagem natural a SQL

Modelos locais especializados já ganham do GPT-4o no BIRD — o problema é o que acontece no seu banco real

O benchmark diz que 7B basta. O Spider 2.0 diz que nada basta. A diferença entre os dois números é exatamente o trabalho de engenharia deste projeto.

Na frente otimista: o Arctic-Text2SQL-R1-32B (Snowflake, Apache 2.0) reporta 71,83% de execution accuracy no BIRD — o benchmark mais respeitado de text-to-SQL, com execução real das queries — e a família XiYanSQL-QwenCoder (Alibaba) marca 67,14% (32B), 65,32% (14B) e 62,13% (7B) na mesma tabela M-Schema onde o GPT-4o-0806 faz 58,47%; os três falam PostgreSQL nativamenteK14K16. O framework LitE-SQL mostra o caminho estrutural: com um retriever vetorial de schema (0,6B) + auto-correção guiada por execução, um modelo de 7B chega a 72,10% — e a ablação atribui +4,76 p.p. só ao schema linkingK15.

Na frente realista: o Spider 2.0 — 632 tarefas de workflows empresariais reais, com bancos de 1.000+ colunas — derruba o melhor agente para 21,3%, e o BEAVER, construído sobre logs privados reais, registra 0–2% para o GPT-4o off-the-shelfK17K18. A lição para o projeto não é desanimadora — é que o sistema precisa nascer com as técnicas que os líderes usam: schema linking para não afogar o modelo em 1.000 colunas, camada semântica com nomes de negócio ("receita líquida", "cliente ativo") compilada deterministicamente em SQLK25, self-consistency com votação (o ReFoRCE quase dobra o baseline no Spider 2.0 com isso)K17 e guardrails que rejeitam — nunca "consertam" — SQL perigosoK19.

Tradução para o seu PostgreSQL. O gap de 4–8,5× entre benchmark e produção vem de nomes de coluna crípticos, regras de negócio fora do banco e joins ambíguos. As três contramedidas com evidência: (1) camada semântica curada pelos próprios contadores — cada métrica com nome de negócio, descrição e expressão SQL validada; (2) retriever de schema (pgvector sobre descrições de tabelas/colunas) antes de cada geração; (3) loop de auto-correção: executar o SQL candidato em modo dry-run/EXPLAIN e devolver o erro ao modelo — a primeira passada de correção é a que mais ganhaK15.

§5 · Análise de relatórios contábeis e financeiros

Onde a análise financeira quebra: cadeias de 3+ passos e convenções que não estão escritas no documento

Metade dos erros em FinQA não são de leitura nem de aritmética — são de conhecimento contábil que o modelo não tem.

O benchmark FinQA disseca o fracasso com precisão cirúrgica: em programas que exigem 3 ou mais passos de raciocínio, a acurácia colapsa para 22,78%; quando o cálculo depende de uma constante de domínio (um milhão = mil milhares; ponto-base = 0,01%), cai para 43,88%; e perguntas que cruzam tabela com texto ficam ~17 p.p. abaixo da médiaK21. Cerca de 50% dos erros são lacuna de conhecimento do domínio — o modelo achou os números certos e aplicou a lógica contábil erradaK21. Em 2026, benchmarks ainda mais duros confirmam o padrão: no FinSheet-Bench, o melhor modelo de fronteira cai de 82,4% para 48,6% em planilhas financeiras complexasK26.

As contramedidas têm evidência forte. RAG agentivo de domínio (retrieval contrastivo financeiro + raciocínio programático PoT + roteamento adaptativo) supera o melhor baseline genérico em +8,98 p.p. no FinQA e +9,32 no ConvFinQAK22. Raciocínio iterativo (ciclos de observação-decisão) sobre um RAG ajustado leva a acurácia de 37–59% para 85% no FinanceBenchK7. E a lição arquitetural mais importante para contabilidade: tirar a aritmética do LLM — o modelo propõe o plano de cálculo; quem executa é o PostgreSQL ou Python determinístico. LLM não calcula; LLM orquestra quem calcula.

§6 · Os harnesses que mais melhoraram — ranking por evidência

Medido, não opinado: o que cada técnica de harness entregou em pontos percentuais

Se o orçamento de engenharia permitir só três investimentos, são estes: retrieval de domínio, auto-correção com execução e camada semântica.

Antes do ranking, um harness invisível que já está na sua GPU: a quantização. Até Q4_K_M, a perda de raciocínio de um 32B é ~1,5 p.p. no GSM8K (89,1% → 87,9%); abaixo de Q4 a curva despenca (−5 p.p. em Q3, −14 em Q2)K23. Na 5090 não há motivo para descer de Q4 — o orçamento de VRAM do §1 cabe Q5/Q6 com folga. Para SQL e saída estruturada, prefira Q5_K_M ou superior: tarefas de precisão numérica são as mais sensíveis à quantizaçãoK23.

O segundo harness invisível é o constrained decoding: o XGrammar (backend padrão de vLLM/SGLang desde mar/2026) zera falhas de parse de JSON — que em modelos menores chegam a 3–10% — por menos de 40 µs por tokenK18. Duas nuances medidas: ele garante estrutura, não verdade (valores alucinados continuam possíveis); e forçar JSON desde o início suprime a cadeia de raciocínio — o padrão que preserva acurácia é raciocinar livre e restringir só a resposta finalK18. O PydanticAI implementa exatamente esse ciclo: valida a saída contra o schema e devolve o erro de validação ao modelo para nova tentativa (ModelRetry)K24.

HarnessGanho medidoCusto de implementação
Raciocínio iterativo (OODA) sobre RAG37–59% → 85% (FinanceBench)K7Médio — orquestração no PydanticAI
Embeddings fine-tuned no domínio PT-BRMRR 0,53 → 0,70 (+32% rel.)K20Baixo — fine-tune de BGE-M3 com seus documentos
Metadados + re-ranking no retrievalF1 32,9% → 44,4% (+35% rel.)K7Baixo — pgvector + cross-encoder
Camada semântica (métricas governadas)Elimina classes inteiras de erro de groundingK25Médio — curadoria com os contadores
Auto-correção com feedback de execução1ª passada = maior ganho; reduz todos os tipos de erroK15Baixo — EXPLAIN/dry-run no loop
Schema linking vetorial+4,76 p.p. EX no BIRDK15Baixo — retriever 0,6B
Self-consistency + votação~2× baseline no Spider 2.0 (ReFoRCE)K17Médio — 3–5 amostras por query
Constrained decoding (XGrammar)Falhas de parse 3–10% → 0%K18Trivial — flag no vLLM

§7 · Arquitetura recomendada — ponta a ponta

LiteLLM na porta, PydanticAI no comando, PostgreSQL como cofre — e o LLM longe da aritmética

Cada caixa do diagrama responde a um modo de falha medido nas seções anteriores.

O fluxo de consulta nasce na pergunta em linguagem natural e passa pelo LiteLLM Router, que dá fallback ordenado, cooldowns, limites de orçamento e balanceamento entre deployments — inclusive entre o servidor vLLM local e um endpoint externo para picosK24. O PydanticAI orquestra os agentes com saídas tipadas e retry de validação: um agente de roteamento classifica a intenção (consulta ao banco × pergunta sobre documento × híbrida), o agente SQL recebe apenas o sub-schema relevante via retriever, gera o SQL candidato, e o muro de guardrails — parser AST com sqlglot, não regex — exige SELECT único, tabelas na allow-list e LIMIT injetado, executando sob uma role read-only do PostgreSQLK19. Erros de execução voltam ao modelo como feedback — o loop de auto-correção do §4. Em paralelo, o trilho de documentos converte PDFs em Markdown via OCR dedicado e alimenta o pgvector com embeddings fine-tunados em PT-BRK20.

Diagrama da arquitetura — duas trilhas (documentos e queries) convergindo no orquestrador

AZUL = CAMINHO FELIZ DA QUERY · VERMELHO TRACEJADO = LOOPS DE CORREÇÃO E BLOQUEIO · CADA NÓ = COMPONENTE IMPLANTÁVEL

TRILHA DE DOCUMENTOS (INGESTÃO) PDFs · DRE · balancetes OCR dedicado 1B PDF → MARKDOWN ESTRUTURADO Embeddings PT-BR BGE-M3 FINE-TUNED NO DOMÍNIO pgvector ÍNDICE + METADADOS TRILHA DA QUERY (TEMPO REAL) Funcionário LINGUAGEM NATURAL (PT-BR) LiteLLM Router FALLBACK · BUDGETS · ROTAS PydanticAI AGENTES TIPADOS · MODELRETRY Schema linking RETRIEVER + CAMADA SEMÂNTICA Gerador SQL ARCTIC-14B · GPU 16 GB Guardrails (sqlglot) SELECT · ALLOW-LIST · LIMIT VALIDAR, NÃO SANITIZAR PostgreSQL READ-ONLY · TIMEOUT · ROW-CAP RLS POR CLIENTE/ESCRITÓRIO Resposta auditável SQL EXIBIDO + PROVENIÊNCIA + FONTE DE CADA NÚMERO ERRO DE EXECUÇÃO → AUTO-CORREÇÃO (1ª PASSADA = MAIOR GANHO) BLOQUEIO → REGENERAR RTX 5090 · vLLM QWEN3.8-32B NVFP4 ÚNICO GPU 16 GB · vLLM OCR + SQL-14B + BGE-M3

Fonte · síntese da pesquisa — componentes e padrões ancorados em K6, K15, K18, K19, K20, K24, K25

A pilha, peça por peça

CamadaEscolhaAlternativaMotivo
ServingvLLM (OpenAI-compatible)SGLangThroughput sob concorrência; XGrammar nativoK6
Gateway/roteadorLiteLLM Proxy—Fallbacks ordenados, budgets, cooldowns; desacopla app de modeloK24
OrquestraçãoPydanticAILangGraphSaídas tipadas + retry de validação; menos mágica, mais testávelK24
GPU 1 · cérebroQwen3.8-32B NVFP4 (vLLM, residente único)Qwen3-VL-32B33 GB de dois modelos não cabem; um 32B sozinho + KV FP8 = 28,1 GBK29
GPU 2 · serviços (16 GB)PaddleOCR-VL + Arctic-14B AWQ + BGE-M3XiYanSQL-7B~14 GB total; elimina o OOM documentado em produçãoK27
SQL especializadoArctic-Text2SQL-R1-14BXiYanSQL-7B70,04% no BIRD a 1,8 p.p. do 32B, por 9 GB — o que cabe na GPU 2K14
OCR de documentosPaddleOCR-VL ou MinerU2.5Docling (CPU/MIT)SOTA OmniDocBench com ~1BK10K11
EmbeddingsBGE-M3 + fine-tune PT-BRmultilingual-E5+32% relativo de MRR com fine-tune de domínioK20
Vetorespgvector (no próprio PostgreSQL)QdrantMenos uma peça de infra; join com dados relacionais
Guardrails SQLsqlglot AST + role read-only + RLS—Regex é contornável; AST nãoK19
ObservabilidadeLogfire + LangfuseOpenTelemetry puroTraços por agente, custo por query, avaliação contínuaK24

§8 · Riscos, limites e roadmap

O que pode dar errado — e a ordem certa de construir

O risco número um não é técnico: é um número errado parecendo certo para um contador que confia nele.

Risco 1 — alucinação numérica silenciosa. Constrained decoding garante JSON válido, não valores verdadeirosK18. Mitigação: a resposta exibe sempre o SQL executado e os valores vêm do banco, nunca da memória do modelo; agregados fora da faixa histórica disparam aviso; e perguntas de alto impacto pedem confirmação humana antes de executar.

Risco 2 — o gap benchmark × produção. Com schemas reais de ERP contábil (centenas de tabelas, nomes crípticos), espere acurácia inicial de 30–60%, não os 71% do BIRDK17K18. Mitigação: começar por 10–20 relatórios de alto valor mapeados na camada semântica, medir com Pydantic Evals sobre perguntas reais dos funcionários, e alimentar o loop de feedback — toda correção vira exemplo few-shot ou dado de fine-tuning.

Risco 3 — vazamento entre clientes do escritório. Mitigação estrutural: Row-Level Security no PostgreSQL por cliente, allow-list por perfil de funcionário, e logs imutáveis de toda query executada — requisito de auditoria, não opcionalK19.

Roadmap em quatro fases

FaseEscopoCritério de saída
1 · Fundação (2–4 sem.)vLLM + LiteLLM + PydanticAI; schema linking; guardrails AST; 10 relatórios na camada semântica≥90% de acurácia nas 50 perguntas-canônicas do escritório
2 · Documentos (4–6 sem.)OCR dedicado → Markdown → pgvector; embeddings fine-tunados PT-BRQ&A sobre DREs/balancetes com citação de página
3 · Robustez (contínua)Self-consistency nas queries críticas; loop de feedback → fine-tuning; avaliação contínua com Pydantic EvalsTaxa de correção humana caindo mês a mês
4 · EscalaMultiusuário pleno (continuous batching), segunda GPU se a fila crescer, camada semântica cobrindo o top-50 de métricasp95 < 15 s por resposta com 20 usuários simultâneos

"O modelo é a peça mais barata do sistema. O que você está construindo de verdade é a camada semântica contábil, o retrieval de domínio e os guardrails — o LLM só opera essas peças."

— Síntese da pesquisa, setembro de 2026

ContextoA mesma conclusão aparece independentemente no FinanceBench (harness vale 76 p.p.), no LitE-SQL (retriever 0,6B ≈ multi-agente de 200B) e no FinQA (50% dos erros são de domínio).Por que importaDireciona o orçamento: engenharia de dados e curadoria contábil primeiro, upgrade de modelo por último.

§9 · Caso real medido — QIVIQ + Conciliador na ARQ5090

A tese do relatório, verificada em produção: os dois sistemas do escritório já implementam os harnesses campeões

Quando a pesquisa encontra um sistema real com medições, a convergência é quase constrangedora.

O Conciliador (produção desde 26/09/2026) opera o padrão "determinístico primeiro, LLM depois, humano decide o resto": regras contábeis resolvem o que podem, o RAG (BGE-M3 + pgvector, namespace por empresa) entra só nas linhas sem regra, e o LLM de texto apenas sugere ou veta — nunca grava sozinho no QuestorK27. O QIVIQ vai na mesma direção pelo lado da consulta: em produção o modelo não escreve SQL, respostas seguem um catálogo validado, Python é a fonte de todos os cálculos e uma auditoria determinística confere valores, unidades, datas e citações antes de qualquer entregaK28. O catálogo de relatórios é, na prática, a camada semântica do §4 — a contramedida nº 1 contra o abismo benchmark × produção.

O resultado mais eloquente é medido, não projetado: na prova diária de leitura de extratos, o Qwen3-VL-32B local aprovou as 13 leituras certas e barrou as 13 erradas — e, em 40 PDFs inéditos de 9 bancos, o saldo da última página saiu certo em 29/40 no modelo local a 1,6 s por PDF, contra 26/40 do Gemini 2.5 Flash a 2,7 sK27. O modelo local, com o harness certo (prova aritmética dia a dia), venceu a API de fronteira na tarefa do negócio.

Medições de produção, 26–27/09/2026 — não são projeções

FONTE: TELEMETRIA E HANDOFF DOS PRÓPRIOS PROJETOS · CLIQUE NAS LINHAS PARA O CONTEXTO

MediçãoValorContexto

Fonte · LLM-LOCAL-CONCILIADOR.json / projeto.json (QIVIQ), 2026-09-27 [K27, K28]

O que o caso muda na recomendação de hardware

O próprio histórico da ARQ5090 documenta o porquê da segunda placa: o vLLM reserva 95% da RTX 5090 (29.728 MiB medidos), o qwen3.6:27b do Ollama não cabe na VRAM restante, e a tentativa de somar o PaddleOCR-VL na mesma GPU causou CUDA OOM na requisição mais pesada (260 dpi + 12.288 tokens de saída) e derrubou a produção por ~2 minutosK27. A lição registrada pelo projeto — "qualquer modelo novo precisa ser testado contra a requisição mais pesada, não contra um ok" — é exatamente a disciplina de capacidade que o layout dual-GPU do §1 institucionaliza: a 5090 fica intocada com o 32B e seu KV pool; tudo que é serviço migra para a placa de 16 GBK29.

Pendências que o caso expõe (ordem de ataque). 1) Contexto conversacional do QIVIQ — a API descarta o pedido anterior após um esclarecimento, e esclarecimento é o fluxo normal de NL→SQL. 2) NVFP4 × AWQ INT4 — FP4 fica abaixo do piso Q4 com evidência de estabilidade (§6); o painel de calibração existente permite a rodada comparável que o marco A4 pede. 3) qwen3.6:27b do Ollama sem VRAM — aposentar com a migração para o 32B da 5090. 4) Constrained decoding (XGrammar, nativo do vLLM) no JSON do roteador — zera a classe de falha de parse por <40 µs/tokenK18.