Vai al contenuto principale

Ricerca nella memoria

memory_search trova note pertinenti dai tuoi file di memoria, anche quando la formulazione è diversa dal testo originale. Funziona indicizzando la memoria in piccoli blocchi e cercandoli tramite embeddings, parole chiave o entrambi.

Avvio rapido

Se hai configurato una chiave API OpenAI, Gemini, Voyage o Mistral, la ricerca nella memoria funziona automaticamente. Per impostare esplicitamente un provider:
{
  agents: {
    defaults: {
      memorySearch: {
        provider: "openai", // oppure "gemini", "local", "ollama", ecc.
      },
    },
  },
}
Per embeddings locali senza chiave API, usa provider: "local" (richiede node-llama-cpp).

Provider supportati

ProviderIDRichiede una chiave APINote
OpenAIopenaiRilevato automaticamente, veloce
GeminigeminiSupporta l’indicizzazione di immagini/audio
VoyagevoyageRilevato automaticamente
MistralmistralRilevato automaticamente
BedrockbedrockNoRilevato automaticamente quando la catena di credenziali AWS viene risolta
OllamaollamaNoLocale, deve essere impostato esplicitamente
LocallocalNoModello GGUF, download di ~0,6 GB

Come funziona la ricerca

OpenClaw esegue due percorsi di recupero in parallelo e unisce i risultati:
  • Ricerca vettoriale trova note con significato simile (“gateway host” corrisponde a “la macchina che esegue OpenClaw”).
  • Ricerca per parole chiave BM25 trova corrispondenze esatte (ID, stringhe di errore, chiavi di configurazione).
Se è disponibile solo un percorso (nessun embeddings o nessun FTS), l’altro viene eseguito da solo.

Migliorare la qualità della ricerca

Due funzionalità opzionali aiutano quando hai una cronologia delle note molto ampia:

Decadimento temporale

Le note vecchie perdono gradualmente peso nel ranking, così le informazioni recenti emergono per prime. Con l’emivita predefinita di 30 giorni, una nota del mese scorso ottiene il 50% del suo peso originale. I file sempre validi come MEMORY.md non subiscono mai decadimento.
Abilita il decadimento temporale se il tuo agente ha mesi di note quotidiane e le informazioni obsolete continuano a superare nel ranking il contesto recente.

MMR (diversità)

Riduce i risultati ridondanti. Se cinque note menzionano tutte la stessa configurazione del router, MMR assicura che i risultati principali coprano temi diversi invece di ripetersi.
Abilita MMR se memory_search continua a restituire frammenti quasi duplicati provenienti da note quotidiane diverse.

Abilita entrambi

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

Memoria multimodale

Con Gemini Embedding 2, puoi indicizzare immagini e file audio insieme al Markdown. Le query di ricerca restano testuali, ma corrispondono a contenuti visivi e audio. Vedi il riferimento della configurazione della memoria per la configurazione.

Ricerca nella memoria di sessione

Puoi facoltativamente indicizzare le trascrizioni delle sessioni così che memory_search possa richiamare conversazioni precedenti. Questa opzione è attivabile tramite memorySearch.experimental.sessionMemory. Vedi il riferimento della configurazione per i dettagli.

Risoluzione dei problemi

Nessun risultato? Esegui openclaw memory status per controllare l’indice. Se è vuoto, esegui openclaw memory index --force. Solo corrispondenze per parole chiave? Il tuo provider di embedding potrebbe non essere configurato. Controlla openclaw memory status --deep. Testo CJK non trovato? Ricostruisci l’indice FTS con openclaw memory index --force.

Approfondimenti