// 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:
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.