Questions fréquentes
Questions de base
Quelle est la relation entre MemX et mem0 ?
MemX est la version améliorée (un surensemble) de mem0, avec une nouvelle couche de gestion intelligente de la mémoire ACE. Lorsque ace_enabled=False, son comportement est strictement identique à celui de mem0, sans aucun surcoût.
Un GPU est-il nécessaire ?
Non. Le modèle d’embedding local all-MiniLM-L6-v2 s’exécute sur le CPU via ONNX Runtime (< 5 ms/entrée) ; le pré-filtrage par règles du Reflector ne dépend pas du GPU, et le raffinement LLM du mode hybrid passe par une API distante.
Cela engendre-t-il une consommation supplémentaire de tokens LLM ?
Par défaut, le mode hybrid n’appelle le LLM que pour les candidats à valeur, réduisant les appels de plus de 90 % par rapport à l’appel systématique de mem0 ; lorsque le LLM est indisponible, il se rabat automatiquement sur des règles pures, sans coût. Pour le désactiver explicitement, définissez reflector.mode="rules".
Quelles bases de données vectorielles sont prises en charge ?
Toutes celles héritées de mem0 (Qdrant, Chroma, Pinecone, Weaviate, Milvus, etc.), le stockage en mémoire par défaut convenant au développement et aux tests.
Questions d’utilisation
Comment migrer depuis mem0 ?
pip install git+https://github.com/UU114/memx.gitRemplacez
from mem0 import Memoryparfrom memx import MemoryLe code existant n’a pas besoin d’être modifié (ACE est désactivé par défaut).
Une fois prêt, ajoutez
config={"ace_enabled": True}pour activer les fonctionnalités intelligentes.
Où les données sont-elles stockées ?
Cela dépend du backend de base de données vectorielle configuré ; par défaut en mémoire (perdues au redémarrage), il est recommandé en production de persister avec Qdrant/Chroma. Le modèle d’embedding local est mis en cache dans ~/.memx/models/.
Comment contrôler la vitesse de décroissance ?
| Paramètre | Effet |
|---|---|
decay.half_life_days | Augmenter → décroissance plus lente (30 jours par défaut) |
decay.boost_factor | Augmenter → renforcement du rappel plus marqué (0,1 par défaut) |
decay.permanent_threshold | Diminuer → devient plus facilement une mémoire permanente (15 fois par défaut) |
Comment traiter une connaissance mal interprétée ?
memx list --scope project:my-app— consultermemx forget <memory-id>— supprimermemx learn "correct knowledge"— ajouter manuellement
Comment partager la mémoire entre plusieurs personnes / plusieurs agents ?
Activez le mode démon : plusieurs agents partagent une même base de connaissances via une socket IPC (plugins d’IDE, collaboration d’équipe), et utilisez scope pour distinguer les projets/espaces de travail.
Questions de confidentialité
Le filtrage ne peut pas être désactivé
Les 12 règles intégrées de filtrage des informations sensibles constituent une limite de sécurité indésactivable ; seul l’ajout de règles supplémentaires via privacy_custom_patterns est possible.
Quels types d’informations sensibles sont filtrés ?
| Type | Exemple |
|---|---|
| Clé privée PEM | -----BEGIN RSA PRIVATE KEY----- |
| Token Bearer / JWT | Bearer eyJhbG... |
| Clé API Anthropic | sk-ant-api03-* |
| Clé API OpenAI | sk-proj-* |
| Token GitHub | ghp_*, github_pat_* |
| Clé d’accès AWS | AKIA* |
| Clé secrète AWS | 40 caractères base64 |
| Chaîne de connexion à une base de données | postgres://user:pass@host/db |
| Chemin du système d’exploitation | /home/user/.ssh/id_rsa |
| Règle personnalisée | ajoutée via privacy_custom_patterns |
INFO
Ces 12 règles ciblent les informations sensibles de type secrets et chemins locaux (secrets + user paths), et non les PII au sens traditionnel (e-mail / téléphone / carte d’identité, etc.). Si vous avez besoin d’un filtrage des PII, étendez-le vous-même via privacy_custom_patterns.
Que deviennent les valeurs originales après filtrage ?
Elles sont remplacées par un espace réservé (par exemple [REDACTED:api_key]), et la valeur originale n’est stockée nulle part. Le filtrage est exécuté tout en amont du pipeline d’écriture.
Questions de performance
Combien de mémoires peut-on stocker ?
Cela dépend de la capacité du backend de base de données vectorielle ; MemX lui-même n’impose aucune limite stricte ; le moteur de décroissance archive automatiquement afin de maintenir une taille active raisonnable.
RecallReinforcer affecte-t-il les performances de recherche ?
Non. Il s’exécute dans un thread d’arrière-plan asynchrone et ne met à jour recall_count qu’après le renvoi des résultats, sans bloquer la recherche.
Quelle est la latence de récupération ? (< 10 000 mémoires)
| Opération | Latence |
|---|---|
| Recherche hybride à quatre couches | 10-50 ms |
| Recherche par mots-clés pure (repli L4) | 5-20 ms |
| Calcul d’embedding local | < 5 ms |
| Écriture (avec Reflector + Curator) | 20-100 ms |