Passer au contenu principal

Recherche mémoire

memory_search trouve des notes pertinentes dans vos fichiers mémoire, même lorsque la formulation diffère du texte d’origine. Il fonctionne en indexant la mémoire en petits segments et en les recherchant à l’aide d’embeddings, de mots-clés ou des deux.

Démarrage rapide

Si vous avez une clé API OpenAI, Gemini, Voyage ou Mistral configurée, la recherche mémoire fonctionne automatiquement. Pour définir explicitement un fournisseur :
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai", // ou "gemini", "local", "ollama", etc.
      },
    },
  },
}
Pour des embeddings locaux sans clé API, utilisez provider: "local" (nécessite node-llama-cpp).

Fournisseurs pris en charge

FournisseurIDNécessite une clé APIRemarques
OpenAIopenaiOuiDétection automatique, rapide
GeminigeminiOuiPrend en charge l’indexation d’images/audio
VoyagevoyageOuiDétection automatique
MistralmistralOuiDétection automatique
OllamaollamaNonLocal, doit être défini explicitement
LocallocalNonModèle GGUF, téléchargement d’environ 0,6 Go

Fonctionnement de la recherche

OpenClaw exécute deux chemins de récupération en parallèle et fusionne les résultats :
  • La recherche vectorielle trouve des notes au sens similaire (« gateway host » correspond à « the machine running OpenClaw »).
  • La recherche de mots-clés BM25 trouve des correspondances exactes (ID, chaînes d’erreur, clés de configuration).
Si un seul chemin est disponible (pas d’embeddings ou pas de FTS), l’autre fonctionne seul.

Améliorer la qualité de recherche

Deux fonctionnalités facultatives aident lorsque vous avez un long historique de notes :

Décroissance temporelle

Les anciennes notes perdent progressivement du poids dans le classement afin que les informations récentes remontent en premier. Avec la demi-vie par défaut de 30 jours, une note du mois dernier obtient 50 % de son poids d’origine. Les fichiers pérennes comme MEMORY.md ne sont jamais soumis à cette décroissance.
Activez la décroissance temporelle si votre agent a des mois de notes quotidiennes et que des informations obsolètes dépassent constamment le contexte récent.

MMR (diversité)

Réduit les résultats redondants. Si cinq notes mentionnent toutes la même configuration de routeur, le MMR garantit que les meilleurs résultats couvrent différents sujets au lieu de se répéter.
Activez le MMR si memory_search continue de renvoyer des extraits quasi dupliqués provenant de différentes notes quotidiennes.

Activer les deux

{
  agents: {
    defaults: {
      memorySearch: {
        query: {
          hybrid: {
            mmr: { enabled: true },
            temporalDecay: { enabled: true },
          },
        },
      },
    },
  },
}

Mémoire multimodale

Avec Gemini Embedding 2, vous pouvez indexer des images et des fichiers audio en plus du Markdown. Les requêtes de recherche restent textuelles, mais elles correspondent aussi au contenu visuel et audio. Consultez la référence de configuration mémoire pour la configuration.

Recherche mémoire de session

Vous pouvez éventuellement indexer les transcriptions de session afin que memory_search puisse rappeler des conversations antérieures. Cela s’active explicitement via memorySearch.experimental.sessionMemory. Consultez la référence de configuration pour plus de détails.

Dépannage

Aucun résultat ? Exécutez openclaw memory status pour vérifier l’index. S’il est vide, exécutez openclaw memory index --force. Seulement des correspondances par mot-clé ? Il se peut que votre fournisseur d’embeddings ne soit pas configuré. Vérifiez openclaw memory status --deep. Texte CJK introuvable ? Reconstruisez l’index FTS avec openclaw memory index --force.

Pour aller plus loin