Mem0 : donner une mémoire persistante à ses agents IA open source
Un agent IA sans mémoire repart de zéro à chaque conversation : il oublie les préférences de l’utilisateur, le contexte du projet, les décisions déjà prises. Mem0 est une brique open source (licence Apache 2.0) qui ajoute une couche de mémoire persistante et intelligente à n’importe quel pipeline LLM : extraction automatique des faits saillants, stockage vectoriel, récupération contextuelle, sans réinventer la roue à chaque projet.
Le problème que Mem0 résout
Injecter tout l’historique dans le prompt coûte cher et atteint vite la limite de contexte. Stocker brutalement les conversations dans une base vectorielle (Qdrant, pgvector) produit du bruit : on ressort des bouts de phrases hors contexte. Mem0 introduit un niveau intermédiaire : un extracteur qui identifie les faits durables ( « l’utilisateur préfère les réponses en français », « le projet cible est sous Debian 12 »), les stocke de manière structurée, et les réinjecte uniquement quand ils sont pertinents.
Architecture en trois couches
- Extraction : un LLM analyse chaque échange et en extrait les faits à mémoriser au format atomique.
- Stockage hybride : une base vectorielle (Qdrant, pgvector, Chroma) pour la recherche sémantique, couplée à un graphe optionnel (Neo4j) pour représenter les relations entre entités.
- Récupération : à chaque nouvelle requête, Mem0 injecte automatiquement les souvenirs les plus pertinents dans le contexte de l’agent.
Mise en place minimale auto-hébergée
Mem0 se branche sur une stack open source déjà en place : Ollama ou vLLM pour le LLM, Qdrant ou pgvector pour les vecteurs. L’intégration tient en quelques lignes :
from mem0 import Memory
config = {
"llm": {"provider": "ollama", "config": {"model": "llama3.1:8b"}},
"embedder": {"provider": "ollama", "config": {"model": "nomic-embed-text"}},
"vector_store": {"provider": "qdrant", "config": {"host": "localhost", "port": 6333}},
}
m = Memory.from_config(config)
m.add("L'utilisateur gère une infrastructure OpenSVC avec Keycloak", user_id="louis")
resultats = m.search("Quel IdP utilise-t-il ?", user_id="louis")
Aucune dépendance cloud : tout reste sur l’infrastructure maîtrisée.
Cas d’usage concrets
- Assistant support : il se souvient du ticket précédent, de la version déployée, du contournement déjà tenté.
- Agent métier : il retient les règles de gestion, les préférences de l’équipe, les décisions d’architecture.
- Copilote technique : il mémorise la stack, les conventions de code, les choix de déploiement projet par projet.
- Portail open data : il retient les jeux de données fréquemment consultés par un utilisateur et anticipe ses besoins.
Points de vigilance
La mémoire est puissante mais ambiguë : un fait mal extrait est rejoué à chaque conversation et contamine toutes les réponses suivantes. Trois réflexes à adopter : versionner la mémoire (snapshots réguliers de la base vectorielle), auditer régulièrement les faits stockés (Mem0 expose une API pour lister et supprimer), et cloisonner par user_id ou agent_id pour éviter les fuites de contexte entre utilisateurs. La RGPD s’applique pleinement : ce qui est mémorisé doit être supprimable à la demande.
Positionnement dans la stack
Mem0 n’est ni un orchestrateur (rôle de LangGraph), ni un observateur (rôle de Langfuse), ni un stockage brut (rôle de Qdrant ou pgvector). C’est la couche sémantique entre l’agent et sa base de connaissances durable. Associé à LangGraph pour le flux et à Langfuse pour la supervision, il complète une stack d’agents IA entièrement auto-hébergée et souveraine.
Pour aller plus loin
Tester Mem0 sur un cas simple : un assistant qui se souvient de trois ou quatre faits utilisateur, suffit à mesurer le gain perçu. L’alternative open source la plus proche, Letta (anciennement MemGPT), pousse le concept plus loin avec un modèle d’état inspiré des OS ; à évaluer si l’on veut piloter finement la hiérarchie mémoire courte/longue. Dans tous les cas, une mémoire bien pensée transforme radicalement la perception qu’un utilisateur a de son agent : on passe d’un outil qu’il faut re-briefer à un collaborateur qui sait.
