Déclin de la mémoire et récupération d’espace
Oubliez périodiquement les souvenirs anciens et peu pertinents afin que l’index reste ciblé.
Déclin de la mémoire et récupération d’espace est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AI Agents, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AI Agents comprend 4 leçons au total.
La mémoire croît sans limite
Sans maintenance active, votre espace de stockage de la mémoire continue de croître. Les souvenirs anciens et hors sujet perturbent la récupération et gaspillent de l’espace de stockage.
La mémoire a besoin d’une collecte des déchets, comme toute autre ressource.
Pourquoi supprimer des souvenirs ?
- Confidentialité — respecter les demandes de suppression prévues par GDPR/CCPA
- Pertinence — les faits anciens ont moins de chances d’être encore exacts
- Coût — le stockage vectoriel finit par coûter cher à grande échelle
- Qualité — des index trop volumineux diluent la pertinence des recherches
Stratégie 1 : TTL
Définissez un horodatage d’expiration pour chaque souvenir :
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();Stratégie 2 : décroissance temporelle
Réduisez le niveau de confiance avec l’âge : les souvenirs plus anciens sont moins prioritaires :
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}")
Stratégie 3 : décroissance fondée sur l’utilisation
Les souvenirs qui ne sont jamais récupérés ne sont pas utiles : supprimez-les après une période de grâce :
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';Stratégie 4 : capacité maximale par utilisateur
Limitez le nombre de souvenirs par utilisateur ; lorsque la limite est atteinte, supprimez celui qui est le moins utilisé :
MAX_FACTS = 500
SELECT COUNT(*) FROM semantic_facts WHERE user_id = %s;
-- if > MAX_FACTS: delete oldest unusedCompaction : fusionner les souvenirs similaires
Plusieurs souvenirs peuvent exprimer la même idée de manière différente. Regroupez-les et fusionnez-les périodiquement :
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)Résolution des contradictions
Si deux souvenirs se contredisent, marquez le plus ancien comme obsolète :
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)Stratégie 5 : pondération par importance
Certains souvenirs sont plus importants que d’autres. Attribuez une note à chacun :
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 recencyRésumé à la manière de Letta
Letta (MemGPT) compresse les anciennes archives de la mémoire en résumant des blocs de faits associés lorsque l’espace de stockage est plein :
if archival_size > LIMIT:
block = oldest_facts(50)
summary = summarise(block)
replace(block, summary)Suppression déclenchée par l’utilisateur
Donnez aux utilisateurs un bouton « oubliez-moi ». Lorsqu’il est sélectionné :
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})Suppression logique ou définitive
Pour les audits, préférez une suppression logique (marquer comme supprimé, mais conserver les données chiffrées) jusqu’à la fin de la période de conservation, puis effectuez une suppression définitive :
ALTER TABLE semantic_facts ADD COLUMN deleted_at TIMESTAMPTZ;
-- queries always: WHERE deleted_at IS NULLTâches planifiées de collecte des déchets
Exécutez la collecte des déchets selon un calendrier (cron, tâche quotidienne). N’effectuez pas une collecte lourde en ligne : elle augmente la latence pour les utilisateurs :
# Daily cron at 03:00 UTC
for user_id in all_users():
decay_confidence(user_id)
delete_expired(user_id)
compact_clusters(user_id)Pourquoi appliquer une décroissance ?
Pourquoi la confiance accordée aux souvenirs doit-elle diminuer avec le temps ?
Récapitulatif
TTL, décroissance, éviction fondée sur l’utilisation, limites de capacité, compaction, résolution des contradictions, suppression déclenchée par l’utilisateur. La mémoire a besoin d’un agent d’entretien : construisez-en un.
Questions Fréquemment Posées
La leçon « Déclin de la mémoire et récupération d’espace » est-elle gratuite ?
Oui — le texte complet de « Déclin de la mémoire et récupération d’espace » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AI Agents, passe à CoddyKit PRO. Le cours AI Agents comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Déclin de la mémoire et récupération d’espace » ?
Oubliez périodiquement les souvenirs anciens et peu pertinents afin que l’index reste ciblé. Tu pratiques AI Agents avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AI Agents ?
Aucune expérience préalable n'est requise. AI Agents sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Déclin de la mémoire et récupération d’espace » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AI Agents ?
Oui. Chaque leçon AI Agents inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Mémoire épisodique (historique par session)
- Mémoire sémantique (faits vectorisés)
- Mémoire procédurale (bibliothèque de compétences)
- Déclin de la mémoire et récupération d’espace