AI Agents · Lección

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.

Lección 4 de 415 pasos

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 unused

Compactació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 recency

Resumen 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 NULL

Tareas 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.

Gratis para empezar

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

  1. Memoria episódica (historial por sesión)
  2. Memoria semántica (datos vectorizados)
  3. Memoria procedimental (biblioteca de habilidades)
  4. Decaimiento de la memoria y recolección de basura
← Volver a AI Agents