🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI
Beranda
  • Integrasi
    • Agen

Memulai dengan Mem0 dan Milvus

Open In Colab GitHub Repository

Mem0 adalah lapisan memori cerdas untuk aplikasi AI, yang dirancang untuk menghadirkan interaksi yang dipersonalisasi dan efisien dengan mempertahankan preferensi pengguna dan terus beradaptasi dari waktu ke waktu. Ideal untuk chatbot dan alat yang digerakkan oleh AI, Mem0 menciptakan pengalaman yang mulus dan sesuai dengan konteks.

Dalam tutorial ini, kita akan membahas operasi manajemen memori Mem0 yang penting-menambahkan, mengambil, memperbarui, mencari, menghapus, dan melacak riwayat memori-menggunakan Milvus, basis data vektor sumber terbuka berkinerja tinggi yang mendukung penyimpanan dan pengambilan yang efisien. Pengenalan langsung ini akan memandu Anda melalui operasi memori dasar untuk membantu Anda membangun interaksi AI yang dipersonalisasi dengan Mem0 dan Milvus.

Persiapan

Unduh pustaka yang diperlukan

$ pip install mem0ai pymilvus

Jika Anda menggunakan Google Colab, untuk mengaktifkan dependensi yang baru saja diinstal, Anda mungkin perlu memulai ulang runtime (klik menu "Runtime" di bagian atas layar, dan pilih "Restart session" dari menu tarik-turun).

Mengkonfigurasi Mem0 dengan Milvus

Kita akan menggunakan OpenAI sebagai LLM dalam contoh ini. Anda harus menyiapkan kunci api OPENAI_API_KEY sebagai variabel lingkungan.

import os

os.environ["OPENAI_API_KEY"] = "sk-***********"

Sekarang, kita dapat mengonfigurasi Mem0 untuk menggunakan Milvus sebagai penyimpan vektor

# Define Config
from mem0 import Memory

config = {
    "vector_store": {
        "provider": "milvus",
        "config": {
            "collection_name": "quickstart_mem0_with_milvus",
            "embedding_model_dims": "1536",
            "url": "./milvus.db",  # Use local vector database for demo purpose
        },
    },
    "version": "v1.1",
}

m = Memory.from_config(config)
  • Jika Anda hanya membutuhkan basis data vektor lokal untuk data skala kecil atau pembuatan prototipe, mengatur uri sebagai file lokal, misalnya./milvus.db, adalah metode yang paling mudah, karena secara otomatis menggunakan Milvus Lite untuk menyimpan semua data dalam file ini.
  • Jika Anda memiliki data berskala besar, misalnya lebih dari satu juta vektor, Anda dapat menyiapkan server Milvus yang lebih berkinerja tinggi di Docker atau Kubernetes. Dalam pengaturan ini, gunakan alamat dan port server sebagai uri Anda, misalnyahttp://localhost:19530. Jika Anda mengaktifkan fitur autentikasi di Milvus, gunakan "<nama_user Anda>:<kata sandi Anda>" sebagai token, jika tidak, jangan setel token.
  • Jika Anda menggunakan Zilliz Cloud, layanan cloud yang dikelola sepenuhnya untuk Milvus, sesuaikan uri dan token, yang sesuai dengan Public Endpoint dan kunci API di Zilliz Cloud.

Mengelola Memori Pengguna dengan Mem0 dan Milvus

Menambahkan Memori

Fungsi add menyimpan teks tidak terstruktur di Milvus sebagai memori, mengaitkannya dengan pengguna tertentu dan metadata opsional.

Di sini, kita menambahkan memori Alice, "bekerja untuk meningkatkan kemampuan tenis saya," bersama dengan metadata yang relevan untuk konteks Milvus.

# Add a memory to user: Working on improving tennis skills
res = m.add(
    messages="I am working on improving my tennis skills.",
    user_id="alice",
    metadata={"category": "hobbies"},
)

res
{'results': [{'id': '77162018-663b-4dfa-88b1-4f029d6136ab',
   'memory': 'Working on improving tennis skills',
   'event': 'ADD'}],
 'relations': []}

Memperbarui Memori

Kita dapat menggunakan nilai balik fungsi add untuk mengambil ID memori, yang memungkinkan kita untuk memperbarui memori ini dengan informasi baru melalui update.

# Get memory_id
memory_id = res["results"][0]["id"]

# Update this memory with new information: Likes to play tennis on weekends
m.update(memory_id=memory_id, data="Likes to play tennis on weekends")
{'message': 'Memory updated successfully!'}

Mendapatkan Semua Memori Untuk Seorang Pengguna

Kita dapat menggunakan fungsi get_all untuk melihat semua memori yang disisipkan atau memfilter dengan user_id di Milvus.

Perhatikan bahwa kita dapat melihat memori sekarang berubah dari "Bekerja untuk meningkatkan kemampuan tenis" menjadi "Suka bermain tenis di akhir pekan".

# Get all memory for the user Alice
m.get_all(user_id="alice")
{'results': [{'id': '77162018-663b-4dfa-88b1-4f029d6136ab',
   'memory': 'Likes to play tennis on weekends',
   'hash': '4c3bc9f87b78418f19df6407bc86e006',
   'metadata': None,
   'created_at': '2024-11-01T19:33:44.116920-07:00',
   'updated_at': '2024-11-01T19:33:47.619857-07:00',
   'user_id': 'alice'}]}

Melihat Riwayat Pembaruan Memori

Kita juga dapat melihat riwayat pembaruan memori dengan menentukan memory_id mana yang kita minati melalui fungsi history.

m.history(memory_id=memory_id)
[{'id': '71ed3cec-5d9a-4fa6-a009-59802450c0b9',
  'memory_id': '77162018-663b-4dfa-88b1-4f029d6136ab',
  'old_memory': None,
  'new_memory': 'Working on improving tennis skills',
  'event': 'ADD',
  'created_at': '2024-11-01T19:33:44.116920-07:00',
  'updated_at': None},
 {'id': 'db2b003c-ffb7-42e4-bd8a-b9cf56a02bb9',
  'memory_id': '77162018-663b-4dfa-88b1-4f029d6136ab',
  'old_memory': 'Working on improving tennis skills',
  'new_memory': 'Likes to play tennis on weekends',
  'event': 'UPDATE',
  'created_at': '2024-11-01T19:33:44.116920-07:00',
  'updated_at': '2024-11-01T19:33:47.619857-07:00'}]

Cari Memori

Kita dapat menggunakan fungsi search untuk mencari memori yang paling berhubungan dengan pengguna.

Mari kita mulai dengan menambahkan memori lain untuk Alice.

new_mem = m.add(
    "I have a linear algebra midterm exam on November 20",
    user_id="alice",
    metadata={"category": "task"},
)

Sekarang, kita panggil get_all dengan menyebutkan user_id untuk memverifikasi bahwa kita memang memiliki 2 entri memori untuk user Alice.

m.get_all(user_id="alice")
{'results': [{'id': '77162018-663b-4dfa-88b1-4f029d6136ab',
   'memory': 'Likes to play tennis on weekends',
   'hash': '4c3bc9f87b78418f19df6407bc86e006',
   'metadata': None,
   'created_at': '2024-11-01T19:33:44.116920-07:00',
   'updated_at': '2024-11-01T19:33:47.619857-07:00',
   'user_id': 'alice'},
  {'id': 'aa8eaa38-74d6-4b58-8207-b881d6d93d02',
   'memory': 'Has a linear algebra midterm exam on November 20',
   'hash': '575182f46965111ca0a8279c44920ea2',
   'metadata': {'category': 'task'},
   'created_at': '2024-11-01T19:33:57.271657-07:00',
   'updated_at': None,
   'user_id': 'alice'}]}

Kita dapat melakukan search sekarang dengan menyediakan query dan user_id. Perhatikan bahwa kita secara default menggunakan metrik L2 untuk pencarian kemiripan, jadi score yang lebih kecil berarti kemiripan yang lebih besar.

m.search(query="What are Alice's hobbies", user_id="alice")
{'results': [{'id': '77162018-663b-4dfa-88b1-4f029d6136ab',
   'memory': 'Likes to play tennis on weekends',
   'hash': '4c3bc9f87b78418f19df6407bc86e006',
   'metadata': None,
   'score': 1.2807445526123047,
   'created_at': '2024-11-01T19:33:44.116920-07:00',
   'updated_at': '2024-11-01T19:33:47.619857-07:00',
   'user_id': 'alice'},
  {'id': 'aa8eaa38-74d6-4b58-8207-b881d6d93d02',
   'memory': 'Has a linear algebra midterm exam on November 20',
   'hash': '575182f46965111ca0a8279c44920ea2',
   'metadata': {'category': 'task'},
   'score': 1.728922724723816,
   'created_at': '2024-11-01T19:33:57.271657-07:00',
   'updated_at': None,
   'user_id': 'alice'}]}

Menghapus Memori

Kita juga dapat delete sebuah memori dengan memberikan memory_id yang sesuai.

Kita akan menghapus memori "Suka bermain tenis di akhir pekan" karena memory_id telah diambil, dan memanggil get_all untuk memverifikasi bahwa penghapusan telah berhasil.

m.delete(memory_id=memory_id)

m.get_all("alice")
{'results': [{'id': 'aa8eaa38-74d6-4b58-8207-b881d6d93d02',
   'memory': 'Has a linear algebra midterm exam on November 20',
   'hash': '575182f46965111ca0a8279c44920ea2',
   'metadata': {'category': 'task'},
   'created_at': '2024-11-01T19:33:57.271657-07:00',
   'updated_at': None,
   'user_id': 'alice'}]}

Coba Milvus yang Dikelola secara Gratis

Zilliz Cloud bebas masalah, didukung oleh Milvus dan 10x lebih cepat.

Mulai
Umpan balik

Apakah halaman ini bermanfaat?