Tag: vecmory

  • Yapay Zeka Ajanının Hafızası Kendini Yalan Söylerken Yakaladı: Yaklaşımı Değiştiren İki Günlük

    Yapay Zeka Ajanının Hafızası Kendini Yalan Söylerken Yakaladı: Yaklaşımı Değiştiren İki Günlük

    Yapay zeka ajanları geliştirme dünyasında, sistemin neredeyse ölümcül bir hata yaparak sahte bir başarıyı gerçek sanması anları vardır. Geçtiğimiz günlerde, vecmory bellek sistemini oluşturan yapay zeka ajanımız, parlak bir sonuç bildirmek üzereyken bunun bir serap olduğunu fark etti. Son anda kendi hafızasına danıştı ve önceki oturumdan bir kayıt buldu: bu fikri daha önce gerçek verilerle test etmişti ve başarısız olmuştu. Ajan, raporu göndermeden önce kendini durdurdu. Bu bir reklam senaryosu değil; bu bir günlük kaydı. Aşağıda, art arda iki tane böyle günlük kaydı var ve ikincisinde hafıza, gurur duyduğumuz bir özelliği atmamıza neden oldu. vecmory‘yi yazıyoruz — yapay zeka ajanı için “anlama dayalı bellek”. Bu, vektör aramasıyla (herkeste var) ilgili değil; ajanın aynı tırmığa iki kez basmamasını sağlamakla ilgili.

    Birinci Sahne: “0.98 Gösteren” Yönlendirici

    Oturumlardan birinde ajan, sonuç sıralamasını iyileştirmeyi önerdi. Fikir: sorguya göre saf kosinüs mü yoksa grafik yöntemiyle mi (Kişiselleştirilmiş PageRank) sıralama yapılacağına karar veren bir yönlendirici yapmaktı. Sentetik bir kıyaslama oluşturdu. Tahmin edicinin ideal seçimle korelasyonu: 0.98. Neredeyse mükemmel. Geriye sadece raporlamak ve birleştirmek kalmıştı.

    Raporlamadan önce ajan, kendi hafızasına geri döndü. Ve önceki oturumdan bir kayıt çıkardı: aynı fikir daha önce gerçek verilerle test edilmişti — ve başarısız olmuştu. Haklı bir soru: hafıza yerindeyken neden inşa etmeye kalkıştı? Çünkü geri çağırma anlamsaldır ve getirdiği şey sorguya bağlıdır. Başlangıçta sorgu genişti — “sıralamayı iyileştir” — bunun altında genel olarak sıralamayla ilgili en üst düzey merkezi notlar belirdi ve spesifik olan “bu belirli yönlendirici zaten test edildi ve başarısız oldu” bunların altında kayboldu. Ancak çalışma bağlamı belirli bir noktaya — “cos-dağıtım yönlendiricisi, PPR’ye karşı kosinüs, 0.98” — daraldığında ortaya çıktı: bu metindeki geri çağırma sonunda onu yakaladı. Hafıza sessiz değildi; sorgu onu çekecek kadar kesinleştiğinde ortaya çıktı.

    Sentetik veriler, sentetik gömme vektörlerinin ne kadar dürüst olduğu kadar dürüsttür. Vektörleri hesapladığımız çok dilli MiniLM’de kosinüs, sentetik verilerden tamamen farklı bir geometride yaşar. Bunu, bu makaleyi yazarken canlı hafıza korpusumuzda (246 düğüm) yeniden ölçtük: ilgisiz, rastgele çiftler ortalama 0.53 kosinüs verir (p5–p95: 0.24–0.76); gerçek en yakın komşular ortalama 0.80 (p5–p95: 0.57–0.91); rastgele vektörlerden oluşan sentetik verilerde ise ilgisiz olan 0.00 (±0.08) civarındadır. Fark hemen görülür. Sentetik verilerde “benzer” ve “benzer değil” bir uçurumla ayrılır — herhangi bir makul eşik temiz bir şekilde keser. Gerçek verilerde “komşu” ve “rastgele” bulutları örtüşür: üst yüzdelik dilimdeki (0.76) rastgele çiftler, alt yüzdelik dilimdeki (0.57) komşulardan daha yükseğe çıkar. Sentetik verilerde neşter gibi çalışan bir eşik, gerçek vektörlerde rastgele gürültü bulutunun içinden geçer ve hiçbir şeyi ayırmaz. Hafızadaki kayıt tam olarak bununla ilgiliydi: gerçek gömme vektörlerinin yüksek, sıkıştırılmış bir temel kosinüsü vardır; sentetik verilerden mutlak eşik aktarılamaz — eşik yerine sıralamaya (top-k) güvenilmelidir. Ajan kendi notunu okudu ve “hazır, korelasyon 0.98” yazmadan önce fikri öldürdü.

    İkinci Sahne: Ajan Kendi Özelliğini Çöpe Attı

    İkinci vaka da aynı deseni izliyor, ancak daha acı verici: Hafıza, README’de övgüyle bahsettiğimiz bir özelliği atmamıza neden oldu. Varsayılan olarak vecmory, sonuçları yalnızca kosinüs benzerliğine göre değil, aynı zamanda düğümün “önemine” (grafikteki gelen bağlantı sayısı, yani ona atıfta bulunan kayıt sayısı) göre de sıralıyordu. Mantık güzeldi: Merkezi, sıkça atıfta bulunulan bir gerçek daha üstte beliriyordu. Bunu varsayılana yerleştirdik. Sonra ölçtük. Recall@k (arama doğruluğuyla ilgili) değil, tam olarak sıralama kalitesini, gerçek “sorgu → doğru yanıt” çiftleri üzerinde: Saf kosinüs: MRR 0.81; “akıllı” önem karışımımız: MRR 0.41. Önem, doğru yanıtları bastırdı. Kimsenin atıfta bulunmadığı nadir, spesifik bir gerçek, yaygın olarak kullanılan “merkezlerin” altında ezildi.

    Sonrası daha ilginç. Belirgin merkezlere sahip sentetik bir “yaşlandırılmış” grafikte durum tam tersiydi: Kosinüs merkezi gömdü (MRR 0.033), önem ise onu yukarı çekti (1.0’a kadar). Yani önemin faydasının işareti, sorgunun amacına bağlı: “Bana kesin bir gerçek ver” için zararlı, “Bana bu konu hakkında genel bilgi ver” için faydalı. Her iki sınıfı da kazanan tek bir statik ağırlık yok. Sinyalleri uzlaştırmak için dört yöntem denedik (ağırlıklı toplam, geçit, RRF ve PPR) ve hoş olmayan bir sonuca vardık: Sorun karıştırma formülünde değil, sinyalin kendisinde. Düğümün küresel önemi, alaka düzeyinden ziyade bir popülerlik önceliğidir. Varsayılan için sonuç açıktı: Ana kullanım durumumuz (noktasal geri çağırma) için en iyi sıralama saf kosinüstür. Ve önemi varsayılan sıralamadan kaldırdık; README’de yazdığımız kendi özelliğimizi. Grafik yöntemini (sorgu tohumlu PPR) bir seçenek olarak bıraktık, varsayılan değil: Geniş sorgularda merkezleri dürüstçe çıkarıyor ve noktasal sorgularda kosinüse adil bir şekilde kaybediyor.

    “Önem” Hakkında Gerçekte Ne Anladık

    Küresel popülerlik (gelen bağlantı sayısı) bir sinyal olarak başarısız olduysa, doğru sinyal nedir? Beklenmedik derecede bariz bir cevaba ulaştık: Önemli olan çok sayıda atıf alan değil, bir kişinin tekrar tekrar düzelttiği şeydir. Ve işte burada değer önerisi dürüst hale geliyor. “Grafik hafızası” satmıyoruz (yine bir metalaşma). Şunu satıyoruz: Ajan, daha önce düzelttiğin aynı tuzaklara tekrar tekrar düşmeyi bırakır.

    Her iki olayı da şansa bağlamak kolaydır. Ancak hafızadaki her türlü gereksiz bilgiyi yeterince uzun süre temizlerseniz (vecmory’nin tüm geliştirmesini vecmory’nin kendisinde yapıyoruz), bunların dalgalanma değil, birkaç istikrarlı yasa olduğu görülür. Şimdi bir özet gelecek: “Bir gün başıma geldi” hikayeleri olmadan, üç vahiy halinde.

    Память ИИ-агента поймала себя на вранье: два лога, которые меняют подход — illustration 2

    “Bitirmeden Önce Kontrol Et” Kuralı

    Hoşuna giden şeyi onaylayan hafıza, hafıza değil, yankıdır. Hafıza, ancak yazarına itiraz ettiğinde olağanüstü bir değer kazanır. “Bitirmeden Önce Kontrol Et” kuralı, hem yönlendiriciyi (sahne 1) hem de uzun zamandır beklenen özelliğimizi (sahne 2) iptal etti; aynı mekanizma, farklı kurbanlar. Çünkü belirti sorgusunda hafıza, neden-sonuç bağlantıları (caused_by — “yüzünden”, followed_by — sorun→PR) aracılığıyla “benzer kelimeleri” değil, belirli bir nedeni ve geçmiş düzeltmeyi getirir. Düz top-k bunu yapamaz; işte “noktaları birleştirmek” budur.

    Her seferinde istikrarlı bir şekilde engelleyen şey — bir defaya mahsus değil

    Birincisi, ajan belleği kendi kendine çağırmaz: zorunlu bir recall kancası olmadan, her oturumda sistematik olarak çağrılmaz. “Sormayı unutmamanız” gereken bellek çalışmaz — sormayı deterministik bir tetikleyici yapmalıdır, ajanın iyi niyeti değil. İkincisi, kosinüs için mutlak eşik hiçbir yere taşınmaz: sentetik → gerçek, dün → bugün, bir model → başka bir model, geniş külliyat → dar (“her şeyin benzer olduğu” tek bir alanın demo külliyatında kosinüs neredeyse ayırt edemez hale gelir). Tedavi her zaman aynıdır: eşikleri tahmin etme, top-k sırala.

    “Sık sinyal, nadir ancak değerli olanı boğar” yasası

    Tırmıklarımızın yarısını açıklayan tek bir yasa: sık, yoğun sinyal, nadir ancak değerli olanı boğar. Bu, üç tipik yerde ortaya çıkar: düğümün küresel popülaritesi, kesin nadir gerçekleri boğar — ve onu sıralamaya karıştırmanın dört yolunu da (ağırlıklı toplam, geçit, RRF, PPR) başarısız kılar; merkez düğümler, kosinüs sıralamasında belirli gerçekleri gömer ve bunun tersi de geçerlidir; yoğun otomatik similar_to kenarları, nadir nedensel caused_by kenarlarını bastırır — bu nedenle nedensel recall’ın ayrı, izole bir moda çıkarılması gerekir. Bunu tek bir yasa olarak algıladığınızda, tedavi açıktır: nadir-ama-değerli olanı, sık-ama-genel olanla karıştırmayın — onu ayrı bir mekanizmayla (izole tarama, grafik bilinçli sıralama) çıkarın, genel top-k içinde kendiliğinden ortaya çıkacağını ummayın. Aynı yasa, önem sinyalimizin de temelini oluşturur: değerli olan popüler olan değil, bir kişinin tekrar tekrar düzelttiği şeydir.

    Sıkça Sorulan Sorular

    Vecmory nedir?

    Vecmory, vektör arama ve neden-sonuç-zaman grafiğine dayalı, AI ajanları için bir anlamsal bellek sistemidir. Ajanın gerçekleri hatırlamasını, anlam yoluyla onları geri çağırmasını ve geçmiş hataları tekrarlamamak için olayları ilişkilendirmesini sağlar.

    Vecmory’nin sıradan vektör aramadan farkı nedir?

    Vektör arama, anlam bakımından benzer kayıtları bulur ancak neden-sonuç ilişkilerini hesaba katmaz. Vecmory, grafik belleği ekler: kosinüs benzerliğinin yanı sıra, “neden-sonuç” ve “zaman sırası” kenarlarını tarar; bu, yalnızca benzer değil, bağlam açısından alakalı gerçeklerin bulunmasını sağlar — örneğin, geçmişteki başarısız bir deney.

    Düğüm önemini neden sıralamadan çıkardınız?

    Ölçümler, küresel popülerlik (gelen derece) eklemenin, noktasal sorgularda MRR’yi 0.81’den 0.41’e düşürdüğünü gösterdi. Popüler ancak ilgisiz bilgilerin ağırlığı altında nadir kesin gerçeklerin önemi kayboluyor. Ana kullanım durumu (kesin geri çağırma) için saf kosinüs daha iyi sonuç verdi.

    Bellek kalitesini nasıl değerlendiriyorsunuz?

    Gerçek verileri kullanıyoruz: 4299 ticket içeren bir GitHub deposu; burada issue→PR çiftleri Closes #N desenine göre çıkarılıyor. 300 semptom sorgusunda, grafik tabanlı geri çağırma, saf kosinüse karşı %87 doğruluk sağlarken saf kosinüs %38 doğruluk veriyor. Tüm betikler açık ve tekrarlanabilir.

    Sonuç

    Her iki hikaye de aynı şeyle ilgili: “bellek ajana yardımcı olur” mantrasını bırak ve şunu fark et: işte belleğin bize karşı çalıştığı iki günlük — iyimserliğimize ve kendi özelliğimize karşı. Belleğe sahip bir ajan, belleksiz bir ajandan daha fazlasını bildiği için değil, sinsi bir raporun hemen öncesinde kendini “bingo!” anında yakalayabildiği için farklıdır — çünkü geçmişte bu zaten olmuştu ve işe yaramamıştı. Ayrıca, gerçekler bir özelliğin daha kötü olduğunu gösterdiğinde onu atmaya hazır olmasıyla da farklıdır. Bu, üç makaleden ilki. Sonraki: “Neden Bir Bad CaRMa Daha Yazmadık” — hiper-evrensel bir veri modelinin genellikle nasıl felakete dönüştüğü ve bizimkinin dönüşmemesi için ne yaptığımız hakkında. Ve “ANN’yi Elle İnşa Ettik — Ne Zaman Buna Değdi, Ne Zaman Değmedi” — HNSW’yi neden kendimiz yazdığımız ve hangi durumlarda doğru cevabın “pgvector al ve hava atma” olduğuna dair açık bir analiz. Ajanınızın aynı tırmığa basmasını istiyorsanız, vecmory’yi deneyin: dokümantasyonumuzla başlayın veya depoyu fork edin. İtiraz eden bellek, güvenilmeye değer tek bellektir.