El almacenamiento en caché semántico en aplicaciones LLM (Large Language Model) optimiza el rendimiento al almacenar y reutilizar respuestas basadas en similitudes semánticas en lugar de coincidencias exactas de texto. Cuando llega una nueva consulta, se convierte en una incrustación y se compara con las almacenadas en caché mediante búsqueda por similitud. Si se encuentra una coincidencia cercana (por encima de un umbral de similitud), la respuesta almacenada en caché se devuelve instantáneamente, omitiendo el costoso proceso de recuperación y generación. De lo contrario, se ejecuta la canalización RAG completa y el nuevo par consulta-respuesta se agrega a la caché para uso futuro.
En una configuración RAG, el almacenamiento en caché semántico generalmente guarda las respuestas solo para las preguntas que realmente se han formulado, no para todas las consultas posibles. Esto ayuda a reducir la latencia y los costos de API para preguntas repetidas o ligeramente reformuladas. En este artículo, veremos un breve ejemplo que demuestra cómo el almacenamiento en caché puede reducir significativamente tanto el costo como el tiempo de respuesta en aplicaciones basadas en LLM. Consulta los CÓDIGOS COMPLETOS aquí.
El almacenamiento en caché semántico funciona almacenando y recuperando respuestas basadas en el significado de las consultas de los usuarios en lugar de en su redacción exacta. Cada consulta entrante se convierte en un vector incrustado que representa su contenido semántico. Luego, el sistema realiza una búsqueda de similitud, a menudo utilizando técnicas de vecino más cercano aproximado (ANN), para comparar esta incorporación con las que ya están almacenadas en la caché.
Si existe un par consulta-respuesta suficientemente similar (es decir, su puntuación de similitud excede un umbral definido), la respuesta almacenada en caché se devuelve inmediatamente, evitando costosos pasos de recuperación o generación. De lo contrario, se ejecuta la canalización RAG completa, recuperando documentos y generando una nueva respuesta, que luego se almacena en la caché para uso futuro. Consulta los CÓDIGOS COMPLETOS aquí.
En una aplicación RAG, el almacenamiento en caché semántico solo almacena respuestas a consultas que realmente han sido procesadas por el sistema; no existe un almacenamiento en caché previo de todas las preguntas posibles. Cada consulta que llega al LLM y produce una respuesta puede crear una entrada de caché que contiene la incrustación de la consulta y la respuesta correspondiente.
Dependiendo del diseño del sistema, la caché puede almacenar solo los resultados finales del LLM, los documentos recuperados o ambos. Para mantener la eficiencia, las entradas de la caché se administran a través de políticas como la caducidad del tiempo de vida (TTL) o el desalojo de las menos utilizadas recientemente (LRU), lo que garantiza que solo las consultas recientes o a las que se accede con frecuencia permanezcan en la memoria a lo largo del tiempo. Consulta los CÓDIGOS COMPLETOS aquí.
Instalando dependencias
Configurando las dependencias
Para este tutorial, usaremos OpenAI, pero puedes usar cualquier proveedor de LLM.
Ejecutar consultas repetidas sin almacenamiento en caché
En esta sección, ejecutamos la misma consulta 10 veces directamente a través del modelo GPT-4.1 para observar cuánto tiempo lleva cuando no se aplica ningún mecanismo de almacenamiento en caché. Cada llamada desencadena un cálculo LLM completo y una generación de respuesta, lo que lleva a un procesamiento repetitivo para entradas idénticas. Consulta los CÓDIGOS COMPLETOS aquí.
Esto ayuda a establecer una línea de base para el tiempo y el costo total antes de implementar el almacenamiento en caché semántico en la siguiente parte.
Aunque la consulta sigue siendo la misma, cada llamada tarda entre 1 y 3 segundos, lo que da como resultado un total de ~22 segundos para 10 ejecuciones. Esta ineficiencia resalta por qué el almacenamiento en caché semántico puede ser tan valioso: nos permite reutilizar respuestas anteriores para consultas semánticamente idénticas y ahorrar tiempo y costos de API. Consulta los CÓDIGOS COMPLETOS aquí.
Implementación de almacenamiento en caché semántico para respuestas más rápidas
En esta sección, mejoramos la configuración anterior introduciendo el almacenamiento en caché semántico, que permite a nuestra aplicación reutilizar respuestas para consultas semánticamente similares en lugar de llamar repetidamente a la API GPT-4.1.
Así es como funciona: cada consulta entrante se convierte en una incrustación vectorial utilizando el modelo text-embedding-3-small. Esta incorporación captura el significado semántico del texto. Cuando llega una nueva consulta, calculamos su similitud de coseno con las incrustaciones ya almacenadas en nuestro caché. Si se encuentra una coincidencia con una puntuación de similitud superior al umbral definido (por ejemplo, 0,85), el sistema devuelve instantáneamente la respuesta almacenada en caché, evitando otra llamada a la API.
Si no existe una consulta suficientemente similar en la caché, el modelo genera una nueva respuesta, que luego se almacena junto con su incrustación para uso futuro. Con el tiempo, este enfoque reduce drásticamente tanto el tiempo de respuesta como los costos de API, especialmente para consultas frecuentes o reformuladas. Consulta los CÓDIGOS COMPLETOS aquí.
def get_embedding(texto): emb = client.embeddings.create(model=”text-embedding-3-small”, input=text) return np.array(emb.data[0].embedding) def cosine_similarity(a, b): return np.dot(a, b) / (norm(a) * norm(b)) def Ask_gpt_with_cache(query, umbral=0.85): query_embedding = get_embedding(query) # Verifique la similitud con el caché existente para cached_query, cached_emb, cached_resp en semantic_cache: sim = cosine_similarity(query_embedding, cached_emb) if sim > umbral: print(f”🔁 Usando respuesta en caché (similitud: {sim:.2f})”) return cached_resp, 0.0 # sin tiempo API # De lo contrario, llame a GPT start = time.time() respuesta = client.responses.create( model=”gpt-4.1″, input=query ) end = time.time() text = respuesta.output[0].contenido[0].text # Almacenar en caché semantic_cache.append((query, query_embedding, text)) devolver texto, finalizar – iniciar
“Explain semantic caching in simple terms.”,
“What is semantic caching and how does it work?”,
“How does caching work in LLMs?”,
“Tell me about semantic caching for LLMs.”,
“Explain semantic caching simply.”,
]
total_time = 0 para q en consultas: resp, t = Ask_gpt_with_cache(q) total_time += t print(f”⏱️ La consulta tomó {t:.2f} segundos\n”) print(f”\nTiempo total con almacenamiento en caché: {total_time:.2f} segundos”)
En el resultado, la primera consulta tardó alrededor de 8 segundos ya que no había caché y el modelo tenía que generar una nueva respuesta. Cuando se hizo una pregunta similar a continuación, el sistema identificó una alta similitud semántica (0,86) y reutilizó instantáneamente la respuesta almacenada en caché, ahorrando tiempo. Algunas consultas, como “¿Cómo funciona el almacenamiento en caché en los LLM?” y “Háblame sobre el almacenamiento en caché semántico para LLM” eran lo suficientemente diferentes, por lo que el modelo generó nuevas respuestas, cada una de las cuales tomó más de 10 segundos. La consulta final fue casi idéntica a la primera (similitud 0,97) y se entregó desde la memoria caché al instante.
Consulta los CÓDIGOS COMPLETOS aquí. No dude en consultar nuestra página de GitHub para tutoriales, códigos y cuadernos. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 100.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.

Soy graduado en ingeniería civil (2022) de Jamia Millia Islamia, Nueva Delhi, y tengo un gran interés en la ciencia de datos, especialmente las redes neuronales y su aplicación en diversas áreas.
🙌 Siga MARKTECHPOST: agréguenos como fuente preferida en Google.