Memora: Sistem Memori yang Dapat Diskalakan untuk Tugas Jangka Panjang
(github.com/microsoft)Ringkasan Ikhtisar
-
Tujuan
- Framework memori yang membantu agen AI mengekstrak secara otomatis informasi yang diperlukan dari percakapan dan dokumen, lalu menyimpan serta mengambilnya dalam jangka panjang
-
Desain inti
Memory value, yaitu teks asli lengkap, tetap dipertahankan apa adanya, sementara pencarian menggunakanPrimary abstractiondanCue anchors
-
Pembeda utama
- Mengarah pada struktur yang mengurangi kehilangan informasi dan ambiguitas pencarian dibanding RAG umum yang langsung melakukan embedding terhadap seluruh teks asli
-
Fitur utama
- Mendukung ekstraksi memori otomatis, deduplikasi, penggabungan dan pembaruan, pencarian berbasis makna, pencarian kata kunci, serta pencarian bertahap berbasis LLM
-
Sasaran penerapan
- AI percakapan jangka panjang, sistem multi-agen, layanan personalisasi, manajemen pengetahuan berbasis dokumen
-
Status saat ini
- Proyek terbuka berbasis Python dengan lisensi MIT, mencakup benchmark dan fitur eksperimental, tetapi masih mendekati tahap rilis awal
Pendahuluan
Mengatasi kompleksitas manajemen memori agen
-
Dalam pengembangan agen AI yang ada, developer harus menangani sendiri masalah berikut
- Menentukan informasi apa yang akan disimpan sebagai memori
- Menilai kapan informasi tersimpan perlu diperbarui atau dihapus
- Mencari memori yang terkait dengan pertanyaan pengguna
- Mengelola memori yang duplikatif atau saling bertentangan
-
Memora bertujuan menangani siklus hidup memori seperti ini di dalam framework
-
Developer dapat berfokus pada fungsi kerja agen dan pembuatan respons, bukan pada logika penyimpanan dan pencarian tingkat rendah
Keterbatasan struktur memori yang ada
-
Sistem RAG umum
- Membagi dokumen atau teks asli percakapan menjadi ukuran tertentu
- Melakukan embedding pada tiap potongan dan menyimpannya ke database vektor
- Mencari potongan yang secara semantik dekat dengan pertanyaan
-
Cara ini sederhana untuk diimplementasikan, tetapi dapat menimbulkan masalah berikut
- Konteks panjang terpisah menjadi beberapa potongan
- Informasi dengan ungkapan serupa tersimpan secara duplikatif
- Kemiripan makna sederhana belum tentu sesuai dengan maksud pertanyaan sebenarnya
- Jika hanya ringkasan terkompresi yang disimpan, detail dapat hilang
-
Knowledge base berbentuk graf menguntungkan untuk merepresentasikan relasi, tetapi ada beban untuk terus mengelola skema dan struktur relasinya
Isi
Memisahkan teks asli dan struktur pencarian
- Setiap memori di Memora terdiri dari tiga elemen
Memory value
- Seluruh informasi yang benar-benar disimpan
- Mempertahankan teks asli dan detail tanpa kompresi
- Tidak dimasukkan langsung ke indeks pencarian
- Berperan menjaga konteks asli tanpa kehilangan informasi
Primary abstraction
- Ringkasan representatif yang menunjukkan memori tersebut tentang apa
- Dibuat satu untuk setiap memori
- Digunakan sebagai dasar untuk pencarian, pembaruan, penggabungan, dan deduplikasi
- Digunakan sebagai unit standar yang menunjukkan identitas memori
Cue anchors
- Berbagai petunjuk semantik untuk mengakses satu memori
- Disusun dengan mengombinasikan orang, objek, peristiwa, atribut inti, dan sebagainya
- Beberapa petunjuk dapat dihubungkan ke satu memori
- Membentuk struktur many-to-many, di mana beberapa memori berbagi petunjuk yang sama
Pengindeksan selektif atas target pencarian
-
Memora tidak langsung mengindeks seluruh teks asli
-
Pencarian sebenarnya hanya menggunakan informasi berikut
- Primary abstraction
- Cue anchors
-
Setelah pencarian selesai,
Memory valueasli yang terhubung dikembalikan -
Tujuan struktur ini
- Memisahkan representasi pencarian dari informasi yang benar-benar disimpan
- Menjaga indeks pencarian tetap ringkas
- Mempertahankan detail teks asli apa adanya
- Mengurangi noise semantik yang dapat muncul dari embedding teks asli
Bentuk tengah antara RAG dan struktur graf
-
Menyediakan petunjuk pencarian yang lebih terstruktur daripada RAG biasa
-
Tidak mendefinisikan semua relasi sebagai skema ketat seperti database graf
-
Menambahkan lapisan abstraksi di atas memori untuk memperoleh fleksibilitas dan struktur sekaligus
-
Arah inti
- Teks asli disimpan dalam bentuk bebas
- Representasi terstruktur digunakan untuk pencarian dan koneksi
- Struktur penyimpanan dan struktur pencarian dikelola secara independen
Alur pemrosesan dari pembuatan memori hingga respons
1. Pengumpulan memori
-
Agen memproses percakapan atau dokumen
-
Informasi berikut diekstrak otomatis dari konten
- Informasi faktual
- Peristiwa dan pengalaman
- Prosedur dan cara kerja
-
Percakapan panjang dibagi menjadi episode berdasarkan topik
-
Informasi inti diubah menjadi item memori terstruktur
2. Penyimpanan cerdas
-
Menggunakan database vektor ChromaDB sebagai penyimpanan default
-
Menyimpan memori menggunakan embedding semantik
-
Ketika informasi baru masuk, informasi tersebut dibandingkan dengan memori yang ada
-
Untuk informasi yang mirip atau duplikatif, operasi berikut dilakukan
- Deduplikasi
- Penggabungan dengan memori yang ada
- Pembaruan informasi lama
-
Secara opsional membuat Cue index untuk mendukung pencarian terstruktur
3. Pencarian adaptif
- Menyediakan beberapa strategi pencarian sesuai jenis pertanyaan dan konfigurasi
Pencarian Semantic
- Menghitung kemiripan vektor antara pertanyaan dan representasi memori
- Implementasinya sederhana dan dapat diterapkan pada pertanyaan umum
- Dapat menemukan informasi yang maknanya mirip meskipun ekspresinya berbeda
Pencarian Prompted
- LLM menjalankan proses pencarian secara bertahap
- Berdasarkan hasil pencarian awal, kata kunci dan cakupan pencarian disesuaikan berulang kali
- Cocok untuk pertanyaan kompleks atau pertanyaan yang perlu menggabungkan beberapa memori
- Karena ada pemanggilan LLM tambahan, biaya dan waktu respons dapat meningkat
Pencarian Hybrid
- Menggabungkan pencarian semantik berbasis vektor dengan BM25 dan pencarian kata kunci
- Memanfaatkan kemiripan semantik dan kecocokan kata yang persis secara bersamaan
- Menguntungkan untuk mengurangi luputnya pencarian atas nama diri, nama produk, kode, tanggal, dan sebagainya
Pencarian GRPO
- Menggunakan kebijakan pencarian yang dilatih dengan reinforcement learning
- Mempelajari sendiri cara memilih memori yang dibutuhkan untuk pertanyaan
- Bertujuan menggantikan pencarian iteratif berbasis LLM dengan model lokal yang di-fine-tune
- Saat ini diklasifikasikan sebagai fitur eksperimental
4. Pembuatan jawaban
- Memori yang ditemukan disusun dalam format yang ditentukan
- Konten tersebut dimasukkan ke prompt LLM
- LLM menghasilkan respons dengan menggunakan pertanyaan dan memori yang ditemukan bersama-sama
- Diarahkan agar jawaban berlandaskan memori yang tersimpan
Fitur manajemen untuk menjaga kualitas memori
-
Berbeda dari penyimpanan datar yang hanya terus menambahkan memori, Memora mengelola status memori yang sudah ada
-
Fitur manajemen utama
- Menghapus memori duplikatif
- Menggabungkan memori yang mirip
- Memperbarui fakta yang berubah
- Menata ulang struktur memori
-
Menggunakan Primary abstraction sebagai dasar pembaruan dan integrasi memori
-
Bertujuan mengurangi masalah akumulasi duplikasi memori tanpa batas seiring waktu
Mendukung berbagai jenis memori
- Berbagai jenis memori dapat direpresentasikan dengan menyusun nilai memori dan metode abstraksi secara berbeda
Memori faktual
- Informasi yang relatif stabil seperti orang, tempat, atribut, dan pengaturan
- Contoh: tempat kerja pengguna tertentu, tool yang disukai, tech stack proyek
Memori episodik
- Peristiwa atau percakapan yang terjadi pada waktu tertentu
- Contoh: keputusan dalam rapat sebelumnya, proses penyelesaian error tertentu
Memori prosedural
- Cara kerja atau prosedur yang dapat diulang
- Contoh: prosedur deployment server, urutan pengecekan error, aturan pembuatan dokumen
Berbagi dan isolasi memori pada multi-agen
-
Beberapa agen yang berjalan di lingkungan yang sama dapat menggunakan ruang memori bersama
-
Informasi yang disimpan oleh satu agen dapat digunakan ulang oleh agen lain
-
Cakupan memori juga dapat dibatasi berdasarkan agen atau peran
-
Efek yang diharapkan
- Mengurangi duplikasi pengetahuan antar-agen
- Memperbaiki handoff pekerjaan
- Menjaga konsistensi informasi proyek bersama
-
Struktur ini mendukung berbagi selektif dan perlindungan informasi pribadi melalui kontrol akses dan fitur isolasi
Pemisahan infrastruktur penyimpanan dan struktur representasi
-
Dirancang agar metode representasi memori tidak sangat bergantung pada penyimpanan tertentu
-
Struktur proyek mencakup fungsi koneksi database berikut
- ChromaDB
- Redis
-
Dapat diterapkan pada lingkungan penyimpanan lokal atau remote
-
Walau backend penyimpanan diganti, struktur abstraksi dan petunjuk memori dapat dipertahankan
Cara penggunaan dasar
- Memerlukan Python 3.10 atau lebih baru
- Setelah meng-clone repository GitHub, instal paketnya
- Buat
MemoraClientdan tentukan identifier pengguna atau agen - Gunakan
add()untuk menambahkan percakapan atau dokumen ke memori - Gunakan
query()untuk melakukan pencarian berbasis makna - Gunakan
advance_query()untuk melakukan pencarian lanjutan dengan metode Prompted atau GRPO
Struktur integrasi agen
-
Ketika menerima pesan pengguna, cari terlebih dahulu memori yang relevan
-
Buat jawaban menggunakan hasil pencarian dan pertanyaan pengguna
-
Susun jawaban yang dihasilkan dan pesan pengguna sebagai satu riwayat percakapan
-
Simpan kembali percakapan tersebut ke Memora
-
Proses berulang
- Menerima pertanyaan
- Mencari memori terkait
- Menghasilkan respons
- Menyimpan percakapan
- Digunakan ulang pada pertanyaan berikutnya
Evaluasi performa memori jangka panjang
Benchmark LoCoMo
-
Mengevaluasi kemampuan pencarian memori dalam percakapan yang berlangsung lama
-
Jenis evaluasi utama
- Pertanyaan satu tahap
- Pertanyaan multi-tahap yang menggabungkan beberapa informasi
- Pertanyaan relasi waktu
- Pertanyaan terbuka
-
Kombinasi seperti Semantic, Prompted, dan Cue index dapat dieksperimenkan
Benchmark LongMemEval
- Mengevaluasi kemampuan sistem memori jangka panjang dalam menangani berbagai pertanyaan
- Pengaturan memori episodik dan pencarian semantik dapat diterapkan
- Digunakan untuk memverifikasi retensi informasi dan performa pencarian dalam lingkungan percakapan jangka panjang nyata
Pembelajaran kebijakan pencarian berbasis GRPO
-
Fitur eksperimental untuk melatih prosedur pencarian sebagai kebijakan reinforcement learning
-
Tahap pemrosesan
- Membuat jalur pencarian dengan kebijakan saat ini
- Mengevaluasi keberdasaran, duplikasi, dan biaya hasil pencarian
- Menghitung group-relative advantage
- Melatih kebijakan pencarian dengan metode GRPO
-
Model seri Qwen 3B atau 7B dan fine-tuning LoRA disajikan sebagai contoh
-
Pelatihan memerlukan GPU
-
Tujuan
- Mengurangi biaya pemanggilan LLM eksternal pada setiap pencarian
- Membangun strategi pencarian yang dioptimalkan untuk data dan pekerjaan tertentu
-
Batasan
- Memerlukan data pelatihan dan kriteria evaluasi
- Pelatihan model dan manajemen operasional bertambah
- Lebih kompleks daripada pencarian Semantic untuk langsung diterapkan oleh pengguna umum
Keunggulan utama
- Dapat mempertahankan detail teks asli tanpa kompresi
- Struktur memori jelas karena representasi untuk pencarian dan informasi sebenarnya dipisahkan
- Deduplikasi dan pembaruan memori dapat ditangani secara sistematis
- Dapat memilih pencarian semantik, pencarian kata kunci, pencarian LLM, atau pencarian reinforcement learning
- Memori faktual, episodik, dan prosedural dapat dikelola dalam satu framework
- Beberapa agen dapat berbagi memori yang sama
- Bertujuan terintegrasi ke sistem agen yang ada dengan perubahan relatif kecil
- Dapat mendukung struktur penyimpanan lokal maupun remote
Keterbatasan struktural dan hal yang perlu diperhatikan
- Kualitas Primary abstraction dan Cue anchors berdampak langsung pada performa pencarian
- Jika abstraksi yang dibuat otomatis tidak akurat, pencarian dapat melewatkannya meskipun teks aslinya benar
- Struktur yang tidak langsung mengindeks teks asli dapat merugikan pencarian frasa detail atau informasi yang jarang muncul
- Dalam proses deduplikasi dan penggabungan, peristiwa berbeda dapat keliru disatukan menjadi satu memori
- Pencarian Prompted dapat meningkatkan biaya dan latensi karena beberapa kali pemanggilan LLM
- Metode GRPO membutuhkan GPU, data pelatihan, dan sistem evaluasi, sehingga kompleksitas operasionalnya tinggi
- Memori bersama untuk multi-agen harus merancang izin akses dan isolasi informasi dengan jelas
- Jika menyimpan informasi pribadi atau percakapan sensitif, diperlukan kebijakan enkripsi, penghapusan, dan retensi terpisah
- Repository publik belum memiliki rilis serta memiliki sedikit kontributor dan metrik penggunaan, sehingga sulit untuk mengatakan bahwa stabilitas operasional skala besar sudah cukup terverifikasi
Kesimpulan
Pendekatan memori jangka panjang dengan lapisan akses terstruktur
-
Memora meninggalkan cara yang sekadar memvektorkan seluruh teks asli, dan mengusulkan struktur berikut
- Detail konten dipertahankan dalam Memory value
- Makna representatif diekspresikan sebagai Primary abstraction
- Beragam jalur pencarian disusun sebagai Cue anchors
-
Nilai intinya berada pada keseimbangan antara pelestarian informasi dan efisiensi pencarian
-
Dibanding pencarian dokumen sederhana, potensi pemanfaatannya lebih tinggi di lingkungan berikut
- Agen personalisasi yang berinteraksi dengan pengguna dalam jangka panjang
- Sistem yang terus mengakumulasi banyak dokumen pengembangan dan kerja
- Lingkungan tempat agen dengan berbagai peran berbagi pengetahuan
- Proyek yang perlu menggunakan ulang keputusan dan prosedur kerja masa lalu
Perlu verifikasi sebelum adopsi
-
Saat penerapan nyata, elemen berikut harus diverifikasi terlebih dahulu
- Kualitas abstraksi dan pembuatan Cue untuk dokumen berbahasa Korea
- Akurasi pencarian dibanding RAG yang ada
- Tingkat error dalam proses penggabungan memori
- Pertumbuhan data dan kecepatan pencarian saat operasi jangka panjang
- Biaya LLM dan embedding API
- Cara penyimpanan informasi pribadi dan kontrol akses
-
Pada tahap awal, pendekatan yang tepat adalah melakukan PoC skala kecil pada sebagian dokumen inti, lalu membandingkan performanya dengan RAG umum dan metode pencarian hybrid
Belum ada komentar.