Caching com LLMs

Caching com LLMs

Sabemos que trabalhar com LLMs pode ser algo caro, principalmente quando pensamos em larga escala.

// Fluxo simplificado
async function getResponse(question) {
  // 1. Gera embedding da pergunta
  const embedding = await generateEmbedding(question);
  
  // 2. Busca no cache
  const cached = await findSimilarInCache(embedding);
  
  if (cached && cached.similarity > 0.92) {
    return cached.response;
  }
  
  // 3. Se não achou, chama LLM
  const llmResponse = await callLLM(question);
  
  // 4. Cacheia nova resposta
  await cacheResponse(question, embedding, llmResponse);
  
  return llmResponse;
}

Como vimos, existem várias estratégias para implementar cache em LLMs, cada uma com seus trade-offs. Providers como OpenAI e Anthropic oferecem soluções nativas que já trazem economia significativa sem complexidade adicional. Porém, para casos onde precisamos de mais controle ou economia, implementar nosso próprio cache semântico pode ser o caminho - mesmo que isso signifique um setup inicial mais complexo.

A escolha entre essas abordagens vai depender de alguns fatores:

  • Volume de requisições similares
  • Necessidade de customização
  • Recursos técnicos disponíveis
  • Orçamento do projeto

No fim, o importante é começar com a solução mais simples que resolve seu problema e evoluir conforme a necessidade. Talvez começar com cache nativo do provider e, conforme o uso cresce, avaliar a implementação do próprio cache semântico.

Danrley Morais
March 6, 2025