Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Einrichtung von ElastiCache Valkey als Vektorspeicher für agentisches Gedächtnis
Die folgende exemplarische Vorgehensweise zeigt, wie Sie einen speicherfähigen KI-Agenten mit ElastiCache Mem0 für Valkey als Vektorspeicher erstellen.
Schritt 1: Erstellen Sie einen Basisagenten ohne Speicher
Installieren Sie zunächst Strands Agents und erstellen Sie einen Basisagenten:
pip install strands-agents strands-agents-tools strands-agents-builder
Initialisieren Sie einen Basisagenten mit einem HTTP-Tool für das Surfen im Internet:
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)
Ohne Speicher führt der Agent dieselben Rechercheaufgaben für jede Anfrage wiederholt durch. Beim Testen führt der Agent drei Tool-Aufrufe durch, um die Anfrage zu beantworten. Dabei werden etwa 70.000 Tokens verwendet und die Bearbeitung dauert mehr als 9 Sekunden.
Schritt 2: Konfigurieren Sie Mem0 mit ElastiCache für Valkey
Installieren Sie die Mem0-Bibliothek mit dem Valkey Vector Store Connector:
pip install mem0ai "mem0ai[vector_stores]"
Konfigurieren Sie Valkey als Vektorspeicher. ElastiCache for Valkey unterstützt Vektorsuchfunktionen ab Version 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)
Ersetzen Sie your-elasticache-cluster.cache.amazonaws.com durch den Endpunkt Ihres ElastiCache Clusters. Anweisungen zur Suche nach Ihrem Cluster-Endpunkt finden Sie unter Zugreifen auf Ihren ElastiCache Cluster.
Schritt 3: Fügen Sie dem Agenten Speicher-Tools hinzu
Erstellen Sie Speichertools, die der Agent zum Speichern und Abrufen von Informationen verwenden kann. Der @tool Decorator wandelt reguläre Python-Funktionen in Tools um, die der Agent aufrufen kann:
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])
Schritt 4: Testen Sie den speicherfähigen Agenten
Wenn der Speicher aktiviert ist, speichert der Agent Informationen aus seinen Interaktionen und ruft sie bei nachfolgenden Anfragen ab:
# 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)
Bei der zweiten Anfrage ruft der Agent die Informationen aus dem Speicher ab, anstatt Web-Tool-Aufrufe zu tätigen. In Tests wurde dadurch die Token-Nutzung von etwa 70.000 auf 6.300 reduziert (eine 12-fache Reduzierung) und die Reaktionszeit von 9,25 Sekunden auf 2 Sekunden verbessert (mehr als dreimal schneller).
Wie funktioniert es unter der Haube
Die folgende Tabelle zeigt die Valkey-Befehle, die Mem0 intern verwendet, um agentischen Speicher zu implementieren. ElastiCache Mem0 abstrahiert diese Befehle über seine API — das genaue Schema und die Schlüsselbenennung können je nach Mem0-Version und Konfiguration variieren:
| Operation | Valkey-Befehl | Description |
|---|---|---|
| Vektorindex erstellen | FT.CREATE agent_memory SCHEMA embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 1024 DISTANCE_METRIC COSINE |
Erzeugt einen Vektorindex für die semantische Speichersuche |
| Speicher speichern | HSET mem:{id} memory "..." embedding [bytes] user_id "user_123" created_at "..." |
Speichert einen Speicher mit seiner Vektoreinbettung |
| Suchen Sie nach Erinnerungen | FT.SEARCH agent_memory "*=>[KNN 5 @embedding $query_vec]" PARAMS 2 query_vec [bytes] DIALECT 2 |
Findet die semantisch ähnlichsten Erinnerungen |
| Ablauf festlegen | EXPIRE mem:{id} 86400 |
Legt TTL für Speichereinträge fest |