View a markdown version of this page

Prácticas recomendadas - Amazon ElastiCache

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Prácticas recomendadas

Administración del ciclo de vida de memoria

  • Utilice el TTL para la memoria a corto plazo: establezca los valores TTL adecuados en las entradas de la memoria para que la información transitoria caduque automáticamente. Para el contexto de la sesión, utilice TTL de 30 minutos a 24 horas. Para las preferencias de usuario a largo plazo, utilice TTL más largos o manténgalos indefinidamente.

  • Implemente el deterioro de la memoria: Mem0 proporciona mecanismos de deterioro integrados que, con el tiempo, eliminan la información irrelevante. Configúrelos para evitar que la memoria se sobrecargue a medida que el agente acumule más interacciones.

  • Deduplicar memorias: antes de almacenar una memoria nueva, compruebe si ya existe una memoria similar mediante la búsqueda de similitudes vectoriales. Actualice las memorias existentes en lugar de crear duplicadas.

Configuración de índices vectoriales

  • Elija el tipo de índice correcto: utilícelo FLAT para almacenes de memoria más pequeños (menos de 100 000 entradas) donde sea posible realizar una búsqueda exacta. HNSWUtilícelo para tiendas más grandes, donde la búsqueda aproximada del vecino más cercano proporciona un mejor rendimiento a gran escala.

  • Seleccione las dimensiones adecuadas: haga coincidir las dimensiones de la incrustación con las del modelo. Amazon Titan Text Embeddings V2 produce vectores de 1024 dimensiones. La herramienta text-embedding-3-small de OpenAI produce vectores de 1536 dimensiones.

  • Utilice la métrica de distancia COSINE: para incrustaciones de texto de modelos como Amazon Titan y OpenAI, la distancia COSINE suele ser la métrica más adecuada para medir la similitud semántica.

Multi-user aislamiento

  • Controle las memorias por ID de usuario: incluya siempre un user_id parámetro al almacenar y buscar memorias para evitar que se filtre información entre los usuarios.

  • Utilice filtros TAG para un aislamiento eficiente: al consultar el índice vectorial, utilice filtros TAG (por ejemplo@user_id:{user_123}) para filtrar previamente los resultados por usuario antes de realizar una búsqueda en KNN. Esto se ejecuta como una sola operación atómica, lo que proporciona aislamiento y rendimiento.

    # 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", )

Administración de memoria a escala

  • Establezca una política de memoria máxima: maxmemory-policy allkeys-lru configúrela en su ElastiCache clúster para que desaloje automáticamente las entradas de memoria utilizadas menos recientemente cuando el clúster alcance su límite de memoria.

  • Supervise el uso de la memoria: utilice CloudWatch las métricas de Amazon para realizar un seguimiento del uso de la memoria, las tasas de aciertos de la memoria caché y la latencia de búsqueda vectorial. Configure alarmas para un uso elevado de la memoria a fin de gestionar la capacidad de forma proactiva.

  • Planifique la capacidad: cada entrada de memoria normalmente requiere aproximadamente entre 4 y 6 KB (dimensiones de incrustación × 4 bytes más metadatos). Una ElastiCache instancia de 1 GB puede almacenar aproximadamente entre 170 000 y 250 000 entradas de memoria, según el tamaño de la incrustación y los metadatos.