Yapay zeka ajan belleği, bir ajanın bir adımdan ya da bir oturumdan diğerine bir şey taşımasını sağlayan şeydir. Bir dil modeli tek başına çağrılar arasında hiçbir şey hatırlamaz. Hatırlıyor gibi göründüğü her şeyi kodunuz prompt'a geri koymuştur. Bu malzemeyi nasıl sakladığınız ve geri getirdiğiniz, ajanın neyi hatırlayabileceğini, ne kadar hızlı hatırlayacağını ve tur başına maliyetini belirler.
Kısaca. Ajanların dört tür belleğe ihtiyacı vardır: kısa bir konuşma penceresi, anlamla bulunan uzun vadeli bilgiler, devam eden görev için bir karalama alanı ve olanların bir günlüğü. Her birinin şekli, ömrü ve arama biçimi farklıdır; bu yüzden tek bir bellek tablosu hiçbirine iyi uymaz. HotKV dördünü de
AMEM.*komutlarıyla tek bir bellek içi motorda saklar. HotKV'nin önbellekleme ve vektör aramasını kıyasladık, ajan belleğini değil; bu yüzden bu makale tasarımı açıklar ve herhangi bir hızlanma iddia etmez.
Bağlam penceresi neden bellek değildir
Bağlam penceresi, her istekle birlikte gönderdiğiniz metindir. Bir boyut sınırı vardır, her turda içindeki her şey için giriş tokenı ödersiniz ve oturum bittiğinde kaybolur. Ayrıca aranamaz. Bir ajanın üç hafta öncesinden tek bir bilgiye ihtiyacı varsa, tüm geçmişi yapıştırmak bir yanıt değildir.
Bellek, pencereye sıradaki şeyin neyin gireceğine karar veren katmandır. Son turları tutar ve önemli olan birkaç eski bilgiyi bulur. Mevcut görevin durumunu tutar ve ajanın ne yaptığını kaydeder. Araştırmacılar ajanları benzer terimlerle tanımlar. Sumers, Yao, Narasimhan ve Griffiths'in CoALA çerçevesi çalışma belleğini uzun vadeli epizodik, anlamsal ve işlemsel bellekten ayırır.
Yapay zeka ajan belleğinin dört türü
HotKV'nin dört deposu, bir uygulamanın kurması gerekene uyarlanmış olarak aynı alanın çoğunu kapsar. İşlemsel bellek, yani ajanın kodunda ve prompt'larında tutulan bilgi birikimi, normalde deponuzda ya da bir prompt kayıt defterinde yaşar ve kendi başına bir depo değildir.
Konuşma belleği
Bu, bir oturumun kısa vadeli dökümüdür. İletiler bir rol taşır (system, user, assistant veya tool). Sınırlı bir kayan pencerede dururlar; böylece sınıra ulaşıldığında en eski turlar düşer. Tek bir soruyu yanıtlar. Yakın zamanda ne söylendi? HotKV'de bu, AMEM.CONV.CREATE, AMEM.CONV.APPEND ve AMEM.CONV.WINDOW komutlarıdır.
Anlamsal bellek
Anlamsal bellek, bir embedding vektörüyle birlikte bilgi olarak saklanan uzun vadeli bilgidir. Ajan onları anahtarla değil, anlamla hatırlar. Vektör aramasını da güçlendiren aynı türden bir HNSW vektör dizini tarafından desteklenir. AMEM.SEM.STORE bir bilgiyi kaydeder ve AMEM.SEM.RECALL en iyi eşleşmeleri bir benzerlik skoruyla döndürür. Belgelerin, kullanıcı tercihlerinin ve öğrenilmiş düzeltmelerin yeri burasıdır.
Çalışma belleği
Çalışma belleği, devam eden bir görev için karalama alanıdır; bir oturuma bağlı, düz bir anahtar ve değer kümesi. Mevcut adımı, ele alınan talebi veya kısmi bir sonucu tutar. Görev bittiğinde ortadan kalkmalıdır. AMEM.WORK.SET tam da bu nedenle bir yaşam süresi (TTL) kabul eder.
Epizodik bellek
Epizodik bellek, yapılan bir eylem, yapılan bir gözlem veya varılan bir karar gibi zaman damgalı olayların yalnızca eklemeli bir günlüğüdür. Bir ajanın veya onu inceleyen bir kişinin ne olduğunu ve ne zaman olduğunu sormasına izin verir. AMEM.EPIS.LOG bir olay yazar ve AMEM.EPIS.QUERY onları türe ve zaman aralığına göre geri okur.
Uygulamada yapay zeka ajan belleği
Pratikte iki şey önemlidir. Belleğe nasıl yazdığınız ve her turda neyi geri okuduğunuz.
Belleği komutlarla saklamak
İşte tek bir konuşmayı yöneten bir destek ajanı. Kurgusal politika metni ve üç sayılık vektörler yalnızca örnekleme içindir. Gerçek bir embedding modeli 768 veya 1.536 sayılık vektörler üretir ve ad alanını bu boyutla oluşturursunuz.
AMEM.CONV.CREATE session-42 WINDOW 50 TTL 86400
AMEM.CONV.APPEND session-42 user "My invoice shows the wrong VAT number."
AMEM.WORK.SET session-42 ticket "INV-1932" TTL 3600
AMEM.EPIS.LOG agent-support action "Looked up invoice INV-1932"
AMEM.SEM.CREATE support-kb 3
AMEM.SEM.STORE support-kb vat-policy "VAT details can be corrected within 30 days." 0.1 0.2 0.3
AMEM.SEM.RECALL support-kb 3 0.1 0.2 0.3
AMEM.CONV.WINDOW session-42 10
Her turda ajan son pencereyi okur ve soruyla eşleşen birkaç bilgiyi hatırlar. Çalışma notunu denetler ve prompt'u bu parçalardan oluşturur. Harekete geçtikten sonra olayı günlüğe kaydeder. Bu döngüde hiçbir şey tüm geçmişe ihtiyaç duymaz.
Belleği her turda okumak
Belleği saklamak kolay yarıdır. Beceri, neyin geri okunacağına karar vermektir; çünkü okuduğunuz her şey prompt'a girer ve giriş tokenına mal olur. Makul bir döngü, sabit bir sırayla bir avuç şey okur. Önce son turlar gelir, sonra soruyla eşleşen birkaç bilgi, sonra görevin durumu. İşte resmi Python istemcisiyle, kendi embedding işlevinizi ve prompt şablonunuzu kullanarak.
import hotkv
r = hotkv.from_url("hotkv://localhost:6379")
MIN_SIMILARITY = 0.8 # kendi verilerinizde ayarlayın
def start_session(session: str) -> None:
r.amem_conv_create(session, window=50, ttl=86400) # bir kez oluşturun, ilk eklemeden önce
def build_context(session: str, question: str) -> str:
r.amem_conv_append(session, "user", question)
turns = r.amem_conv_window(session, 10)
facts = r.amem_sem_recall("support-kb", 3, embed(question))
facts = [f for f in facts if f["similarity"] >= MIN_SIMILARITY]
ticket = r.amem_work_get(session, "ticket")
return render(turns, facts, ticket) # prompt şablonunuz
def finish_turn(session: str, agent: str, reply: str) -> None:
r.amem_conv_append(session, "assistant", reply)
r.amem_epis_log(agent, "action", "Answered a billing question")
r.amem_work_set(session, "last_step", "answered")
Benzerlik için kesme değerini ayarlamak size kalmıştır. Bir embedding modeline ve bir bilgi kümesine uyan bir değer bir başkası için yanlış olacaktır; bu yüzden yanıtlarını bildiğiniz sorularda recall'u kontrol edin. Zayıf eşleşmeleri atmak göründüğünden daha önemlidir, çünkü prompt'taki zayıf bir bilgi, hiç bilgi olmamasından kötüdür.
Bu prompt'un sabit kısımları, örneğin sistem talimatları, sağlayıcı tarafı prompt önbelleklemenin ucuzlattığı kısımdır. Okuduğunuz belleği sabit metnin ardından sona koyun; böylece onu değiştirmek o önbelleği geçersiz kılmaz.
Sürekli uzayan pencereler yerine özetler
Bir pencere eski turları tamamen düşürür. Bu, havadan sudan sohbet için iyidir ama 3. turun 300. turda hâlâ önemli olabileceği uzun bir görev için kötüdür. Kayan özet olağan yanıttır. Her konuşma diliminden sonra ajan ya da daha ucuz bir model, öğrenilenleri yazar ve özet, prompt'taki eski turların yerini alır.
HotKV, AMEM.SUMMARY.SET, AMEM.SUMMARY.APPEND ve AMEM.SUMMARY.GET ile ajan başına bir özet tutar. SET metnin yerini alır ve APPEND bir satır ekler. Her güncelleme bir sürüm numarasını artırır; böylece başka bir bileşen özetin değiştiğini ve ne zaman değiştiğini ucuza anlayabilir.
Bir özet kayıplıdır ve bir özetin özeti her seferinde daha fazlasını kaybeder. Kimlikler, tutarlar ve tarihler gibi kesin değerleri düzyazının dışında, hayatta kalacakları çalışma belleğinde ya da anlamsal bilgilerde tutun. Özeti, tercihler, alınan kararlar ve geriye kalanlar gibi işin şekli için kullanın.
Tasarım kuralları ve saklama
Bellek, siz durdurmadıkça sınırsız büyür; bu yüzden sınırları ilk yazmadan önce belirleyin.
Belleği yararlı tutan kurallar
- Her şeyi sınırlayın. Konuşmalarda bir
WINDOW, oturumlarda ve çalışma değerlerinde birTTLbelirleyin. Konuşmalar, çalışma değerleri ve bilgiler için HotKV, sona erme zamanını yalnızca eklemeli dosya ve çoğaltmalar için kaydeder; böylece süresi dolmuş bir girdi, dosya yeniden başlatmadan sonra yeniden oynatıldığında geri gelmez. - Dökümleri değil, bilgileri saklayın. Anlamsal belleğe yazmadan önce özetleyin. Bir bilgiyi hatırlamak, bir sayfa diyalogdan daha kolaydır.
- Ajanları ayrı tutun. Ajan başına ve kiracı başına ayrı bir tanımlayıcı veya ad alanı kullanın; böylece bir müşterinin belleği asla bir başkası için hatırlanmaz.
- Çok değil, birkaç hatırlayın. İlk üç ila beş eşleşmeyi alın ve zayıf olanları, prompt'a girmeden önce benzerlik skoruyla atın.
- Sırları dışarıda tutun. Bellek prompt'lara geri okunur; bu yüzden parolaları, anahtarları veya modele göstermeyeceğiniz verileri asla saklamayın.
Her türün ne kadar saklanacağı
Bu ömürler varsayılan değil, bizim önerilerimizdir. Sizinkini, alttaki bilgilerin ne kadar hızlı değiştiğine ve neyi saklamanıza izin verildiğine göre seçin.
| Bellek türü | Önerilen ömür | HotKV'deki denetimler |
|---|---|---|
| Konuşma | Oturum ya da bir gün gibi sabit bir süre | AMEM.CONV.CREATE üzerinde WINDOW ve TTL |
| Çalışma | Görev, sonra temizlenir | AMEM.WORK.SET üzerinde TTL ve AMEM.WORK.CLEAR |
| Anlamsal | Bilgi doğru olmaktan çıkana kadar | AMEM.SEM.STORE üzerinde TTL ve AMEM.SEM.FORGET |
| Epizodik | Denetim veya destek ihtiyaçlarınızın gerektirdiği süre kadar | Zaman aralığına göre AMEM.EPIS.QUERY ve AMEM.EPIS.CLEAR (olayların yaşam süresi yoktur) |
Saklama aynı zamanda bir gizlilik sorusudur. Bellek bir kişi hakkında herhangi bir şey tutuyorsa, seçtiğiniz ömür ona verdiğiniz sözün parçasıdır; bu yüzden yazın.
Ajan belleği nasıl bozulur
Çoğu bellek hatası yavaş hatalardır. Ajan bir hafta iyi çalışır, sonra kötüleşmeye başlar. Karşı tasarım yapılması gereken hatalar şunlardır.
Yaygın hatalar
- Bayat bilgiler. Mart'ta doğru olan bir bilgi Ekim'de hatırlanır. Bilgilere bir yaşam süresi verin veya yeni değer eskisinin üzerine yazsın diye varlık başına bir anahtar altında saklayın.
- Çelişkiler. Saklanan iki bilgi birbiriyle çelişir ve ajan birini rastgele seçer. Eski notların yanına yeni notlar eklemek yerine anahtar başına tek bir bilgiyi tercih edin.
- Aşırı hatırlama. Çok fazla eşleşme prompt'u gevşek ilişkili metinle doldurur. Az hatırlayın ve zayıf eşleşmeleri atın.
- Kullanıcılar arası sızıntılar. Bir müşterinin belleği bir başkası için hatırlanır. Her kiracı için ayrı tanımlayıcılar veya ad alanları kullanın ve her okumadan önce kodda denetleyin.
- Sınırsız büyüme. Hiçbir şeyin süresi dolmaz, bu yüzden aramalar yavaşlar ve maliyetler tırmanır. Her türün bir ömrü olmalıdır. HotKV'nin epizodik günlükte olduğu gibi yaşam süresi sunmadığı yerlerde, bir temizlemeyi veya dışa aktarmayı kendiniz zamanlayın.
- Özet kayması. Bir özetin özeti yavaş yavaş olanlarla eşleşmemeye başlar. Olay günlüğünü doğruluk kaynağı olarak tutun ve özetleri ondan yeniden üretin.
Saklanan metne güvenilmez gözüyle bakın
Son nokta daha fazla dikkati hak ediyor. Bir ajanın belleğe yazdığı her şey daha sonra bir prompt'a okunabilir. Bu, bir web sayfasından, bir e-postadan veya bir kullanıcıdan gelen metni de içerir. Bu, OWASP'ın LLM01 olarak listelediği dolaylı prompt enjeksiyonu biçimidir. Her bilgiyle birlikte kaynağını saklayın. Dışarıdaki içerikten yazılan belleğe daha az güvenin ve hatırlanan bir notun sistem prompt'unuzu geçersiz kılmasına asla izin vermeyin.
Neyi ölçtük, neyi ölçmedik
HotKV'nin yayımlanmış kıyaslamaları komut verimini, vektör aramayı ve yanıt önbelleklemenin token tasarruflarını kapsar. Ajan belleğinin henüz kendi kıyaslaması yok. Gecikmesi veya ajan kalitesini ne kadar artırdığı hakkında hiçbir iddiada bulunmuyoruz. Söyleyebileceğimiz şey mimaridir. Dört depo, önbellek ve vektör dizini ile aynı süreçte çalışır. Bir bellek araması, zaten işlettiğiniz bir sisteme tek bir çağrıdır.
Token tasarrufu kıyaslaması ile prompt önbellekleme ve anlamsal önbellekleme karşılaştırması ölçülen tarafı gösterir. Ajan belleği kullanım senaryosu komutları tam bir senaryoda gösterir.
Ajan belleğini Claude Code veya Cursor'dan kullanmak
Model Context Protocol'ü destekleyen bir asistan, bu belleğin bir kısmını özel kod olmadan kullanabilir. Açık kaynaklı hotkv-mcp sunucusu konuşma belleğini, çalışma notlarını, bir olay günlüğünü ve kayan bir özeti araç olarak sunar. Salt okunur bir moda ve ajanı sınırlayan bir ad alanına sahiptir. Anlamsal belleği sunmaz ve araçları bir pencere ya da yaşam süresi ayarlayamaz; bunlar için istemci kitaplığını kullanın. Sonraki makale, ajan belleği için bir MCP sunucusu, onu nasıl bağlayacağınızı ve güvenlik önlemlerinin neleri kapsadığını gösterir.
Sık sorulan sorular
Yapay zeka ajan belleği nedir?
Yapay zeka ajan belleği, bir ajanın bilgiyi adımlar ve oturumlar arasında tutmasını sağlayan depolama ve getirme katmanıdır. Genellikle yakın zamanlı bir konuşma penceresini, anlamla bulunan uzun vadeli bilgileri, mevcut görev için bir karalama alanını ve bir olay günlüğünü birleştirir.
Kısa vadeli ve uzun vadeli ajan belleği arasındaki fark nedir?
Kısa vadeli bellek, son turlar ve görev durumu gibi şu anda olanları tutar; sınırlıdır ve geçicidir. Uzun vadeli bellek, bilgiler, tercihler ve geçmiş olaylar gibi bir oturumdan uzun yaşaması gereken bilgiyi tutar ve gerektiğinde aranır.
Ajan belleğinde kayan özet nedir?
Kayan özet, bir ajanın şimdiye kadar öğrendiklerinin veya karar verdiklerinin, iş sürdükçe güncellenen kısa bir açıklamasıdır. Prompt'un sürekli büyümemesi için prompt'taki eski turların yerini alır. HotKV ajan başına bir tane saklar ve her güncellemede bir sürüm numarasını artırır.
Ajan belleği için bir vektör veritabanına ihtiyacım var mı?
Yalnızca bilgilerin anlamla bulunduğu anlamsal bellek için. Konuşma pencereleri, çalışma durumu ve olay günlükleri vektör gerektirmez. HotKV dördünü de tek bir motorda tutar; böylece vektör dizini ve diğer depolar ayrı sistemler değildir.
Ajan belleği ne kadar süre saklanmalı?
Türe bağlıdır. Çalışma belleği görev bittiğinde, konuşmalar oturumdan sonra veya belirli bir süre sonra, epizodik günlükler ise denetim ihtiyaçlarınızın gerektirdiği süre boyunca sona ermelidir. Anlamsal bellekteki bilgiler gözden geçirilmeli ve doğru olmaktan çıktıklarında kaldırılmalıdır.
Ajan belleğine saldırılabilir mi?
Evet. Belleğe yazılan metin daha sonra prompt'lara okunur; bu yüzden zehirlenmiş bir not ajanı yönlendirebilir. Her bilginin nereden geldiğini kaydedin, dışarıdaki içeriğe daha az güvenin ve hatırlanan belleği yetki bakımından sistem prompt'unuzun altında tutun.
HotKV ajan belleğini RAM'de mi saklıyor?
HotKV bir bellek içi motordur, bu yüzden okumalar bellekten sunulur. Dört depoya yazmalar, ürün belgelerine göre, sona erme süreleri taşınarak yalnızca eklemeli dosya ve çoğaltmalar için kaydedilir.



Sohbete devam edin
Yorumlar
Yöntemle ilgili sorularınız mı var? Donanımınızda farklı bir sonuç mu aldınız? Bulduklarınızı paylaşın. Yorumlar görünmeden önce incelenir.