Tailored news hub
homeMemoria

mnemo: Guida Pratica alla Memoria Locale Persistente per LLM

Scopri come mnemo risolve il problema della perdita di contesto nelle applicazioni LLM con un knowledge graph locale e strutturato, senza dipendenze cloud.

mnemo: Guida Pratica alla Memoria Locale Persistente per LLM
#Contesto#Framework#LLM#Memoria#Python

mnemo è un layer di memoria local-first per LLM che fornisce memoria persistente e strutturata tramite un knowledge graph in SQLite. Funziona come servizio sidecar per estrarre entità e relazioni dal testo, costruendo un grafo in-memory per una rapida traversata. Offre un pipeline di recupero a 6 stadi per generare stringhe di contesto ottimizzate. Ideale per sviluppatori che necessitano di controllo completo sulla memoria locale delle loro pipeline LLM.

Un Layer di Memoria Local-First per LLM

mnemo è un layer di memoria local-first che fornisce alle applicazioni LLM un contesto persistente senza alcuna dipendenza dal cloud. Funziona come servizio sidecar, acquisisce testo grezzo, estrae entità e relazioni con un LLM configurabile e costruisce un grafo di conoscenza in SQLite.
Il grafo è l'elemento distintivo: le entità vengono deduplicate tra sessioni diverse, le relazioni sono pesate e il recupero utilizza una pipeline a 6 fasi: ricerca full‑text, ricerca per nome entità, espansione del grafo tramite BFS, filtraggio delle relazioni, scoring e assemblaggio di una stringa di contesto per il prompt. I risultati espansi dal grafo ricevono un punteggio a 0,5×, in modo che le corrispondenze dirette abbiano sempre una priorità più alta.
Ne deriva una memoria strutturata e autocontenuta che controlli completamente, ideale quando devi iniettare contesto passato rilevante nel prompt di sistema di un modello all'interno di pipeline personalizzate.

git clone https://github.com/zaydmulani09/mnemo
cd mnemo
docker compose up -d

# Pull the llama3 model the first time (~4 GB)
docker exec mnemo-ollama ollama pull llama3

# Verify everything is healthy
curl http://localhost:8080/health

Altri Percorsi di Installazione

Puoi anche installare mnemo come binario autonomo tramite Cargo. Imposta le variabili d'ambiente per puntare a un'istanza Ollama locale o a qualsiasi API compatibile con OpenAI, quindi esegui mnemo-api.
Per i progetti Python, il pacchetto mnemo-sdk wrappa l'API:

from mnemo import MnemoClient

client = MnemoClient()  # server at http://localhost:8080

# Store a memory
client.ingest("I'm building a Rust vector database called vecdb")

# Get context for injection into your next LLM prompt
print(client.get_context("what am I working on?"))
# Store a memory
mnemo ingest "I use Neovim and prefer dark mode"

# Retrieve relevant context
mnemo search "what editor do I use?"

# List all extracted entities
mnemo entities

# Show entity detail + graph neighbors
mnemo entity <uuid> --neighbors

# List memory chunks
mnemo chunks

# Server health
mnemo health

# Memory statistics
mnemo stats

# Delete everything (prompts for confirmation)
mnemo wipe

# Skip confirmation prompt
mnemo wipe --yes

# Point at a non-default server
mnemo --server http://192.168.1.10:8080 stats

API HTTP Principali

Tutti gli endpoint accettano e restituiscono JSON su http://localhost:8080.
Endpoint principali:

  • GET /health – stato del server, del database e del LLM.
  • POST /ingest – memorizza testo; includi un session_id per raggruppare turni correlati.
  • POST /retrieve – esegue l'intera pipeline di memoria e restituisce una stringa context_prompt che fornisce contesto persistente per la tua prossima chiamata LLM. Puoi controllare max_chunks, max_entities, min_confidence (default 0.5), include_graph (default true) e graph_depth (default 2).
  • GET /entities, GET /chunks – elenchi paginati, più un POST /search per ricerche full‑text.
  • DELETE /wipe – cancellazione totale irreversibile; richiede l'header di conferma X-Confirm-Wipe: true.
  • GET /stats – conteggi e uptime.

Un riferimento completo è disponibile in docs/api.md.

Configurazione

Le impostazioni vengono lette da variabili d'ambiente e da un file TOML opzionale (passato con --config).
Variabili principali:
MNEMO_DB_PATH (file sqlite), MNEMO_PORT (8080), MNEMO_LLM_BASE_URL, MNEMO_LLM_MODEL (llama3), MNEMO_LLM_API_KEY e MNEMO_LLM_PROVIDER (ollama, openai, anthropic o custom).
Le variabili d'ambiente prevalgono sempre sui valori del file TOML. La fonte di configurazione attiva viene riportata in GET /healthconfig_source. Un file di esempio è fornito in mnemo.example.toml.

Vincoli e Best Practices

Limitazioni:

  • Non sostituisce i framework agentici gestiti che già si occupano della memoria.
  • I risultati espansi dal grafo ricevono un punteggio a 0,5×, quindi le corrispondenze dirette superano sempre le connessioni inferite.
  • La profondità dei vicini è limitata a 5. L'eliminazione di un'entità si propaga a cascata (le relazioni vengono rimosse). La cancellazione totale è irreversibile.

Best practices:

  • Usa session_id per delimitare il recupero.
  • Imposta min_confidence (≥ 0,5) per filtrare estrazioni di bassa qualità.
  • Disabilita l'espansione del grafo (include_graph: false) quando hai bisogno solo di corrispondenze dirette.
  • Esegui in modalità --release per guadagni di velocità da 3 a 5 volte.
  • Preferisci le variabili d'ambiente nei deployment containerizzati.
  • Inizia con il percorso Docker + Ollama per una configurazione completamente locale e a costo zero.
Articoli Correlati