Mémoire sémantique (faits vectorisés)
Stockez dans un index vectoriel les faits indépendants que l’agent a appris sur l’utilisateur ou le monde.
Mémoire sémantique (faits vectorisés) est une leçon AI Agents gratuite sur CoddyKit. Ceci est la leçon 2 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.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
Qu’est-ce que la mémoire sémantique ?
La mémoire sémantique contient des faits indépendants que l’agent connaît — sur l’utilisateur, le monde ou l’entreprise. Contrairement à la mémoire épisodique, aucun horodatage n’est associé à un événement précis.
Exemples :
- « Le nom de l’utilisateur est Alice. »
- « Alice préfère les degrés Celsius. »
- « Le niveau tarifaire actuel est Pro à 20 $/mois. »
Format de stockage
Un stockage vectoriel associé à des métadonnées structurées :
CREATE TABLE semantic_facts (
id UUID PRIMARY KEY,
user_id TEXT NOT NULL,
fact TEXT NOT NULL,
embedding vector(1536),
source TEXT, -- 'extracted' / 'user-stated' / 'system'
confidence REAL DEFAULT 1.0,
created_at TIMESTAMPTZ DEFAULT NOW()
);Extraire des faits des conversations
Après chaque session, exécutez un extracteur LLM :
extract_prompt = '''
From the conversation below, list any new facts about the user.
Return JSON: [{"fact": "...", "confidence": 0.0-1.0}]
Conversation:
{transcript}
'''
print(extract_prompt.strip())
Saving Extracted Facts
import uuid
for f in extracted:
vec = embed(f['fact'])
conn.execute('''
INSERT INTO semantic_facts (id, user_id, fact, embedding, confidence, source)
VALUES (%s, %s, %s, %s, %s, 'extracted')
''', (str(uuid.uuid4()), user_id, f['fact'], vec, f['confidence']))Récupération au moment de l’inférence
Pour chaque nouvelle requête, récupérez les faits pertinents et injectez-les dans l’invite système :
def relevant_facts(user_id, query, k=5):
qvec = embed(query)
rows = conn.execute('''
SELECT fact FROM semantic_facts
WHERE user_id = %s
ORDER BY embedding <=> %s LIMIT %s
''', (user_id, qvec, k))
return [r[0] for r in rows]
facts = relevant_facts(user_id, user_question)
system = SYSTEM_PROMPT + '\n\nKnown facts:\n' + '\n'.join(facts)Mettre à jour les faits
Que se passe-t-il lorsqu’un fait change ? « Alice préfère les degrés Celsius » -> « Alice préfère désormais les degrés Fahrenheit ». Deux stratégies :
- Marquer l’ancien fait comme obsolète (ajouter updated_at, suppression logique)
- Ou stocker les contradictions et les résoudre lors de la récupération
Réconcilier les faits
Lors de l’extraction, recherchez les contradictions avec les faits existants :
def reconcile(user_id, new_fact):
similar = relevant_facts(user_id, new_fact, k=3)
response = llm.invoke(f'Is the new fact ({new_fact}) consistent with existing facts ({similar})? If contradicting, return the obsolete one.')
if response.has_contradiction:
mark_obsolete(response.obsolete_id)
save_fact(new_fact)Confidence-Weighted Retrieval
rows = conn.execute('''
SELECT fact FROM semantic_facts
WHERE user_id = %s AND confidence > 0.6
ORDER BY embedding <=> %s LIMIT %s
''', ...)Obsolescence des faits
Certains faits deviennent obsolètes (« le projet actuel est X »). Ajoutez un TTL ou faites décroître la confiance au fil du temps :
UPDATE semantic_facts
SET confidence = confidence * 0.95
WHERE created_at < NOW() - INTERVAL '30 days';Faits sensibles du point de vue de la confidentialité
Chiffrez les PII avant de les stocker. Certains faits (santé, finances) nécessitent une protection supplémentaire : stockez-les dans une table distincte et mieux sécurisée.
Faits modifiables par l’utilisateur
Montrez aux utilisateurs les faits que vous avez stockés et permettez-leur de les modifier ou de les supprimer. Cela renforce la confiance et réduit les erreurs de mémoire inquiétantes.
La mémoire comme outil
Exposez les opérations de mémoire comme des outils que l’agent lui-même peut appeler :
tools = [
{'name': 'remember_fact', 'description': 'Save a new fact about the user'},
{'name': 'forget_fact', 'description': 'Remove a stored fact'},
{'name': 'recall_facts', 'description': 'Search relevant facts for a query'}
]
import json
print(json.dumps(tools, indent=2))
Letta et MemGPT
Le cadre Letta (anciennement MemGPT) implémente la mémoire des agents à grande échelle, avec une mémoire « principale » distincte (toujours présente dans le contexte) et une mémoire « d’archivage » (recherchée par vecteurs).
Mémoire sémantique ou épisodique
En quoi la mémoire sémantique diffère-t-elle de la mémoire épisodique ?
Récapitulatif
Stockez dans un stockage vectoriel les faits sur l’utilisateur, récupérez les K faits pertinents à chaque tour et injectez-les dans l’invite système. Réconciliez les contradictions ; faites décroître ou expirer les faits au fil du temps.
Questions Fréquemment Posées
La leçon « Mémoire sémantique (faits vectorisés) » est-elle gratuite ?
Oui — le texte complet de « Mémoire sémantique (faits vectorisés) » 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 « Mémoire sémantique (faits vectorisés) » ?
Stockez dans un index vectoriel les faits indépendants que l’agent a appris sur l’utilisateur ou le monde. 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 2 sur 4.
Combien de temps prend la leçon « Mémoire sémantique (faits vectorisés) » ?
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