Ricerca nella memory
memory_search trova note rilevanti dai tuoi file di memory, anche quando la
formulazione è diversa dal testo originale. Funziona indicizzando la memory in piccoli
blocchi e cercandoli usando embedding, parole chiave o entrambi.
Avvio rapido
Se hai configurato una chiave API OpenAI, Gemini, Voyage o Mistral, la ricerca nella memory
funziona automaticamente. Per impostare esplicitamente un provider:
{
agents: {
defaults: {
memorySearch: {
provider: "openai", // or "gemini", "local", "ollama", etc.
},
},
},
}
Per embedding locali senza chiave API, usa provider: "local" (richiede
node-llama-cpp).
Provider supportati
| Provider | ID | Richiede chiave API | Note |
|---|
| OpenAI | openai | Sì | Rilevato automaticamente, veloce |
| Gemini | gemini | Sì | Supporta l’indicizzazione di immagini/audio |
| Voyage | voyage | Sì | Rilevato automaticamente |
| Mistral | mistral | Sì | Rilevato automaticamente |
| Ollama | ollama | No | Locale, va impostato esplicitamente |
| Local | local | No | Modello GGUF, download di ~0.6 GB |
Come funziona la ricerca
OpenClaw esegue in parallelo due percorsi di recupero e unisce i risultati:
- Ricerca vettoriale trova note con significato simile (“gateway host” corrisponde a
“the machine running OpenClaw”).
- Ricerca per parole chiave BM25 trova corrispondenze esatte (ID, stringhe di errore, chiavi di
configurazione).
Se è disponibile un solo percorso (niente embedding o niente FTS), viene eseguito solo l’altro.
Migliorare la qualità della ricerca
Due funzionalità facoltative aiutano quando hai una grande cronologia di note:
Decadimento temporale
Le note vecchie perdono gradualmente peso nel ranking, così le informazioni recenti emergono per prime.
Con l’half-life predefinita di 30 giorni, una nota del mese scorso ottiene il 50% del
suo peso originale. I file evergreen come MEMORY.md non decadono mai.
Abilita il decadimento temporale se il tuo agente ha mesi di note quotidiane e le
informazioni obsolete continuano a classificarsi sopra il contesto recente.
MMR (diversità)
Riduce i risultati ridondanti. Se cinque note menzionano tutte la stessa configurazione del router, MMR
garantisce che i risultati principali coprano argomenti diversi invece di ripetersi.
Abilita MMR se memory_search continua a restituire snippet quasi duplicati da
diverse note quotidiane.
Abilitare entrambi
{
agents: {
defaults: {
memorySearch: {
query: {
hybrid: {
mmr: { enabled: true },
temporalDecay: { enabled: true },
},
},
},
},
},
}
Memory multimodale
Con Gemini Embedding 2, puoi indicizzare immagini e file audio insieme al
Markdown. Le query di ricerca restano testuali, ma trovano corrispondenze con contenuti visivi e audio. Vedi il riferimento di configurazione della memory per la
configurazione.
Ricerca nella memory della sessione
Puoi facoltativamente indicizzare le trascrizioni delle sessioni in modo che memory_search possa richiamare
conversazioni precedenti. Questa funzionalità è attivabile tramite
memorySearch.experimental.sessionMemory. Vedi il
riferimento di 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