
Ketika orang berbicara tentang "agen AI dengan memori", banyak yang membayangkan satu basis data vektor dan retrieval ajaib. Dalam praktiknya, ini hampir tidak pernah cukup.
Pada Volna, agen Telegram saya, memori diatur sebagai beberapa lapisan berbeda. Karena dalam dialog nyata, tiga tugas harus diselesaikan sekaligus: menyimpan fakta jangka panjang, menjaga konteks terbaru tetap dekat, dan tidak membebani model dengan token yang tidak perlu.
Secara kasar, memori Volna terdiri dari 4 bagian:
- Blok permanen di Letta. Ini adalah dua blok dasar masing-masing sekitar 3 ribu karakter.
Yang pertama adalah potret pengguna: siapa dia, apa yang dia lakukan, apa yang penting baginya, minatnya, dan konteks yang stabil.
Yang kedua adalah profil Volna sendiri: gaya komunikasi, aturan perilaku, bagaimana dia bereaksi terhadap koreksi, dan apa yang dia anggap penting dalam dialog.
- Memori arsip. Ini adalah lapisan untuk fakta detail yang tidak perlu disimpan terus-menerus di prompt, tetapi penting untuk dapat ditemukan dengan cepat. Pencarian bersifat semantik, di atasnya ada perangkingan ulang berdasarkan kebaruan, sehingga fakta lama yang mirip tidak mengalahkan yang lebih baru.
- Log episode harian. Setelah setiap dialog, sistem mengekstrak fakta pendek dan menulisnya ke file markdown. Keputusan, preferensi, dan reaksi eksplisit masuk ke sana. Saat memulai sesi baru, hanya 3 hari terakhir yang dikembalikan ke konteks, dan hanya dalam bentuk ringkas.
- Graf hubungan di Neo4j. Secara terpisah, jaringan entitas dibangun: orang, proyek, perusahaan, topik, alat, peristiwa. Jika saya menyebut sesuatu yang dikenal dalam pesan, Volna mencoba mengangkat entitas terkait dan hubungan di sekitarnya. Intinya, ini bukan lapisan "memori fakta", melainkan "memori struktur".
Ide kuncinya adalah bahwa lapisan-lapisan ini tidak dicampurkan ke dalam model secara sama.
Ketika sesi di-reset atau konteks dipadatkan, Volna menyusun gambaran dari awal. Dan pada jalur normal, dia tidak membawa seluruh dump memori, tetapi menggunakan cache dasar dan konteks dinamis pesan.
Ini penting baik untuk kualitas maupun kecepatan. Jika Anda selalu memberi model seluruh memori sekaligus, ia mulai tenggelam dalam masa lalunya sendiri. Jika sebaliknya, Anda hanya menyimpan satu ringkasan pendek, rasa kontinuitas percakapan hilang.
Secara terpisah, saya suka bagaimana pembaruan memori setelah respons diatur. Ini berjalan secara asinkron, di latar belakang. Artinya, pengguna sudah menerima pesan, sementara sistem secara paralel melakukan beberapa hal:
- mengekstrak fakta dari pertukaran,
- menambahkan log harian,
- mengirim dialog ke Letta untuk memperbarui memori jangka panjang,
- dan memperbarui graf entitas.
Selain itu, ada beberapa pembatas yang berguna. Misalnya, pertukaran yang terlalu pendek mungkin tidak masuk ke ekstraksi fakta. Dan jumlah fakta tergantung pada panjang dialog. Ini hal sederhana, tetapi melindungi memori dari sampah dengan baik.
Lapisan penting lainnya adalah snapshot sesi. Ketika percakapan berakhir, sistem menyimpan snapshot JSON pendek: ringkasan, replika terakhir, jumlah langkah, kadang-kadang pengamatan tentang suasana hati atau pola perilaku. Pada reset berikutnya, snapshot ini dapat dikembalikan ke konteks sekali dan memberikan perasaan bahwa agen tidak "bangun dari awal yang bersih".
Secara terpisah, Volna memiliki lapisan refleksi di atas memori.
Jika pertanyaan berbunyi seperti "bagaimana sikap Vlad terhadap pekerjaan berubah" atau "bagaimana lintasan kesehatannya", pencarian sederhana sudah lemah: ia mengembalikan potongan, bukan pemahaman.
Untuk ini, ada
memory_reflect. Pertama, ia mengangkat serangkaian kenangan relevan melalui pencarian semantik, kemudian meneruskannya ke model dengan tugas terpisah untuk menyusun narasi yang koheren dari catatan yang tersebar. Hasilnya adalah interpretasi pendek 2-5 paragraf.Dan tentu saja, memori perlu dirawat. Jika tidak, sistem memori apa pun dengan cepat berubah menjadi lemari digital. Oleh karena itu, proses pemeliharaan terpisah.
Singkatnya, memori Volna bukanlah satu prompt, satu basis data, atau satu retrieval. Ini adalah perutean berbagai jenis memori dengan masa hidup berbeda, biaya berbeda, dan cara injeksi yang berbeda ke dalam konteks.
❗️❗️❗️❗️❗️❗️❗️❗️ / Tidak dilarang di RF
Komentar
0Belum ada komentar.
Masuk untuk ikut berdiskusi.