View a markdown version of this page

Configurando ElastiCache o Valkey como um armazenamento vetorial para memória agente - Amazon ElastiCache

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurando ElastiCache o Valkey como um armazenamento vetorial para memória agente

O passo a passo a seguir mostra como criar um agente de IA habilitado para memória usando Mem0 com ElastiCache for Valkey como armazenamento vetorial.

Etapa 1: criar um agente básico sem memória

Primeiro, instale o Strands Agents e crie um agente básico:

pip install strands-agents strands-agents-tools strands-agents-builder

Inicialize um agente básico com uma ferramenta HTTP para navegação na web:

from strands import Agent from strands.tools import http_request # Initialize agent with access to the tool to browse the web agent = Agent(tools=[http_request]) # Format messages as expected by Strands formatted_messages = [ { "role": "user", "content": [{"text": "What is the URL for the project mem0 and its most important metrics?"}] } ] result = agent(formatted_messages)

Sem memória, o agente executa as mesmas tarefas de pesquisa repetidamente para cada solicitação. Nos testes, o agente faz três chamadas de ferramenta para responder à solicitação, usando aproximadamente 70.000 tokens e levando mais de 9 segundos para ser concluída.

Etapa 2: Configurar Mem0 com ElastiCache for Valkey

Instale a biblioteca Mem0 com o conector de armazenamento vetorial Valkey:

pip install mem0ai "mem0ai[vector_stores]"

Configure o Valkey como o armazenamento vetorial. ElastiCache for Valkey suporta recursos de pesquisa vetorial a partir da versão 8.2:

from mem0 import Memory # Configure Mem0 with ElastiCache for Valkey config = { "vector_store": { "provider": "valkey", "config": { "valkey_url": "your-elasticache-cluster.cache.amazonaws.com:6379", "index_name": "agent_memory", "embedding_model_dims": 1024, "index_type": "flat" } } } m = Memory.from_config(config)

your-elasticache-cluster---cache.amazonaws.com.rproxy.goskope.comSubstitua pelo endpoint do seu ElastiCache cluster. Para obter instruções sobre como encontrar seu endpoint de cluster, consulte Como acessar seu ElastiCache cluster.

Etapa 3: Adicionar ferramentas de memória ao agente

Crie ferramentas de memória que o agente possa usar para armazenar e recuperar informações. O @tool decorador transforma funções regulares do Python em ferramentas que o agente pode invocar:

from strands import Agent, tool from strands.tools import http_request @tool def store_memory_tool(information: str, user_id: str = "user") -> str: """Store important information in long-term memory.""" memory_message = [{"role": "user", "content": information}] # Create new memories using Mem0 and store them in Valkey m.add(memory_message, user_id=user_id) return f"Stored: {information}" @tool def search_memory_tool(query: str, user_id: str = "user") -> str: """Search stored memories for relevant information.""" # Search memories using Mem0 stored in Valkey results = m.search(query, user_id=user_id) if results['results']: return "\n".join([r['memory'] for r in results['results']]) return "No memories found" # Initialize Strands agent with memory tools agent = Agent(tools=[http_request, store_memory_tool, search_memory_tool])

Etapa 4: testar o agente habilitado para memória

Com a memória ativada, o agente armazena informações de suas interações e as recupera em solicitações subsequentes:

# First request - agent searches the web and stores results in memory formatted_messages = [ { "role": "user", "content": [{"text": "What is the URL for the project mem0 and its most important metrics?"}] } ] result = agent(formatted_messages) # Second request (same question) - agent retrieves from memory result = agent(formatted_messages)

Na segunda solicitação, o agente recupera as informações da memória em vez de fazer chamadas à ferramenta web. Nos testes, isso reduziu o uso de tokens de aproximadamente 70.000 para 6.300 (uma redução de 12 vezes) e melhorou o tempo de resposta de 9,25 segundos para 2 segundos (mais de 3 vezes mais rápido).

Como funciona sob o capô

A tabela a seguir mostra os comandos Valkey que o Mem0 usa internamente para implementar a memória agente. ElastiCache O Mem0 abstrai esses comandos por meio de sua API — o esquema exato e a nomenclatura da chave podem variar dependendo da versão e da configuração do Mem0:

Operation comando Valkey Description
Criar índice vetorial FT.CREATE agent_memory SCHEMA embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 1024 DISTANCE_METRIC COSINE Cria um índice vetorial para pesquisa de memória semântica
Armazenar memória HSET mem:{id} memory "..." embedding [bytes] user_id "user_123" created_at "..." Armazena uma memória com sua incorporação vetorial
Busque memórias FT.SEARCH agent_memory "*=>[KNN 5 @embedding $query_vec]" PARAMS 2 query_vec [bytes] DIALECT 2 Encontra as memórias mais semanticamente semelhantes
Definir expiração EXPIRE mem:{id} 86400 Define TTL para entradas de memória