Decaimiento de la memoria y recolección de basura
Olvide según un calendario las memorias antiguas y poco relevantes para que el índice siga centrado.
Decaimiento de la memoria y recolección de basura es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Agents, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Agents incluye 4 lecciones en total.
La memoria crece sin límite
Sin un mantenimiento activo, el almacén de memoria sigue creciendo. Las memorias antiguas e irrelevantes contaminan la recuperación y desperdician espacio de almacenamiento.
La memoria necesita recolección de basura, igual que cualquier otro recurso.
¿Por qué eliminar memorias?
- Privacidad: cumpla las solicitudes de eliminación del RGPD/CCPA
- Relevancia: es menos probable que los datos antiguos sigan siendo correctos
- Coste: el almacenamiento vectorial se acumula a gran escala
- Calidad: los índices demasiado grandes diluyen la relevancia de las búsquedas
Estrategia 1: TTL
Establezca una marca de tiempo de expiración para cada memoria:
ALTER TABLE semantic_facts ADD COLUMN expires_at TIMESTAMPTZ;
-- short-lived
INSERT INTO semantic_facts (..., expires_at) VALUES (..., NOW() + INTERVAL '7 days');
-- garbage collect
DELETE FROM semantic_facts WHERE expires_at < NOW();Estrategia 2: decaimiento basado en el tiempo
Reduzca la confianza con el paso del tiempo: las memorias más antiguas reciben una prioridad menor:
import math
def decayed_confidence(original, age_days, half_life_days=30):
return original * math.exp(-age_days * math.log(2) / half_life_days)
# Then retrieval filters: WHERE decayed_confidence > 0.3
for age in [0, 30, 60, 90]:
print(f"Age {age} days -> confidence {decayed_confidence(1.0, age):.3f}")
Estrategia 3: decaimiento basado en el uso
Las memorias que nunca se recuperan no son útiles; elimínelas después de un período de gracia:
ALTER TABLE semantic_facts ADD COLUMN last_used_at TIMESTAMPTZ DEFAULT NOW();
-- update on retrieval
UPDATE semantic_facts SET last_used_at = NOW() WHERE id = ANY(:retrieved_ids);
-- gc
DELETE FROM semantic_facts WHERE last_used_at < NOW() - INTERVAL '90 days';Estrategia 4: límite de capacidad por usuario
Limite el número de memorias por usuario; cuando se alcance el límite, expulse la menos utilizada:
MAX_FACTS = 500
SELECT COUNT(*) FROM semantic_facts WHERE user_id = %s;
-- if > MAX_FACTS: delete oldest unusedCompactación: combinar memorias similares
Varias memorias pueden expresar lo mismo de distintas formas. Agrúpelas y combínelas periódicamente:
def compact(user_id):
facts = all_facts(user_id)
clusters = cluster_by_embedding(facts, threshold=0.85)
for cluster in clusters:
merged = llm.invoke(f'Merge these into one canonical statement: {cluster}')
replace_with_merged(cluster, merged)Resolución de contradicciones
Si dos memorias se contradicen, marque la más antigua como obsoleta:
def resolve(user_id, new_fact):
similar = retrieve(user_id, new_fact, k=5)
for s in similar:
if llm_says_contradicts(s, new_fact):
mark_obsolete(s.id)
save(new_fact)Estrategia 5: ponderación por importancia
Algunas memorias son más importantes que otras. Asigne una puntuación a cada una:
importance_prompt = 'Rate the importance of this fact for future interactions (0-1):\n{fact}'
for fact in facts:
score = float(llm.invoke(importance_prompt.format(fact=fact)).content)
update_importance(fact.id, score)
# Retrieval: weight by importance and recencyResumen al estilo de Letta
Letta (MemGPT) comprime la memoria archivada antigua al resumir bloques de datos relacionados cuando se llena el almacenamiento:
if archival_size > LIMIT:
block = oldest_facts(50)
summary = summarise(block)
replace(block, summary)Eliminación iniciada por el usuario
Ofrezca a los usuarios un botón «olvidarse de mí». Al hacer clic:
def forget_user(user_id):
conn.execute('DELETE FROM semantic_facts WHERE user_id = %s', (user_id,))
conn.execute('DELETE FROM episodes WHERE user_id = %s', (user_id,))
vector_db.delete(filter={'user_id': user_id})Eliminación lógica frente a eliminación física
Para las auditorías, prefiera la eliminación lógica (marcar los datos como eliminados y conservarlos cifrados) hasta que pase el período de conservación; después, realice una eliminación física:
ALTER TABLE semantic_facts ADD COLUMN deleted_at TIMESTAMPTZ;
-- queries always: WHERE deleted_at IS NULLTareas programadas de GC
Ejecute GC según un calendario (cron, un worker diario). No realice una GC pesada en línea: añade latencia para los usuarios:
# Daily cron at 03:00 UTC
for user_id in all_users():
decay_confidence(user_id)
delete_expired(user_id)
compact_clusters(user_id)¿Por qué aplicar decaimiento?
¿Por qué reducir con el tiempo la confianza en las memorias?
Resumen
TTL, decaimiento, expulsión basada en el uso, límites de capacidad, compactación, resolución de contradicciones y eliminación iniciada por el usuario. La memoria necesita un servicio de limpieza; créelo.
Aprende AI Agents con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 60
- Lecciones
- 239
Preguntas frecuentes
¿La lección «Decaimiento de la memoria y recolección de basura» es gratis?
Sí — el texto completo de «Decaimiento de la memoria y recolección de basura» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Agents, actualiza a CoddyKit PRO. El curso de AI Agents incluye 4 lecciones en total.
¿Qué aprenderé en «Decaimiento de la memoria y recolección de basura»?
Olvide según un calendario las memorias antiguas y poco relevantes para que el índice siga centrado. Practicas AI Agents con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AI Agents?
No se requiere experiencia previa. AI Agents en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Decaimiento de la memoria y recolección de basura»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AI Agents?
Sí. Cada lección de AI Agents incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Memoria episódica (historial por sesión)
- Memoria semántica (datos vectorizados)
- Memoria procedimental (biblioteca de habilidades)
- Decaimiento de la memoria y recolección de basura