View a markdown version of this page

Best practice - Amazon ElastiCache

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Best practice

Gestione del ciclo di vita della memoria

  • Usa TTL per la memoria a breve termine: imposta i valori TTL appropriati sulle voci di memoria per far scadere automaticamente le informazioni transitorie. Per il contesto della sessione, utilizzate TTL da 30 minuti a 24 ore. Per le preferenze utente a lungo termine, utilizza TTL più lunghi o persisti a tempo indeterminato.

  • Implementa il decadimento della memoria: Mem0 fornisce meccanismi di decadimento integrati che rimuovono le informazioni irrilevanti nel tempo. Configurali per evitare che la memoria si gonfia man mano che l'agente accumula più interazioni.

  • Deduplica le memorie: prima di archiviare una nuova memoria, controlla se esiste già una memoria simile utilizzando la ricerca per similarità vettoriale. Aggiorna le memorie esistenti anziché creare duplicati.

Configurazione dell'indice vettoriale

  • Scegli il tipo di indice giusto: utilizzalo FLAT per archivi di memoria più piccoli (meno di 100.000 voci) in cui è possibile una ricerca esatta. Utilizzatelo HNSW per negozi di grandi dimensioni, dove la ricerca approssimativa del vicino più prossimo offre prestazioni migliori su larga scala.

  • Seleziona le dimensioni appropriate: abbina le dimensioni di incorporamento al tuo modello. Amazon Titan Text Embeddings V2 produce vettori a 1024 dimensioni. text-embedding-3-small di OpenAI produce vettori a 1536 dimensioni.

  • Usa la metrica della distanza COSINE: per gli incorporamenti di testo da modelli come Amazon Titan e OpenAI, la distanza COSINE è in genere la metrica più appropriata per misurare la somiglianza semantica.

Multi-user isolamento

  • Ambita le memorie in base all'ID utente: includi sempre un user_id parametro durante l'archiviazione e la ricerca nelle memorie per evitare la fuga di informazioni tra gli utenti.

  • Usa i filtri TAG per un isolamento efficiente: quando esegui una query sull'indice vettoriale, usa i filtri TAG (ad esempio@user_id:{user_123}) per prefiltrare i risultati per utente prima di eseguire la ricerca KNN. Funziona come un'unica operazione atomica, fornendo sia isolamento che prestazioni.

    # Example: TAG-filtered vector search for user isolation results = client.execute_command( "FT.SEARCH", "agent_memory", f"@user_id:{{{user_id}}}=>[KNN 5 @embedding $query_vec]", "PARAMS", "2", "query_vec", query_vec, "DIALECT", "2", )

Gestione della memoria su larga scala

  • Imposta la policy maxmemory: configura il ElastiCache cluster maxmemory-policy allkeys-lru in modo da eliminare automaticamente le voci di memoria utilizzate meno di recente quando il cluster raggiunge il limite di memoria.

  • Monitora l'utilizzo della memoria: utilizza i CloudWatch parametri di Amazon per monitorare l'utilizzo della memoria, le percentuali di accesso alla cache e la latenza della ricerca vettoriale. Imposta allarmi per un utilizzo elevato della memoria per gestire in modo proattivo la capacità.

  • Piano della capacità: ogni voce di memoria richiede in genere circa 4-6 KB (dimensioni di incorporamento × 4 byte+metadati). Un' ElastiCache istanza da 1 GB può memorizzare circa 170.000-250.000 voci di memoria a seconda delle dimensioni e dei metadati di incorporamento.