Caché semántica: cuándo reutilizar una respuesta de IA
Aprende cómo funciona la caché semántica y cuándo reutilizar respuestas de IA. Ajusta el umbral, la caducidad y los permisos para evitar respuestas incorrectas.
Publicado el

La caché semántica permite evitar llamadas repetidas al modelo, siempre que solicitudes redactadas de forma distinta puedan recibir la misma respuesta sin riesgo. El proceso consta de 4 pasos: generar el embedding del prompt, buscar vecinos, aplicar un umbral y devolver una respuesta guardada o llamar al modelo. Lo difícil es decidir cuándo una coincidencia cercana sigue dando una respuesta equivocada.
Conviene empezar por un centro de ayuda con contenido estable o por las preguntas frecuentes públicas de un producto. Un modelo de lenguaje de gran tamaño (LLM), el sistema que genera la respuesta, no debería tener que explicar una misma política publicada cada vez que alguien formula la pregunta de otra manera. Los saldos de cuentas, el estado de los pedidos y las acciones como emitir reembolsos deben quedar fuera de esa caché compartida.
Los detalles de implementación que siguen se verificaron en la documentación oficial el 21 de octubre de 2026. El ejemplo de la tienda es ficticio: sus puntuaciones de similitud ilustran una decisión; no son resultados medidos con embeddings.
Caché semántica, caché exacta y caché de prompts: qué reutiliza cada una
Una caché semántica reutiliza una respuesta anterior cuando una nueva solicitud parece tener el mismo significado. Se parece al trabajo de alguien que atiende una mesa de ayuda y busca una respuesta aprobada en un archivador: distintas formulaciones pueden llevar al mismo documento, pero todavía hay que comprobar a qué política y a qué cliente se aplica.
Un embedding es una representación numérica de un texto que permite comparar su significado con el de otros textos. La caché guarda el embedding de un prompt anterior junto con su respuesta y el contexto que permite identificar a qué caso corresponde. El nuevo prompt se convierte en otro embedding y una búsqueda vectorial encuentra entradas cercanas. La documentación de Microsoft sobre caché semántica describe este patrón de reutilización de respuestas y explica por qué importa el contexto de la conversación.
Cada capa de caché ahorra un trabajo distinto:
En una caché de respuestas exactas, «¿Puedo devolver estos auriculares?» y «¿Se aceptan devoluciones de estos auriculares?» suelen tener claves distintas. La caché semántica puede relacionar esas reformulaciones. Ninguno de los dos métodos vuelve segura una respuesta desactualizada o aplicada al ámbito equivocado.
La caché de prompts del proveedor no recupera una respuesta anterior porque la pregunta se parezca a otra. La documentación de Anthropic sobre caché de prompts describe la reutilización de prefijos coincidentes y la distingue expresamente de la generación de la salida. La aplicación sigue pidiendo al modelo que produzca una respuesta. La guía sobre KV cache explica el estado interno del modelo que hay detrás de esta diferencia.
Las capas pueden convivir: primero se consulta una caché de respuestas exactas, después una semántica y, por último, se llama al modelo con la caché de prompts del proveedor, si está disponible. El rendimiento de la caché semántica debe compararse con esa base ya optimizada.
Cómo reutilizar respuestas de un LLM en cuatro pasos
La consulta debe encontrar una respuesta reutilizable dentro de un contexto permitido. Hay que establecerlo antes de buscar: el usuario autenticado o la organización cliente, la política aplicable, el idioma y cualquier otro dato que cambie lo que la respuesta puede decir.
1. Generar el embedding del prompt
Convierte la pregunta entrante en un embedding con el mismo modelo de embeddings y una configuración compatible con la de las entradas guardadas. Incluye el contexto de conversación necesario para interpretar la solicitud o limita la caché a preguntas que se entiendan por sí solas.
«¿Y el mío?» no es una clave de caché completa. Si averiguar a qué se refiere «el mío» exige consultar datos privados de un pedido, omite la caché compartida de respuestas.
2. Buscar vecinos
Busca candidatos cercanos entre los embeddings de prompts guardados, dentro del ámbito permitido. Recupera la respuesta de cada candidato y sus metadatos: los campos que indican su propietario, la versión de la fuente y su caducidad.
El vecino más cercano es simplemente la entrada más próxima que se ha encontrado. Aun así, puede no ser pertinente. Encontrar algo no equivale a encontrar una coincidencia válida.
3. Aplicar el umbral y comprobar si se permite la reutilización
Compara la similitud o la distancia del candidato con el umbral que hayas calibrado. Después, exige una coincidencia exacta en los campos que pueden cambiar la respuesta, como el estado del producto, la versión de la política y el ámbito de acceso.
Si la puntuación cumple el umbral, pero el contexto no coincide, trátalo como un fallo de caché. Haz lo mismo si no puedes establecer el contexto necesario de forma fiable.
4. Devolver la respuesta o llamar al modelo
Si se acepta la coincidencia, devuelve la respuesta guardada sin realizar una nueva llamada de generación. Si hay un fallo de caché, ejecuta el flujo habitual del modelo o de recuperación de información, devuelve el resultado y guárdalo solo si cumple las reglas de admisión de la caché.
No conviertas automáticamente cada salida del modelo en una respuesta reutilizable. Los errores, los datos personales y las respuestas vinculadas a resultados transitorios de herramientas pueden no ser aptos.

La diferencia fundamental con la búsqueda semántica está en lo que ocurre después de recuperar la información. La búsqueda presenta material pertinente; una caché de respuestas puede presentar directamente una respuesta anterior como respuesta a la solicitud actual. Por eso, una coincidencia falsa tiene consecuencias mayores.
Un acierto y una coincidencia cercana que hay que rechazar
Basta con que cambie una condición para invalidar una coincidencia que, por lo demás, parece convincente. Pensemos en una tienda imaginaria cuya política permite devolver auriculares sin abrir, pero excluye los que ya se han abierto. Son datos para explicar el funcionamiento, no la política de ningún comercio real.
La caché contiene:
- Pregunta guardada: «¿Puedo devolver unos auriculares sin abrir?»
- Respuesta guardada: «Sí. La política de devoluciones de esta tienda admite los auriculares sin abrir».
- Contexto guardado: la versión vigente de la política de la tienda, la categoría de auriculares, el idioma inglés y
condition=unopened.
Solo para este ejemplo, supongamos que la similitud coseno mínima es 0.90. La similitud coseno compara la dirección de los vectores; no expresa la probabilidad de que una respuesta sea correcta. Las puntuaciones siguientes son inventadas y sirven para mostrar cómo se toma la decisión.
Ambos candidatos superan el umbral numérico. Solo la reformulación puede reutilizar la respuesta. La coincidencia que debe rechazarse comparte el producto, la acción y buena parte de las palabras, pero cambia el dato que determina la respuesta.
La aplicación debe conservar el estado del producto en un campo estructurado cuando lo conozca. Si tiene que extraerlo del texto y no puede hacerlo con certeza, debe recurrir al flujo normal de respuesta. Otra comparación de embeddings no sustituye saber si el artículo se abrió.

Qué ajustes permiten reutilizar respuestas con seguridad
El umbral, el tiempo de vida y el ámbito de aplicación funcionan en conjunto. Si solo ajustas el umbral, la caché seguirá siendo vulnerable a solicitudes perfectamente similares que necesitan respuestas distintas.
Umbral de similitud: calibrarlo a partir de las respuestas incorrectas
Un umbral más estricto sacrifica algunos aciertos útiles a cambio de reducir las coincidencias falsas. Uno más permisivo aumenta la reutilización y puede aumentar también la reutilización incorrecta. Construye, a partir de tu propio tráfico, un conjunto etiquetado de reformulaciones y negativos difíciles: preguntas parecidas cuyas respuestas deben ser distintas.
Incluye cambios de fechas, variantes de producto, negaciones, monedas, roles de cuenta e historiales de conversación. Evalúa si la respuesta guardada es válida para la nueva solicitud, no solo si los prompts hablan del mismo tema.
Comprueba qué mide la métrica antes de mover el ajuste. Redis Vector Library (RedisVL), una biblioteca para crear aplicaciones con la búsqueda vectorial de Redis, documenta distance_threshold en unidades de distancia COSINE de Redis, de 0 a 2: los valores más bajos exigen una coincidencia más estricta. Un umbral de similitud mínima suele funcionar en sentido contrario. Referencia de la API de RedisVL.
No existe un umbral universal que puedas trasladar entre modelos de embeddings, conjuntos de datos o productos. Cambiar el modelo de embeddings también exige planificar la migración del índice y volver a calibrar; no conviene mezclar vectores antiguos y nuevos sin más.
Tiempo de vida: la caducidad es solo una medida de respaldo
El tiempo de vida (TTL) indica cuánto tiempo puede reutilizarse una entrada antes de que caduque. Debe depender de cuánto tiempo puedes tolerar una respuesta antigua, no de cuánto tiempo puede conservarla la caché.
Una respuesta sobre documentación estable y otra sobre disponibilidad de inventario en tiempo real tienen necesidades de actualización distintas. Puede ser mejor no guardar la segunda en caché. Una corrección urgente de una política debe invalidar las entradas afectadas de inmediato, aunque su TTL no haya vencido.
Incluye la versión de la fuente o de la política entre las comprobaciones para permitir la reutilización. Cuando cambie esa versión, las entradas antiguas dejarán de coincidir. RedisVL ofrece un TTL predeterminado y la posibilidad de sustituirlo en cada entrada, pero corresponde a la aplicación decidir la duración adecuada. API de caché de RedisVL.
Ámbito por usuario: la identidad debe marcar un límite exacto
Usa una caché compartida solo para respuestas destinadas a compartirse. Un tenant es una organización cliente; limitarse a esa frontera no basta si sus empleados tienen derechos de acceso distintos.
Una respuesta específica de una cuenta necesita un ámbito que refleje al usuario autenticado y sus permisos actuales. «¿Cuál es mi fecha de renovación?» no debe buscar entre todas las personas que hayan hecho la misma pregunta. Obtén la identidad de la autenticación fiable de la aplicación, no de una frase aportada por el usuario ni de un embedding.
Aplica los filtros de ámbito antes de seleccionar el candidato y valida la autorización antes de devolverlo. Los cambios de permisos y las eliminaciones deben invalidar la vía de reutilización afectada. filterable_fields y filter_expression de RedisVL ofrecen mecanismos de filtrado; no definen automáticamente tu política de autorización. Parámetros de filtrado.
Contexto y versiones: conservar los supuestos de cada respuesta
Delimita las entradas según el prompt de sistema que influya en la respuesta, los requisitos del modelo, el esquema de salida, el idioma y la versión de la fuente. Un párrafo guardado en caché no puede satisfacer una nueva solicitud que exige una respuesta estructurada de otra forma.
En la caché de conversaciones, una misma frase final puede referirse a temas anteriores distintos. La explicación de Microsoft sobre la ventana de contexto señala expresamente este fallo. Empieza por preguntas independientes, salvo que puedas representar y validar el historial pertinente.
Opciones de implementación: gateway, patrón con Redis o biblioteca
Elige el punto de integración según dónde puedas hacer cumplir los límites de uso de la respuesta. Son ejemplos de implementación, no una clasificación de productos intercambiables.
En el gateway: Kong AI Semantic Cache
Kong AI Semantic Cache, un plugin incluido en la oferta AI Gateway Enterprise de Kong, sitúa la caché semántica de respuestas en el gateway: el punto de entrada por el que pasan las solicitudes al modelo. Su documentación describe la búsqueda mediante embeddings con configuraciones de Redis o pgvector. La referencia de configuración expone cache_ttl, message_countback y vectordb.threshold.
Encaja en flujos de solicitudes repetibles y gestionados de forma centralizada. Su principal limitación es el contexto de la aplicación: un gateway solo puede hacer cumplir las distinciones que incluyas en su configuración y en las solicitudes. Verifica el aislamiento entre usuarios y el manejo del historial antes de activarlo para conversaciones personalizadas.
También conviene revisar un detalle de nomenclatura: la descripción del plugin de Kong indica que activar la opción de caché exacta no desactiva las coincidencias por similitud. No interpretes ese ajuste como un modo de seguridad que solo admite coincidencias exactas.
Caché semántica con Redis
Redis, un almacén de datos con funciones de búsqueda vectorial, permite que la aplicación controle tanto la consulta como el flujo que se ejecuta cuando no hay acierto. La clase SemanticCache documentada por RedisVL ofrece operaciones check y store, metadatos, filtros y controles de TTL. Documentación de RedisVL.
Usa este patrón cuando la aplicación ya conozca la organización cliente, la política y las versiones de los registros, y necesite comprobarlas antes de devolver un resultado. El mismo patrón arquitectónico puede implementarse con otro almacén vectorial adecuado: los vectores de los prompts localizan candidatos; las respuestas guardadas y sus metadatos determinan qué se puede reutilizar.
La contrapartida es la responsabilidad que asumes. Un índice vectorial no aporta reglas de admisión en caché, invalidación, autorización ni una respuesta correcta. Debes implementar y supervisar esos comportamientos, además de mantener un despliegue compatible con las consultas vectoriales que utilices.
Como biblioteca: GPTCache
GPTCache, una biblioteca para construir cachés semánticas, separa la generación de embeddings, el almacenamiento de respuestas, la búsqueda vectorial y la evaluación de similitud en componentes configurables. Su documentación advierte expresamente que no todas las combinaciones de módulos son compatibles.
Encaja si quieres experimentar con los componentes de recuperación y evaluación dentro de una aplicación. Su principal limitación es la responsabilidad de integración: verifica que los adaptadores elegidos funcionen con el SDK de tu modelo y tu despliegue actuales, y mantén las mismas comprobaciones de ámbito y vigencia a su alrededor. La abstracción de una biblioteca no convierte un acierto semántico en una respuesta correcta.
Si también estás eligiendo la capa de enrutamiento de solicitudes, consulta la comparativa de gateways de IA y LiteLLM frente a OpenRouter para tomar esa decisión más amplia. La caché es un requisito más, junto con el enrutamiento, las credenciales y la observabilidad.
Cómo calcular el ahorro con tus propias solicitudes
Una caché solo ahorra dinero si el costo de generación que evita supera los costos de embeddings, consultas, almacenamiento y operación. Cuenta también los fallos: añaden la sobrecarga de la caché y aun así necesitan llamar al modelo.
Usa un único periodo de medición y una única moneda. Sea N el número de solicitudes aptas que llegan a la capa semántica, después de los aciertos de la caché exacta; H, los aciertos semánticos aceptados; G, el costo de generación por solicitud, bajo el supuesto simplificador de que todas cuestan lo mismo; E, el costo de embedding más consulta por solicitud apta; W, el costo de escritura en caché por fallo; y F, el costo fijo de infraestructura y operación del periodo.
El cálculo es el siguiente:
- Sin la capa semántica:
N × G - Con ella:
(N − H) × G + N × E + (N − H) × W + F - Ahorro neto:
H × G − N × E − (N − H) × W − F
Haz el cálculo con tus registros: multiplica los aciertos aceptados por el costo del modelo que evitaron, resta el costo de consulta de todas las solicitudes aptas, resta las escrituras de los fallos y, por último, resta los costos fijos. Usa el costo de generación después de aplicar cualquier ahorro de la caché de prompts del proveedor, no la tarifa de lista sin caché.
Bajo esos supuestos, la condición para que haya ahorro es:
H > [N × (E + W) + F] / (G + W)
Para una carga de trabajo mixta, sustituye H × G por la suma de los costos de generación evitados en las solicitudes que realmente dieron un acierto. Cuenta las escrituras reales si algunas respuestas no se admiten en la caché. Incluye los reintentos, las llamadas de evaluación y el trabajo operativo en los totales correspondientes. La tasa de aciertos, por sí sola, no indica si la reutilización compensó su costo.
El mismo razonamiento se aplica a la latencia. Los aciertos eliminan la generación de su recorrido; los fallos añaden el embedding y la búsqueda antes de generar. Registra ambos recorridos, incluida la latencia de las solicitudes más lentas. Una carga de trabajo con preguntas mayoritariamente únicas puede volverse más lenta aunque sus aciertos ocasionales sean rápidos.
¿Qué se exagera sobre la caché semántica?
Un «significado similar» no garantiza que las respuestas sean equivalentes. La caché selecciona una respuesta existente; no demuestra que siga siendo correcta, esté autorizada o continúe vigente.
La métrica más engañosa es una tasa de aciertos que mejora sin una auditoría paralela de los aciertos incorrectos. Un umbral más permisivo puede mejorar el aspecto del panel de métricas mientras aumenta el trabajo de corrección del equipo de soporte. Revisa las respuestas guardadas frente a las nuevas solicitudes, especialmente las más próximas al límite de aceptación.
La caché de respuestas tampoco sustituye la generación aumentada por recuperación (RAG), en la que un modelo recibe material recuperado de las fuentes para ayudarlo a producir una respuesta. Una caché puede situarse antes de ese flujo, pero saltárselo también significa omitir una nueva consulta a las fuentes. Vincula las respuestas guardadas a las versiones de sus fuentes u omite la reutilización cuando los datos deban estar actualizados.
Trata «cancela mi pedido» como una acción, no como una pregunta reutilizable. Una confirmación anterior no demuestra que una nueva acción se haya autorizado ni ejecutado. Mantén la ejecución y su resultado actual en el flujo normal de la aplicación.
Quién debería empezar y cuál es el siguiente paso
Quienes desarrollan aplicaciones con preguntas públicas repetidas deberían empezar ya, con un alcance limitado. Elige una intención de consulta estable, define su ámbito permitido y conserva una referencia de comparación con caché exacta. El beneficio es reducir las llamadas repetidas de generación sin ampliar los tipos de respuestas que la aplicación puede reutilizar.
Los equipos de operaciones deberían evaluar primero en modo sombra. Registra qué respuesta de la caché se habría devuelto mientras sigues entregando la respuesta normal. Etiqueta las reformulaciones válidas y las coincidencias cercanas que deben rechazarse; después, ajusta el umbral según los errores inaceptables. Mide la sobrecarga de la caché, su comportamiento al caducar y la calidad de la propia respuesta guardada.
Quienes compran soluciones deberían pedir pruebas de aislamiento e invalidación. No basta con que una lista de funciones incluya la caché semántica. Pregunta cómo gestiona el sistema las preguntas idénticas de usuarios distintos y qué sucede inmediatamente después de que cambie una política.
Conviene esperar si la mayoría de las preguntas dependen de registros cambiantes o de un contexto de varios turnos que no puedes aislar. Si las repeticiones exactas ya cubren el tráfico reutilizable, la búsqueda semántica puede aportar poco. La caché de prompts del proveedor puede seguir ayudando con los prefijos de entrada repetidos sin obligarte a reutilizar una respuesta terminada.
Para empezar el lunes: elige una intención de consulta del centro de ayuda, reúne sus reformulaciones y otras preguntas deliberadamente confusas, define el ámbito de la caché y la regla de invalidación, y reproduce las consultas en modo sombra. Activa la reutilización de respuestas solo cuando los casos que producirían respuestas incorrectas se rechacen de forma segura.
Preguntas frecuentes
¿Qué es la caché semántica?
Guarda respuestas anteriores y las recupera por similitud de significado. La reutilización también exige que el contexto coincida, que los permisos sean válidos y que la respuesta siga suficientemente actualizada.
¿Cuáles son los tres tipos de caché?
Para esta decisión sobre LLM, conviene distinguir la caché de respuestas exactas, la caché de respuestas semánticas y la caché de prompts del proveedor. Es una comparación útil para este artículo, no una clasificación universal de todas las cachés informáticas.
¿Cómo se implementa una caché semántica?
Define el ámbito permitido, genera embeddings de los prompts entrantes, recupera candidatos, aplica un umbral calibrado y las comprobaciones necesarias para permitir la reutilización; después, devuelve la respuesta guardada o llama al modelo. Añade caducidad, invalidación y supervisión de aciertos incorrectos antes de activar la reutilización.
¿Una CDN es solo una caché?
No. Una red de distribución de contenido (CDN) reparte la entrega de contenido entre distintas ubicaciones; la caché es uno de los mecanismos que utiliza. Consulta la arquitectura de CDN de Cloudflare.
¿Cloudflare es una CDN o un WAF?
Cloudflare ofrece tanto servicios de CDN como un firewall de aplicaciones web (WAF), que filtra el tráfico de las aplicaciones. Ninguna de esas denominaciones implica por sí sola una caché semántica de respuestas de LLM. Arquitectura de Cloudflare.
¿En qué se diferencian una CDN y Redis?
Una CDN entrega contenido a través de una red perimetral. Redis es un almacén de datos que una aplicación puede utilizar como caché, incluido un patrón de caché semántica configurado para ello. Ocupan lugares distintos dentro del sistema.
¿Cloudflare es únicamente una CDN?
No. Cloudflare también documenta servicios de DNS, firewall y otros servicios perimetrales en su arquitectura de referencia.
¿Kafka es mejor que Redis?
Resuelven necesidades distintas. Apache Kafka es una plataforma de transmisión de eventos. No sustituye directamente el patrón de caché semántica de respuestas con Redis descrito aquí.
¿Netflix usa Redis?
Sí. Redis documenta el uso que hace Netflix de Redis para colas de prioridad, con un enlace al artículo de Netflix sobre Timestone. Ese ejemplo histórico no demuestra el uso de caché semántica para LLM ni justifica activarla en tu aplicación.
Para recibir consejos prácticos sobre cómo crear aplicaciones de IA fiables, suscríbete al boletín.
- Publicado
- Categoría
- Build
- Idioma










