Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
ElastiCache Menyiapkan Valkey sebagai penyimpanan vektor untuk memori agen
Panduan berikut menunjukkan cara membuat agen AI berkemampuan memori menggunakan Mem0 dengan ElastiCache for Valkey sebagai penyimpanan vektor.
Langkah 1: Buat agen dasar tanpa memori
Pertama, instal Strands Agents dan buat agen dasar:
pip install strands-agents strands-agents-tools strands-agents-builder
Inisialisasi agen dasar dengan alat HTTP untuk penjelajahan 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)
Tanpa memori, agen melakukan tugas penelitian yang sama berulang kali untuk setiap permintaan. Dalam pengujian, agen melakukan tiga panggilan alat untuk menjawab permintaan, menggunakan sekitar 70.000 token dan mengambil lebih dari 9 detik untuk menyelesaikannya.
Langkah 2: Konfigurasikan Mem0 dengan ElastiCache untuk Valkey
Instal perpustakaan Mem0 dengan konektor penyimpanan vektor Valkey:
pip install mem0ai "mem0ai[vector_stores]"
Konfigurasikan Valkey sebagai penyimpanan vektor. ElastiCache untuk Valkey mendukung kemampuan pencarian vektor dimulai dengan versi 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)
Ganti your-elasticache-cluster.cache.amazonaws.com dengan titik akhir ElastiCache cluster Anda. Untuk petunjuk tentang menemukan titik akhir klaster Anda, lihat Mengakses klaster Anda ElastiCache .
Langkah 3: Tambahkan alat memori ke agen
Buat alat memori yang dapat digunakan agen untuk menyimpan dan mengambil informasi. @toolDekorator mengubah fungsi Python biasa menjadi alat yang dapat dipanggil agen:
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])
Langkah 4: Uji agen yang mendukung memori
Dengan memori diaktifkan, agen menyimpan informasi dari interaksinya dan mengambilnya dalam permintaan berikutnya:
# 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)
Pada permintaan kedua, agen mengambil informasi dari memori alih-alih membuat panggilan alat web. Dalam pengujian, ini mengurangi penggunaan token dari sekitar 70.000 menjadi 6.300 (pengurangan 12x) dan meningkatkan waktu respons dari 9,25 detik menjadi 2 detik (lebih dari 3x lebih cepat).
Cara kerjanya di bawah tenda
Tabel berikut menunjukkan perintah Valkey yang Mem0 menggunakan internal untuk mengimplementasikan memori agen dengan. ElastiCache Mem0 mengabstraksi perintah ini melalui API-nya — skema dan penamaan kunci yang tepat dapat bervariasi tergantung pada versi dan konfigurasi Mem0:
| Operasi | Perintah Valkey | Deskripsi |
|---|---|---|
| Buat indeks vektor | FT.CREATE agent_memory SCHEMA embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 1024 DISTANCE_METRIC COSINE |
Membuat indeks vektor untuk pencarian memori semantik |
| Menyimpan memori | HSET mem:{id} memory "..." embedding [bytes] user_id "user_123" created_at "..." |
Menyimpan memori dengan embedding vektornya |
| Cari kenangan | FT.SEARCH agent_memory "*=>[KNN 5 @embedding $query_vec]" PARAMS 2 query_vec [bytes] DIALECT 2 |
Menemukan kenangan yang paling mirip secara semantik |
| Tetapkan kedaluwarsa | EXPIRE mem:{id} 86400 |
Set TTL untuk entri memori |