Belirginlik Taşıma Değeri Değildir

Çoğu insan ajan belleğini yanlış inşa ediyor.

Depolamaya odaklanıyorlar. Vektör depoları veya akıllı özetleyiciler kullanıyorlar. Her şeyi kaydederlerse ajanın her şeyi bileceğini sanıyorlar.

Yanılıyorlar.

Yüzlerce oturumunuz olduğunda, hepsini okuyamazsınız. Eğer ajan yeni bir oturuma sıfırdan (cold) başlarsa, zaman kaybeder. Eğer çok fazla gürültüyle başlarsa, hatalar yapar.

Sorun seçimdir. Çoğu insan belirginliği (salience) taşıma değeriyle (carry value) karıştırıyor.

  • Belirginlik, son oturumda nelerin "gürültülü" (ön planda) olduğunu söyler.
  • Taşıma değeri, bir sonraki oturumun işlevini yerine getirebilmesi için neye ihtiyacı olduğunu söyler.

Bir değişken adı üzerine yapılan hararetli bir tartışmanın belirginliği yüksektir. Ancak bu isim gelecekteki kodu etkilemiyorsa, taşıma değeri sıfırdır. Eğer bunu ileriye taşırsanız, sadece gürültü eklemiş olursunuz.

Bu kurallara dayalı bir bellek boru hattı (pipeline) çalıştırıyorum:

  1. Önce mekanik belirginlik. Önemli anları bulmak için deterministik bir puanlayıcı kullanın. Düzeltmeleri, basit yorumlardan daha yüksek ağırlıklandırın. Her vurgu, ham transkripte geri dönmelidir. Bir modelin, kaynak göstermeden gerçekleri uydurmasına izin vermeyin.

  2. İkinci olarak sentez. Bir LLM'i yalnızca vurgulara bir anlam katmanı eklemek için kullanın. Eğer vurgularınız kötüyse, özet sadece kendinden emin bir saçmalık olacaktır.

  3. Erişim zamanlı bir özet (brief) kullanın. Her proje için INDEX.md gibi bir dosya oluşturun. Ajan, bir oturumun başında bu dosyayı okur. Hiçbir model bu özeti anlık olarak uydurmamalıdır. Bu, elle açıp düzenleyebileceğiniz düz bir dosya olmalıdır.

Daha iyi bir bellek inşa etmek için sadece önemli şeylerin bir listesinden fazlasına ihtiyacınız var. Şunlara ihtiyacınız var:

  • İki puan: Biri ne kadar gürültülü olduğu (belirginlik), diğeri ise ne kadar önemli olduğu (taşıma değeri) için.
  • Bellek sınıfları: Aktif kararları, çalışma kısıtlamalarını ve açık döngüleri (open loops) birbirinden ayırın.
  • Son kullanma tarihleri: Her bellek parçasının ölmek için bir nedeni olmalıdır. Son kullanma tarihi olmazsa, bağlam (context) sisteminizi tıkar.
  • Tetikleyiciler: Bir bellek parçasının tam olarak ne zaman görünmesi gerektiğini tanımlayın.

Hedef, kurtarma maliyetini (recovery cost) en aza indirmektir.

Kurtarma maliyeti, bir ajanın kaldığı yere yetişmesi için kaç token veya dakika harcadığıdır. Eğer bellek boru hattınız sadece bir tiyatrodan ibaretse, kurtarma maliyetiniz yüksek kalacaktır.

Daha büyük depolama birimleri inşa etmeyi bırakın. Daha iyi seçim mekanizmaları inşa etmeye başlayın.

Kaynak: https://dev.to/jugeni/salience-is-not-carry-value-notes-from-a-running-session-memory-pipeline-4dda

İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi