01
O tempo não está no modelo, está em quatro caches frios
Quando alguém diz que a primeira consulta é lenta, o palpite imediato costuma ser o modelo de embedding. Às vezes é, mas quase nunca é só ele. Uma consulta de RAG atravessa uma cadeia de componentes que têm estados frios independentes, e cada um deles cobra o próprio pedágio na primeira execução. Se você otimizar o componente errado, o gráfico não muda e o time conclui que o problema é inevitável.
A separação útil é por natureza do custo. Há custo de carregar bytes do disco para a memória, há custo de compilar ou alocar estruturas na primeira chamada, há custo de estabelecer conexão e há custo de construir estruturas auxiliares de busca que o índice mantém em memória. Cada um responde a uma técnica diferente de aquecimento, e é por isso que uma única consulta sintética no boot resolve parcialmente e engana bastante.
| Componente frio | O que custa na primeira vez | Ordem de grandeza típica | O que aquece de verdade |
|---|---|---|---|
| Modelo de embedding local | Carregar pesos, alocar buffers e compilar kernels do runtime | 1 a 10 s | Uma inferência real com o mesmo formato de entrada do tráfego |
| API de embedding remota | Handshake TLS e resolução de DNS sem pool aberto | 100 a 500 ms | Abrir o pool de conexões no boot e mantê-lo vivo com keep-alive |
| Páginas do índice no disco | Ler do disco os blocos do grafo ou das listas invertidas | 0,5 a 30 s conforme o tamanho | Tocar as páginas de fato, com consultas que percorrem o índice |
| Estruturas em memória do motor | Montar grafo de navegação, tabelas de quantização e mapas de id | 0,2 a 5 s | Chamada explícita de load ou warmup exposta pelo motor |
| Cache do sistema operacional | Reler arquivo mapeado que foi devolvido por falta de uso | Reaparece após ociosidade | Consulta periódica de manutenção, não só no boot |
| Camada de reranking | Carregar um segundo modelo, quase sempre esquecido | 1 a 5 s | Aquecer com um par consulta-documento representativo |
A linha do cache do sistema operacional é a que mais gera discussão, porque contraria a intuição de que aquecer é uma tarefa de inicialização. Um índice grande acessado por arquivo mapeado vive na memória por cortesia do sistema operacional, e essa cortesia é revogada assim que outro processo precisa de memória ou assim que aquelas páginas ficam tempo demais sem uso. Em um serviço que recebe tráfego contínuo isso raramente acontece; em um serviço com tráfego irregular, acontece todo dia de madrugada, e é exatamente esse o caso em que o time percebe o sintoma.