Rehberler

Yapay zeka ajan belleği: dört tür ve nasıl saklanır

Ajan belleği uzun bir bağlam penceresinden fazlasıdır. Ajanın ihtiyaç duyduğu dört tür, her birinin nasıl saklanacağı ve nelerin dışarıda kalacağı, HotKV komutlarıyla.

Etrafında dört bellek deposu olan bir ajan olarak çizilmiş yapay zeka ajan belleği: konuşma, anlamsal, çalışma ve epizodik.

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

Ajan belleğinin bir turu. Prompt'tan önce ajan konuşma penceresini, hatırlanan bilgileri ve bir çalışma notunu okur. Yanıttan sonra turu ekler, bir olayı günlüğe kaydeder ve notu günceller.
Ajan belleğinin bir turu. Prompt'tan önce birkaç şey okuyun, yanıttan sonra geri yazın.

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 bir TTL belirleyin. 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ürHotKV'deki denetimler
KonuşmaOturum ya da bir gün gibi sabit bir süreAMEM.CONV.CREATE üzerinde WINDOW ve TTL
ÇalışmaGörev, sonra temizlenirAMEM.WORK.SET üzerinde TTL ve AMEM.WORK.CLEAR
AnlamsalBilgi doğru olmaktan çıkana kadarAMEM.SEM.STORE üzerinde TTL ve AMEM.SEM.FORGET
EpizodikDenetim veya destek ihtiyaçlarınızın gerektirdiği süre kadarZaman 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.

Bunu faydalı buldunuz mu?

Makaleyi paylaşın

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.

Yorum bırakın

Görünen adınız ve yorumunuz onaydan sonra herkese açık olur. E-posta adresiniz yalnızca yukarıdaki güncellemeler için kullanılır ve asla gösterilmez. Cloudflare Turnstile, yazmaya başladığınızda spam denetimi yapar. Gizlilik ayrıntıları.