Caché Semántica (Semantic Caching)
La caché semántica almacena respuestas pasadas del modelo y las reutiliza cuando una nueva petición es semánticamente similar a una previa, casando por significado mediante embeddings, no por texto exacto. Reduce coste y latencia en consultas repetitivas o casi duplicadas, comunes en producción.
Problema
Muchas consultas en producción son paráfrasis de otras ya respondidas, así que reejecutar el modelo completo en cada una desperdicia coste y latencia.
Cuándo usarlo
Usa la caché semántica cuando el tráfico contiene muchas preguntas similares o repetidas y las respuestas son lo bastante estables para reutilizarse: FAQs, soporte, asistentes de documentación.
Solución
Embebe cada petición entrante y busca en una caché de embeddings de peticiones previas. Si existe una entrada suficientemente similar (por encima de un umbral de similitud), devuelve su respuesta almacenada; si no, llama al modelo y guarda el nuevo par.
Ajusta el umbral de similitud con cuidado: demasiado laxo devuelve respuestas erróneas a preguntas sutilmente distintas; demasiado estricto pierde aciertos válidos. Añade TTLs e invalidación para que las respuestas no queden obsoletas.
Componentes
Beneficios
- Menor coste al evitar llamadas repetidas al modelo.
- Menor latencia en los aciertos de caché.
- Respuestas más consistentes a preguntas similares.
Riesgos
- Un umbral laxo sirve respuestas cacheadas erróneas.
- Caché obsoleta sin TTL ni invalidación.
- Las respuestas personalizadas o sensibles al tiempo se cachean mal.
Cuándo no usarlo
- Cuando la mayoría de consultas son únicas.
- Cuando las respuestas dependen de datos frescos, de usuario o de tiempo.
- Cuando incluso pequeños desajustes son inaceptables.
Tecnologías
Ejemplos
- Reutilizar la respuesta a 'cómo reseteo mi contraseña' en sus muchas formulaciones.
- Cachear preguntas comunes de documentación en un asistente de soporte.
- Cortocircuitar preguntas analíticas idénticas repetidas.
KPIs
- Tasa de aciertos de caché
- Proporción de peticiones servidas desde caché; la palanca de ahorro en coste y latencia.
- Tasa de falsos aciertos
- Con qué frecuencia un acierto 'similar' devuelve una respuesta errónea u obsoleta; el riesgo central de cachear por significado.
- Coste y latencia ahorrados por acierto
- Tokens y tiempo evitados en los aciertos, la ventaja por la que cambias el riesgo de falso acierto.
- Calibración del umbral de similitud
- Si el umbral equilibra tasa de aciertos y falsos aciertos; demasiado laxo daña la calidad, demasiado estricto elimina el ahorro.
Modos de fallo observados
- Falsos aciertos: dos consultas similares en el espacio de embeddings necesitan respuestas distintas, y la caché devuelve la equivocada.
- Obsolescencia: las respuestas cacheadas quedan desactualizadas mientras los hechos subyacentes cambian.
- Mal ajuste del umbral: demasiado laxo devuelve respuestas erróneas, demasiado estricto da casi ningún acierto.
- Envenenamiento de caché: una respuesta mala se cachea y luego se sirve repetidamente.
Lecciones aprendidas
- Ajusta el umbral de similitud con tráfico real; es el parámetro decisivo.
- Nunca caches donde la frescura o la corrección sean críticas sin una estrategia de invalidación.
- Valida o muestrea los aciertos de caché para detectar falsos antes que los usuarios.
- Acota las cachés de forma estrecha (por tenant, por contexto) para no filtrar la respuesta equivocada entre usuarios.
FAQs
- ¿En qué se diferencia de una caché normal?
- Una caché normal casa claves exactas; una caché semántica casa por significado usando embeddings, así las preguntas parafraseadas también aciertan.
- ¿Cuál es el riesgo principal?
- Un umbral de similitud demasiado laxo devuelve una respuesta cacheada para una pregunta que en realidad es distinta. Ajusta el umbral y valida con tráfico real.
- ¿Cómo evito respuestas obsoletas?
- Fija TTLs e invalida entradas cuando cambian los datos subyacentes; evita cachear respuestas personalizadas o sensibles al tiempo.