{"id":35164,"date":"2025-11-26T12:01:25","date_gmt":"2025-11-26T09:01:25","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/"},"modified":"2025-11-26T12:01:25","modified_gmt":"2025-11-26T09:01:25","slug":"ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/","title":{"rendered":"AI Ajanlara Vekt\u00f6r DB&#8217;siz Uzun S\u00fcreli Haf\u0131za Nas\u0131l Verilir?"},"content":{"rendered":"<p><meta name=\"description\" content=\"AI ajanlar\u0131n\u0131za karma\u015f\u0131k vekt\u00f6r veritaban\u0131 gerektirmeden uzun s\u00fcreli bellek kazand\u0131rman\u0131n basit ve etkili yollar\u0131n\u0131 ke\u015ffedin. Ad\u0131m ad\u0131m rehber ve kod \u00f6rnekleri ile pratik \u00e7\u00f6z\u00fcmler burada.\"><br \/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><\/p>\n<style>\n  \/* Temel mobil uyumluluk i\u00e7in \u00f6rnek stil *\/\n  body {\n    font-family: Arial, sans-serif;\n    line-height: 1.6;\n    color: #333;\n    margin: 0 auto;\n    max-width: 800px;\n    padding: 20px;\n  }\n  h2, h3 {\n    color: #2c3e50;\n  }\n  pre {\n    background-color: #ecf0f1;\n    padding: 15px;\n    border-radius: 5px;\n    overflow-x: auto;\n  }\n  code {\n    font-family: \"Courier New\", Courier, monospace;\n    color: #c0392b;\n  }\n  ul {\n    list-style-type: disc;\n    margin-left: 20px;\n  }\n  blockquote {\n    background-color: #f9f9f9;\n    border-left: 5px solid #3498db;\n    margin: 1.5em 10px;\n    padding: 0.5em 10px;\n    color: #555;\n  }\n  \/* Mobil cihazlar i\u00e7in medya sorgusu \u00f6rne\u011fi *\/\n  @media (max-width: 600px) {\n    body {\n      padding: 10px;\n    }\n    h2 {\n      font-size: 1.8em;\n    }\n    h3 {\n      font-size: 1.4em;\n    }\n  }\n<\/style>\n<p>Yapay zeka ajanlar\u0131, g\u00fcn\u00fcm\u00fcz\u00fcn en heyecan verici teknolojik geli\u015fmelerinden biri olarak kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor. Ancak, bu ak\u0131ll\u0131 sistemlerin en b\u00fcy\u00fck zorluklar\u0131ndan biri, edindikleri bilgileri kal\u0131c\u0131 olarak hat\u0131rlayabilmeleri ve bu bilgileri yeni etkile\u015fimlerde kullanabilmeleri. \u00c7o\u011fu zaman, b\u00fcy\u00fck dil modelleri (LLM&#8217;ler) gibi teknolojilerle \u00e7al\u0131\u015fan ajanlar, sadece o anki &#8220;ba\u011flam penceresi&#8221; i\u00e7inde bilgi tutabilir ve pencere kapand\u0131\u011f\u0131nda her \u015feyi unutma e\u011filimindedir. Peki, ajanlar\u0131m\u0131za bir vekt\u00f6r veritaban\u0131n\u0131n karma\u015f\u0131kl\u0131\u011f\u0131na bula\u015fmadan nas\u0131l uzun s\u00fcreli haf\u0131za kazand\u0131rabiliriz? \u0130\u015fte bu yaz\u0131da, bu sorunun cevab\u0131n\u0131, pratik ve anla\u015f\u0131l\u0131r yakla\u015f\u0131mlarla birlikte ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<p>Modern yapay zeka ajanlar\u0131, \u00f6zellikle diyalog sistemleri, ki\u015fisel asistanlar veya karma\u015f\u0131k g\u00f6revleri otomatize eden botlar, insan benzeri bir etkile\u015fim deneyimi sunmay\u0131 hedefler. Ancak, bu hedefe ula\u015fman\u0131n \u00f6n\u00fcndeki en b\u00fcy\u00fck engellerden biri, ajanlar\u0131n genellikle &#8220;unutkan&#8221; olmas\u0131d\u0131r. Yani, bir sohbetin veya g\u00f6revin sonunda, edindikleri t\u00fcm bilgileri kaybederler ve bir sonraki etkile\u015fimde her \u015feye s\u0131f\u0131rdan ba\u015flarlar. Bu durum, hem kullan\u0131c\u0131 deneyimini olumsuz etkiler hem de ajan\u0131n karma\u015f\u0131k, \u00e7ok ad\u0131ml\u0131 g\u00f6revleri \u00f6\u011frenme ve yerine getirme yetene\u011fini ciddi \u015fekilde s\u0131n\u0131rlar. \u00d6rne\u011fin, bir m\u00fc\u015fteri hizmetleri botu, \u00f6nceki g\u00f6r\u00fc\u015fmelerde konu\u015fulan sorunlar\u0131 veya tercihleri hat\u0131rlayamad\u0131\u011f\u0131nda, m\u00fc\u015fteri ayn\u0131 bilgileri defalarca tekrarlamak zorunda kal\u0131r; bu da do\u011fal olarak hayal k\u0131r\u0131kl\u0131\u011f\u0131 yarat\u0131r. Veya bir proje y\u00f6netim asistan\u0131, bir \u00f6nceki toplant\u0131da belirlenen hedefleri, mevcut g\u00f6revlerin durumunu veya ekip \u00fcyelerinin uzmanl\u0131k alanlar\u0131n\u0131 haf\u0131zas\u0131nda tutamazsa, her seferinde ba\u015ftan y\u00f6nlendirilmek zorunda kal\u0131r.<\/p>\n<p>Bu unutkanl\u0131k problemini \u00e7\u00f6zmek i\u00e7in geli\u015ftirilen ilk ve en pop\u00fcler \u00e7\u00f6z\u00fcmlerden biri, vekt\u00f6r veritabanlar\u0131 (vector databases) ve g\u00f6m\u00fcl\u00fc (embedding) tabanl\u0131 anlamsal aramad\u0131r. Bu sistemler, metinleri say\u0131sal vekt\u00f6rlere d\u00f6n\u00fc\u015ft\u00fcrerek, anlamsal olarak benzer bilgileri h\u0131zl\u0131ca bulmay\u0131 sa\u011flar. Harika bir teknoloji olmas\u0131na ra\u011fmen, vekt\u00f6r veritabanlar\u0131n\u0131n kendine \u00f6zg\u00fc zorluklar\u0131 vard\u0131r. Bunlar aras\u0131nda, altyap\u0131 kurulumu ve y\u00f6netimi, embedding modellerinin se\u00e7imi ve optimizasyonu, maliyetler, veri senkronizasyonu ve \u00f6zellikle de daha k\u00fc\u00e7\u00fck \u00f6l\u00e7ekli veya b\u00fct\u00e7esi k\u0131s\u0131tl\u0131 projeler i\u00e7in gereksiz yere karma\u015f\u0131k hale gelebilen bir \u00f6\u011frenme e\u011frisi bulunur. K\u0131sacas\u0131, her proje i\u00e7in bir vekt\u00f6r veritaban\u0131 kurmak, bir sine\u011fi avlamak i\u00e7in top kullanmaya benzeyebilir. Oysa bazen daha basit, daha do\u011frudan ve daha az kaynak t\u00fcketen \u00e7\u00f6z\u00fcmlere ihtiyac\u0131m\u0131z vard\u0131r. Bu noktada, daha geleneksel ama ak\u0131ll\u0131ca uygulanan veri depolama ve eri\u015fim y\u00f6ntemleri devreye girer. Amac\u0131m\u0131z, ajan\u0131n ge\u00e7mi\u015f deneyimlerinden, \u00f6\u011frenimlerinden ve \u00f6nemli bilgilerden olu\u015fan bir &#8220;bilgi bankas\u0131&#8221; olu\u015fturarak, gerekti\u011finde bu bilgilere h\u0131zl\u0131 ve etkili bir \u015fekilde ula\u015fmas\u0131n\u0131 sa\u011flamakt\u0131r. B\u00f6ylece, ajan\u0131n daha tutarl\u0131, ki\u015fiselle\u015ftirilmi\u015f ve \u00f6\u011frenme yetene\u011fi y\u00fcksek bir varl\u0131k haline gelmesinin yolunu a\u00e7ar\u0131z.<\/p>\n<h2>AI Ajan Belle\u011fi ve Vekt\u00f6r Veritabanlar\u0131n\u0131n \u00d6tesi<\/h2>\n<p>AI ajanlar\u0131n\u0131n uzun s\u00fcreli belle\u011fe sahip olmas\u0131, onlar\u0131n sadece \u015fimdiki zamana odaklanmak yerine, ge\u00e7mi\u015f deneyimlerinden \u00f6\u011frenmesini ve bu bilgileri gelecekteki etkile\u015fimlerde kullanmas\u0131n\u0131 sa\u011flar. Temel olarak, bir AI ajan\u0131n\u0131n belle\u011fi iki ana kategoriye ayr\u0131labilir: k\u0131sa s\u00fcreli bellek ve uzun s\u00fcreli bellek.<\/p>\n<ul>\n<li><strong>K\u0131sa S\u00fcreli Bellek (Ba\u011flam Penceresi):<\/strong> Bu, b\u00fcy\u00fck dil modellerinin (LLM&#8217;ler) i\u015flem s\u0131ras\u0131nda aktif olarak tuttu\u011fu bilgidir. Tipik olarak, LLM&#8217;ler belirli bir belirte\u00e7 (token) say\u0131s\u0131yla s\u0131n\u0131rl\u0131 bir &#8220;ba\u011flam penceresine&#8221; sahiptir. Bu pencereye s\u0131\u011fan t\u00fcm metinler, modelin o anki yan\u0131t\u0131n\u0131 olu\u015fturmak i\u00e7in kullan\u0131l\u0131r. Ancak, pencere doldu\u011funda veya etkile\u015fim sona erdi\u011finde, eski bilgiler d\u0131\u015far\u0131 itilir ve unutulur. Bu, bir insan zihnindeki anl\u0131k d\u00fc\u015f\u00fcnceler veya \u00e7al\u0131\u015fma belle\u011fi gibidir.<\/li>\n<li><strong>Uzun S\u00fcreli Bellek:<\/strong> Ajan\u0131n kal\u0131c\u0131 olarak saklad\u0131\u011f\u0131, gelecekteki kullan\u0131m i\u00e7in eri\u015filebilen t\u00fcm bilgilerdir. Bu bilgiler, \u00f6nceki konu\u015fmalar\u0131, kullan\u0131c\u0131 tercihlerini, \u00f6\u011frenilen ger\u00e7ekleri, tan\u0131mlanan g\u00f6revleri veya herhangi bir harici veri setini i\u00e7erebilir. \u0130nsan beynindeki gibi, uzun s\u00fcreli bellek de farkl\u0131 katmanlara sahip olabilir; \u00f6rne\u011fin, &#8220;an\u0131sal (episodic) bellek&#8221; belirli olaylar\u0131 ve deneyimleri saklarken, &#8220;semantik (semantic) bellek&#8221; genel d\u00fcnya bilgisini, kavramlar\u0131 ve ger\u00e7ekleri depolar.<\/li>\n<\/ul>\n<p>Vekt\u00f6r veritabanlar\u0131, uzun s\u00fcreli bellek sa\u011flaman\u0131n olduk\u00e7a g\u00fc\u00e7l\u00fc bir yoludur. Temel prensip, metin par\u00e7alar\u0131n\u0131 y\u00fcksek boyutlu vekt\u00f6rlere d\u00f6n\u00fc\u015ft\u00fcrmek (embedding) ve bu vekt\u00f6rleri veritaban\u0131nda saklamakt\u0131r. Bir sorgu geldi\u011finde, sorgu da bir vekt\u00f6re d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcr ve veritaban\u0131ndaki di\u011fer vekt\u00f6rlerle anlamsal benzerli\u011fine g\u00f6re en alakal\u0131 sonu\u00e7lar bulunur. Ancak, daha \u00f6nce de belirtti\u011fimiz gibi, vekt\u00f6r DB&#8217;lerin kurulumu, y\u00f6netimi ve \u00f6l\u00e7eklendirilmesi, \u00f6zellikle daha k\u00fc\u00e7\u00fck veya deneysel projeler i\u00e7in gere\u011finden fazla karma\u015f\u0131k olabilir. Bu &#8220;ba\u015f a\u011fr\u0131s\u0131&#8221;, genellikle \u015funlar\u0131 i\u00e7erir:<\/p>\n<ul>\n<li><strong>Altyap\u0131 Y\u00f6netimi:<\/strong> Vekt\u00f6r DB&#8217;leri kurmak ve s\u00fcrd\u00fcrmek, \u00f6zel sunucular veya bulut hizmetleri gerektirebilir.<\/li>\n<li><strong>Embedding Modelleri:<\/strong> Do\u011fru embedding modelini se\u00e7mek, onu fine-tune etmek ve model \u00e7\u0131kt\u0131lar\u0131n\u0131n kalitesini y\u00f6netmek ayr\u0131 bir uzmanl\u0131k alan\u0131d\u0131r.<\/li>\n<li><strong>Maliyet:<\/strong> Y\u00fcksek boyutlu vekt\u00f6rlerin depolanmas\u0131 ve h\u0131zl\u0131 aranmas\u0131, \u00f6nemli i\u015flem ve depolama kaynaklar\u0131 gerektirebilir.<\/li>\n<li><strong>Karma\u015f\u0131kl\u0131k:<\/strong> Anlamsal araman\u0131n inceliklerini anlamak ve uygulamak, geleneksel veritaban\u0131 sorgular\u0131ndan daha farkl\u0131 bir d\u00fc\u015f\u00fcnce yap\u0131s\u0131 gerektirir.<\/li>\n<\/ul>\n<p>Amac\u0131m\u0131z, bu karma\u015f\u0131kl\u0131ktan ka\u00e7\u0131narak, benzer faydalar\u0131 daha basit ve y\u00f6netilebilir yollarla elde etmektir. Bu, &#8220;an\u0131msama&#8221; (retrieval) yetene\u011fini tamamen kaybetmek anlam\u0131na gelmez; aksine, anlamsal aramay\u0131 daha basit metin tabanl\u0131 veya yap\u0131sal tabanl\u0131 y\u00f6ntemlerle taklit etmeye \u00e7al\u0131\u015f\u0131r\u0131z. \u00d6rne\u011fin, belirli anahtar kelimelerle arama yapmak, \u00f6nceden tan\u0131mlanm\u0131\u015f kategorilere g\u00f6re filtreleme yapmak veya hatta LLM&#8217;nin kendisini bir &#8220;sorgu motoru&#8221; olarak kullanarak bellekten bilgi \u00e7ekmek gibi yakla\u015f\u0131mlar m\u00fcmk\u00fcnd\u00fcr. \u00d6nemli olan, ajan\u0131n ge\u00e7mi\u015f deneyimlerinden ders \u00e7\u0131karabilmesi ve her yeni etkile\u015fimde daha bilgili ve ba\u011flamsal olarak uygun yan\u0131tlar verebilmesidir. Bu yolda, geleneksel veritabanlar\u0131, dosya sistemleri ve basit anahtar-de\u011fer depolar\u0131 gibi ara\u00e7lar, \u015fa\u015f\u0131rt\u0131c\u0131 derecede g\u00fc\u00e7l\u00fc \u00e7\u00f6z\u00fcmler sunabilir.<\/p>\n<h2>Alternatif Yakla\u015f\u0131mlar: Basit Yap\u0131larla Bilgi Y\u00f6netimi Nas\u0131l Sa\u011flan\u0131r?<\/h2>\n<p>Vekt\u00f6r veritabanlar\u0131n\u0131n karma\u015f\u0131kl\u0131\u011f\u0131ndan ka\u00e7\u0131narak AI ajanlar\u0131m\u0131za uzun s\u00fcreli bellek kazand\u0131rmak i\u00e7in bir dizi alternatif ve genellikle daha basit yakla\u015f\u0131m mevcuttur. Bu yakla\u015f\u0131mlar, temel olarak bilginin nas\u0131l depolanaca\u011f\u0131 ve daha sonra nas\u0131l geri \u00e7a\u011fr\u0131laca\u011f\u0131 \u00fczerine kuruludur. Ana fikir, bilginin, ajan\u0131n anlayabilece\u011fi ve i\u015fleyebilece\u011fi yap\u0131land\u0131r\u0131lm\u0131\u015f veya yar\u0131 yap\u0131land\u0131r\u0131lm\u0131\u015f bir formatta saklanmas\u0131d\u0131r.<\/p>\n<h3>Yap\u0131sal Metin Depolama: JSON ve \u0130li\u015fkisel Olmayan Veritabanlar\u0131<\/h3>\n<p>Bilgiyi yap\u0131land\u0131r\u0131lm\u0131\u015f bir \u015fekilde depolamak, hem depolama hem de geri \u00e7a\u011f\u0131rma s\u00fcre\u00e7lerini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde kolayla\u015ft\u0131r\u0131r. \u0130\u015fte bu ama\u00e7la kullanabilece\u011finiz baz\u0131 pop\u00fcler ve eri\u015filebilir teknolojiler:<\/p>\n<ul>\n<li><strong>JSON Dosyalar\u0131:<\/strong> JavaScript Object Notation (JSON), insan taraf\u0131ndan okunabilir ve kolayca ayr\u0131\u015ft\u0131r\u0131labilir bir veri de\u011fi\u015fim format\u0131d\u0131r. Her bir bellek par\u00e7ac\u0131\u011f\u0131n\u0131 (\u00f6rne\u011fin, bir kullan\u0131c\u0131n\u0131n tercihleri, bir g\u00f6revin detaylar\u0131, bir konu\u015fma \u00f6zeti) bir JSON objesi olarak saklayabilir ve bu objeleri bir dosyada veya basit bir dizin yap\u0131s\u0131nda tutabilirsiniz.<br \/>\n        <br \/><strong>Avantajlar\u0131:<\/strong> \u00c7ok basit kurulum, y\u00fcksek okunabilirlik, esneklik (\u015fema gereksinimi yok).<br \/>\n        <br \/><strong>Dezavantajlar\u0131:<\/strong> B\u00fcy\u00fck veri setlerinde performans sorunlar\u0131, e\u015fzamanl\u0131 eri\u015fimde kilitlenme riski, karma\u015f\u0131k sorgular i\u00e7in yetersizlik.<br \/>\n        <br \/><strong>Ne zaman kullan\u0131l\u0131r:<\/strong> K\u00fc\u00e7\u00fck \u00f6l\u00e7ekli projeler, konfig\u00fcrasyon verileri, tek kullan\u0131c\u0131l\u0131 ajanlar, h\u0131zl\u0131 prototipleme.<\/li>\n<li><strong>SQLite:<\/strong> SQLite, sunucusuz, kendini i\u00e7eren, yap\u0131land\u0131r\u0131labilir, s\u0131f\u0131r konfig\u00fcrasyonlu, i\u015flem odakl\u0131 bir ili\u015fkisel veritaban\u0131 y\u00f6netim sistemidir. Veritaban\u0131n\u0131n tamam\u0131 tek bir disk dosyas\u0131nda saklan\u0131r.<br \/>\n        <br \/><strong>Avantajlar\u0131:<\/strong> Hafif, kurulum gerektirmez (k\u00fct\u00fcphane olarak gelir), SQL ile g\u00fc\u00e7l\u00fc sorgulama yetenekleri, ACID uyumlulu\u011fu, orta \u00f6l\u00e7ekli veri setleri i\u00e7in iyi performans.<br \/>\n        <br \/><strong>Dezavantajlar\u0131:<\/strong> Y\u00fcksek e\u015fzamanl\u0131 yazma i\u015flemleri i\u00e7in s\u0131n\u0131rl\u0131, da\u011f\u0131t\u0131k sistemler i\u00e7in uygun de\u011fil.<br \/>\n        <br \/><strong>Ne zaman kullan\u0131l\u0131r:<\/strong> Tek ajanl\u0131 sistemler, masa\u00fcst\u00fc uygulamalar\u0131, mobil uygulamalar, web servislerinin hafif arka plan veritabanlar\u0131. Bir m\u00fc\u015fteri hizmetleri botunun ge\u00e7mi\u015f g\u00f6r\u00fc\u015fmelerini veya bir \u00f6\u011frenme asistan\u0131n\u0131n \u00f6\u011frenci notlar\u0131n\u0131 saklamas\u0131 i\u00e7in idealdir.<\/li>\n<li><strong>Redis:<\/strong> Redis, a\u00e7\u0131k kaynakl\u0131, bellek i\u00e7i bir veri yap\u0131s\u0131 sunucusudur. Genellikle bir \u00f6nbellek (cache) olarak kullan\u0131lsa da, kal\u0131c\u0131 veri depolama yetenekleri sayesinde anahtar-de\u011fer deposu olarak da i\u015flev g\u00f6rebilir. \u00d6zellikle h\u0131zl\u0131 okuma\/yazma gerektiren senaryolar i\u00e7in m\u00fckemmeldir.<br \/>\n        <br \/><strong>Avantajlar\u0131:<\/strong> Ola\u011fan\u00fcst\u00fc h\u0131zl\u0131 eri\u015fim, \u00e7e\u015fitli veri yap\u0131lar\u0131 (hash&#8217;ler, listeler, setler), kal\u0131c\u0131l\u0131k se\u00e7enekleri.<br \/>\n        <br \/><strong>Dezavantajlar\u0131:<\/strong> Bellek tabanl\u0131 oldu\u011fu i\u00e7in maliyetli olabilir, \u00e7ok b\u00fcy\u00fck veri setleri i\u00e7in bellek k\u0131s\u0131tlamalar\u0131.<br \/>\n        <br \/><strong>Ne zaman kullan\u0131l\u0131r:<\/strong> Oturum bilgileri, anl\u0131k bildirimler, s\u0131k eri\u015filen veriler, h\u0131zl\u0131 durum depolama. \u00d6rne\u011fin, bir oyun NPC&#8217;sinin (oyuncu olmayan karakter) o anki durumunu, son etkile\u015fimlerini veya k\u0131sa s\u00fcreli hedeflerini depolamak i\u00e7in kullan\u0131labilir.<\/li>\n<\/ul>\n<p><strong>Vaka Analizi: M\u00fc\u015fteri Hizmetleri Botu ve SQLite<\/strong><br \/>\nDiyelim ki bir e-ticaret sitesi i\u00e7in m\u00fc\u015fteri hizmetleri botu geli\u015ftiriyorsunuz. Bu botun, m\u00fc\u015fterinin ge\u00e7mi\u015f sipari\u015flerini, \u015fikayetlerini ve tercihlerini hat\u0131rlamas\u0131 gerekiyor. Her m\u00fc\u015fteriyle her yeni etkile\u015fimde bu bilgileri tekrar sormak, kullan\u0131c\u0131 deneyimini zedeler. SQLite, bu senaryo i\u00e7in ideal bir \u00e7\u00f6z\u00fcmd\u00fcr. Her m\u00fc\u015fterinin verilerini, m\u00fc\u015fteri ID&#8217;si ile ili\u015fkilendirilmi\u015f bir tabloya kaydedebilirsiniz. \u00d6rne\u011fin, <code>MusteriGecmisi<\/code> tablosu <code>(MusteriID, SiparisID, SiparisTarihi, SorunTuru, Cozum, Tercihler)<\/code> gibi s\u00fctunlara sahip olabilir. Bot, yeni bir etkile\u015fim ba\u015flad\u0131\u011f\u0131nda, m\u00fc\u015fteri ID&#8217;sini kullanarak SQLite&#8217;dan ge\u00e7mi\u015f verileri \u00e7eker ve LLM&#8217;nin ba\u011flam penceresine ekler. B\u00f6ylece LLM, m\u00fc\u015fterinin ge\u00e7mi\u015fini bilerek daha ki\u015fiselle\u015ftirilmi\u015f ve etkili yan\u0131tlar \u00fcretebilir. Bu yakla\u015f\u0131m, karma\u015f\u0131k bir da\u011f\u0131t\u0131k sistem kurmaya gerek kalmadan, tek bir sunucuda veya hatta yerel bir uygulamada bile etkili bir uzun s\u00fcreli bellek \u00e7\u00f6z\u00fcm\u00fc sunar.<\/p>\n<h3>Bilgi Formatlama ve Modelleme: Anlam\u0131 Nas\u0131l Yakalar\u0131z?<\/h3>\n<p>Sadece veriyi depolamak yetmez; ayn\u0131 zamanda veriyi ajan\u0131n kolayca anlayabilece\u011fi ve i\u015fleyebilece\u011fi bir formatta modellemek de \u00f6nemlidir. \u0130\u015fte baz\u0131 yakla\u015f\u0131mlar:<\/p>\n<ul>\n<li><strong>Ham Metin Depolama:<\/strong> En basit y\u00f6ntem, her bellek par\u00e7as\u0131n\u0131 oldu\u011fu gibi (\u00f6rne\u011fin, bir konu\u015fma transkripti veya bir belge) saklamakt\u0131r. Geri \u00e7a\u011f\u0131rma s\u0131ras\u0131nda anahtar kelimelerle arama yap\u0131labilir.<\/li>\n<li><strong>Yap\u0131land\u0131r\u0131lm\u0131\u015f Veri:<\/strong> Bilgiyi anahtar-de\u011fer \u00e7iftleri, JSON objeleri veya ili\u015fkisel tablo kay\u0131tlar\u0131 olarak depolamak, hem depolamay\u0131 hem de sorgulamay\u0131 kolayla\u015ft\u0131r\u0131r. \u00d6rne\u011fin, bir kullan\u0131c\u0131n\u0131n &#8220;pizza sipari\u015fi&#8221; iste\u011fini sadece metin olarak de\u011fil, <code>{\"type\": \"sipari\u015f\", \"\u00fcr\u00fcn\": \"pizza\", \"boyut\": \"orta\", \"ekstralar\": [\"mantar\", \"sucuk\"], \"adres\": \"...\"}<\/code> gibi yap\u0131land\u0131r\u0131lm\u0131\u015f bir formatta saklayabilirsiniz. Bu, ajan\u0131n daha sonra bu bilgiyi daha kesin bir \u015fekilde i\u015flemesine olanak tan\u0131r.<\/li>\n<li><strong>\u00dc\u00e7l\u00fcler (Triples):<\/strong> Bilgi grafi\u011fi tabanl\u0131 yakla\u015f\u0131mlar\u0131n basitle\u015ftirilmi\u015f bir formu olan \u00fc\u00e7l\u00fcler (Subject-Predicate-Object), bilgiyi <code>(Varl\u0131k, \u0130li\u015fki, De\u011fer)<\/code> format\u0131nda ifade eder. \u00d6rne\u011fin, <code>(Ahmet, sever, kahve)<\/code> veya <code>(\u0130stanbul, sahip, n\u00fcfus)<\/code>. Bu format, karma\u015f\u0131k ili\u015fkileri ve ger\u00e7ekleri depolamak i\u00e7in g\u00fc\u00e7l\u00fcd\u00fcr ve sorgulama s\u0131ras\u0131nda ili\u015fkisel \u00e7\u0131kar\u0131mlar yapmay\u0131 kolayla\u015ft\u0131r\u0131r.<\/li>\n<\/ul>\n<p>Bilgiyi yap\u0131land\u0131rma bi\u00e7imimiz, ajan\u0131n bellekteki bilgileri ne kadar verimli bir \u015fekilde kullanabilece\u011fini do\u011frudan etkiler. Basit bir anahtar kelime aramas\u0131 i\u00e7in ham metin yeterli olabilirken, daha karma\u015f\u0131k \u00e7\u0131kar\u0131mlar ve mant\u0131ksal sorgulamalar i\u00e7in yap\u0131land\u0131r\u0131lm\u0131\u015f veya \u00fc\u00e7l\u00fc tabanl\u0131 depolama \u00e7ok daha etkilidir. Bu modeller, ajan\u0131n sadece ne s\u00f6ylendi\u011fini de\u011fil, ayn\u0131 zamanda s\u00f6ylenenlerin ne anlama geldi\u011fini ve di\u011fer bilgilerle nas\u0131l ili\u015fkili oldu\u011funu da anlamas\u0131na yard\u0131mc\u0131 olur. B\u00f6ylece, vekt\u00f6r DB&#8217;lerin anlamsal g\u00fc\u00e7lerini taklit etme yolunda \u00f6nemli bir ad\u0131m atm\u0131\u015f oluruz.<\/p>\n<h2>Bellek Mekanizmalar\u0131n\u0131 Olu\u015fturma: Ajan\u0131n\u0131z Bilgiyi Nas\u0131l Hat\u0131rlar?<\/h2>\n<p>Bir AI ajan\u0131 i\u00e7in uzun s\u00fcreli bellek olu\u015fturmak, sadece veriyi bir yere kaydetmekten ibaret de\u011fildir; ayn\u0131 zamanda bu verinin nas\u0131l eklenece\u011fi, g\u00fcncellenece\u011fi ve en \u00f6nemlisi, ihtiya\u00e7 duyuldu\u011funda nas\u0131l geri \u00e7a\u011fr\u0131laca\u011f\u0131yla ilgilidir. Bu s\u00fcre\u00e7ler, ajan\u0131n zekas\u0131n\u0131n ve kullan\u0131\u015fl\u0131l\u0131\u011f\u0131n\u0131n temelini olu\u015fturur.<\/p>\n<h3>Bilgi Ekleme ve G\u00fcncelleme Stratejileri<\/h3>\n<p>Ajan\u0131n yeni bilgileri belle\u011fine nas\u0131l kaydedece\u011fi ve mevcut bilgileri nas\u0131l g\u00fcncelleyece\u011fi, bellek sisteminin verimlili\u011fi i\u00e7in kritik \u00f6neme sahiptir. \u0130\u015fte baz\u0131 stratejiler:<\/p>\n<ul>\n<li><strong>Otomatik \u00d6\u011frenme ve \u00c7\u0131karma:<\/strong> Ajan, etkile\u015fimler s\u0131ras\u0131nda do\u011fal dil i\u015fleme (NLP) yeteneklerini kullanarak \u00f6nemli bilgileri otomatik olarak \u00e7\u0131karabilir. \u00d6rne\u011fin, bir sohbet botu, kullan\u0131c\u0131n\u0131n &#8220;En sevdi\u011fim renk mavidir&#8221; dedi\u011fini duydu\u011funda, bu bilgiyi <code>{\"kullanici_id\": \"...\", \"tercih_tipi\": \"favori_renk\", \"deger\": \"mavi\"}<\/code> gibi yap\u0131land\u0131r\u0131lm\u0131\u015f bir formatta belle\u011fine kaydedebilir. Bu \u00e7\u0131karma i\u015flemi, LLM&#8217;nin kendisi taraf\u0131ndan veya daha k\u00fc\u00e7\u00fck, \u00f6zel olarak e\u011fitilmi\u015f NLP modelleriyle yap\u0131labilir.\n<pre><code>\n        def extract_and_store_preference(user_id, text, memory_db):\n            # LLM'e metni vererek \u00f6nemli bilgileri \u00e7\u0131karmas\u0131n\u0131 isteyin\n            # \u00d6rnek: \"En sevdi\u011fim renk mavidir\" -> {\"tercih_tipi\": \"favori_renk\", \"deger\": \"mavi\"}\n            extracted_info = llm_extract_preferences(text) \n            if extracted_info:\n                memory_db.add_memory(user_id, \"user_preference\", extracted_info)\n                print(f\"Belle\u011fe eklendi: {extracted_info}\")\n            else:\n                print(\"Bilgi \u00e7\u0131kar\u0131lamad\u0131.\")\n        <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki kod \u00f6rne\u011fi, bir metinden \u00f6nemli bir tercihin nas\u0131l \u00e7\u0131kar\u0131l\u0131p belle\u011fe kaydedilebilece\u011fini g\u00f6stermektedir. Burada <code>llm_extract_preferences<\/code> fonksiyonunun, LLM API'sine bir \u00e7a\u011fr\u0131 yaparak metni analiz edip yap\u0131land\u0131r\u0131lm\u0131\u015f bir bilgi d\u00f6nd\u00fcrd\u00fc\u011f\u00fc varsay\u0131l\u0131r.<\/p>\n<\/li>\n<li><strong>D\u0131\u015far\u0131dan Bilgi Y\u00fckleme:<\/strong> Ajan\u0131n belle\u011fi, \u00f6nceden haz\u0131rlanm\u0131\u015f veri setleri (\u00f6rne\u011fin, bir \u015firket politikalar\u0131 dok\u00fcman\u0131, \u00fcr\u00fcn katalo\u011fu veya bir Wikipedia \u00f6zeti) ile beslenebilir. Bu bilgiler genellikle ilk kurulumda veya periyodik g\u00fcncellemelerle y\u00fcklenir. Bu veriler de yap\u0131land\u0131r\u0131lm\u0131\u015f (JSON, CSV) veya ham metin olarak depolanabilir.<\/li>\n<li><strong>De\u011fi\u015fiklik \u0130zleme ve Tutarl\u0131l\u0131k:<\/strong> Bir bilgi g\u00fcncellendi\u011finde, bellekteki ilgili t\u00fcm kay\u0131tlar\u0131n da g\u00fcncellendi\u011finden emin olmak \u00f6nemlidir. \u00d6rne\u011fin, bir kullan\u0131c\u0131n\u0131n telefon numaras\u0131 de\u011fi\u015fti\u011finde, ajan bu bilgiyi eski numaray\u0131 silip yenisiyle de\u011fi\u015ftirmelidir. Bu, zaman damgalar\u0131 (timestamp) ve versiyonlama gibi mekanizmalarla y\u00f6netilebilir. Bilginin ne zaman eklendi\u011fini veya son g\u00fcncellendi\u011fini bilmek, ajan\u0131n zamanla eskiyen bilgileri fark etmesine ve onlar\u0131 daha g\u00fcncel olanlarla de\u011fi\u015ftirmesine yard\u0131mc\u0131 olabilir.<\/li>\n<\/ul>\n<h3>Ba\u011flamsal Geri \u00c7a\u011f\u0131rma (Retrieval) Teknikleri<\/h3>\n<p>Depolanan bilginin ger\u00e7ek de\u011feri, ihtiya\u00e7 duyuldu\u011funda do\u011fru ve ilgili par\u00e7alar\u0131n geri \u00e7a\u011fr\u0131labilmesidir. Vekt\u00f6r DB'siz bir ortamda, anlamsal aramay\u0131 taklit etmek i\u00e7in farkl\u0131 stratejiler izleyebiliriz:<\/p>\n<ul>\n<li><strong>Anahtar Kelime Tabanl\u0131 Arama (Full-Text Search):<\/strong> Bu, en temel geri \u00e7a\u011f\u0131rma y\u00f6ntemidir. Kullan\u0131c\u0131n\u0131n sorgusundaki anahtar kelimeleri veya LLM taraf\u0131ndan t\u00fcretilen anahtar kelimeleri kullanarak bellekteki metin alanlar\u0131nda arama yap\u0131l\u0131r. SQLite'\u0131n FTS5 (Full-Text Search 5) uzant\u0131s\u0131 veya Redis Search mod\u00fcl\u00fc gibi ara\u00e7lar, bu t\u00fcr aramalar\u0131 olduk\u00e7a h\u0131zl\u0131 ve etkili bir \u015fekilde ger\u00e7ekle\u015ftirebilir.\n<pre><code>\n        import sqlite3\n\n        def retrieve_with_keywords(query_keywords, db_path=\"memory.db\"):\n            conn = sqlite3.connect(db_path)\n            cursor = conn.cursor()\n            # \u00d6rnek: 'memory_table' ad\u0131nda bir tablonuz ve 'content' ad\u0131nda bir s\u00fctununuz var.\n            # FTS5 i\u00e7in tabloyu ayr\u0131 bir \u015fekilde olu\u015fturmak gerekir.\n            # Diyelim ki 'memory_fts' ad\u0131nda FTS5 \u00f6zellikli bir tablonuz var.\n            query_str = \" OR \".join([f\"content MATCH '{kw}*'\" for kw in query_keywords])\n            cursor.execute(f\"SELECT id, content FROM memory_fts WHERE {query_str} LIMIT 5\")\n            results = cursor.fetchall()\n            conn.close()\n            return results\n        <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki Python kodu, SQLite FTS5 kullanarak anahtar kelime tabanl\u0131 bir arama yapmay\u0131 g\u00f6stermektedir. Arama sorgusu, birden fazla anahtar kelimeyi 'OR' ile birle\u015ftirerek daha geni\u015f bir e\u015fle\u015fme yelpazesi sunar.<\/p>\n<\/li>\n<li><strong>Pattern Matching (Regex):<\/strong> \u00d6zellikle yap\u0131land\u0131r\u0131lm\u0131\u015f verilerde veya belirli desenleri i\u00e7eren metinlerde, d\u00fczenli ifadeler (regular expressions) kullanarak belirli kal\u0131plara uyan bilgileri bulmak m\u00fcmk\u00fcnd\u00fcr. \u00d6rne\u011fin, belirli bir proje kodunu veya tarih format\u0131n\u0131 aramak i\u00e7in kullan\u0131labilir.<\/li>\n<li><strong>LLM Kullanarak \u00d6zetleme ve \u00c7\u0131karma:<\/strong> Bu, belki de en g\u00fc\u00e7l\u00fc ve vekt\u00f6r DB'siz en \"anlamsal\" yakla\u015f\u0131mlardan biridir. Bellekteki t\u00fcm bilgiler (veya belirli filtrelerle daralt\u0131lm\u0131\u015f bir alt k\u00fcme), LLM'nin ba\u011flam penceresine s\u0131\u011facak \u015fekilde \u00f6zetlenebilir veya belirli bir soruyu yan\u0131tlamak i\u00e7in do\u011frudan LLM'ye sunulabilir. LLM, bu b\u00fcy\u00fck metin bloklar\u0131ndan en alakal\u0131 bilgileri \"okuyup\" \u00e7\u0131karabilir ve \u00f6zetleyebilir.\n<pre><code>\n        def retrieve_with_llm_summarization(query, all_memories, llm_api_call):\n            # T\u00fcm bellek par\u00e7alar\u0131n\u0131 (veya filtrelenmi\u015f bir alt k\u00fcmesini) bir stringde birle\u015ftirin\n            context_string = \"\\n\".join([mem[\"content\"] for mem in all_memories])\n\n            # LLM'e belle\u011fi ve sorguyu vererek ilgili bilgiyi \u00e7\u0131karmas\u0131n\u0131 isteyin\n            prompt = f\"A\u015fa\u011f\u0131daki bellek par\u00e7alar\u0131ndan '{query}' sorusuna cevap verin ve \u00f6zeti \u00e7\u0131kar\u0131n:\\n\\n{context_string}\\n\\nCevap:\"\n            response = llm_api_call(prompt) # LLM API'sine \u00e7a\u011fr\u0131\n            return response\n        <\/pre>\n<p><\/code><\/p>\n<p>Bu y\u00f6ntem, LLM'nin anlama yetene\u011fini kullanarak, anahtar kelime aramalar\u0131n\u0131n ka\u00e7\u0131rabilece\u011fi daha derin anlamsal ili\u015fkileri ortaya \u00e7\u0131karabilir. Elbette, bu yakla\u015f\u0131m LLM \u00e7a\u011fr\u0131 maliyetlerini ve gecikmesini art\u0131rabilir, bu y\u00fczden dikkatli kullan\u0131lmal\u0131d\u0131r (\u00f6rne\u011fin, ilk \u00f6nce anahtar kelime aramas\u0131 yap\u0131p ard\u0131ndan sadece \u00e7\u0131kan sonu\u00e7lar\u0131 LLM'ye vermek gibi karma bir strateji izlenebilir).<\/p>\n<\/ul>\n<p>Bu stratejilerin kombinasyonu, AI ajan\u0131n\u0131z\u0131n ba\u011flam\u0131 daha iyi anlamas\u0131n\u0131, ge\u00e7mi\u015f deneyimlerinden ders \u00e7\u0131karmas\u0131n\u0131 ve b\u00f6ylece daha ak\u0131ll\u0131, ki\u015fiselle\u015ftirilmi\u015f ve kullan\u0131\u015fl\u0131 yan\u0131tlar \u00fcretmesini sa\u011flayacakt\u0131r. Vekt\u00f6r DB'lere alternatif olarak, bu y\u00f6ntemler genellikle daha h\u0131zl\u0131 kurulum, daha d\u00fc\u015f\u00fck maliyet ve daha do\u011frudan kontrol sunar. \u00d6nemli olan, projenizin ihtiya\u00e7lar\u0131na en uygun depolama ve geri \u00e7a\u011f\u0131rma mekanizmalar\u0131n\u0131 se\u00e7mek ve bunlar\u0131 ajan\u0131n genel mimarisine entegre etmektir.<\/p>\n<h2>Uygulamal\u0131 K\u0131s\u0131m: Basit Bir Bellek Sistemi Kurulumu<\/h2>\n<p>\u015eimdi pratik bir \u00f6rnek \u00fczerinden, AI ajan\u0131 i\u00e7in vekt\u00f6r veritaban\u0131 kullanmadan nas\u0131l basit bir uzun s\u00fcreli bellek sistemi kurabilece\u011fimizi g\u00f6relim. Senaryomuz, bir \"Proje Y\u00f6netim Asistan\u0131\" botu geli\u015ftirmek olsun. Bu asistan\u0131n, farkl\u0131 projelerle ilgili g\u00f6revleri, toplant\u0131 notlar\u0131n\u0131 ve \u00f6nemli kararlar\u0131 hat\u0131rlamas\u0131 gerekecek.<\/p>\n<h3>Ad\u0131m 1: Bellek Yap\u0131s\u0131 Tan\u0131mlama (SQLite ve JSON)<\/h3>\n<p>Bu \u00f6rnekte, bilgiyi hem yap\u0131land\u0131r\u0131lm\u0131\u015f hem de esnek bir \u015fekilde saklamak i\u00e7in SQLite veritaban\u0131n\u0131 kullanaca\u011f\u0131z. Her bellek par\u00e7ac\u0131\u011f\u0131 i\u00e7in bir JSON belgesi kullanaca\u011f\u0131z, ancak bu JSON'lar\u0131 SQLite tablosundaki bir metin s\u00fctununda saklayaca\u011f\u0131z. B\u00f6ylece, hem SQL'in sorgulama g\u00fcc\u00fcnden faydalanabilir hem de JSON'un esnekli\u011finden \u00f6d\u00fcn vermemi\u015f oluruz.<\/p>\n<p>Veritaban\u0131 tablomuz <code>agent_memory<\/code> ad\u0131n\u0131 ta\u015f\u0131yacak ve \u015fu s\u00fctunlara sahip olacak:<\/p>\n<ul>\n<li><code>id<\/code> (INTEGER PRIMARY KEY AUTOINCREMENT): Bellek girdisinin benzersiz kimli\u011fi.<\/li>\n<li><code>timestamp<\/code> (TEXT): Girdinin olu\u015fturuldu\u011fu zaman damgas\u0131.<\/li>\n<li><code>type<\/code> (TEXT): Bellek girdisinin t\u00fcr\u00fc (\u00f6rn: 'task', 'meeting_note', 'decision', 'user_preference').<\/li>\n<li><code>project_id<\/code> (TEXT): Hangi projeyle ilgili oldu\u011funu belirten ID.<\/li>\n<li><code>content<\/code> (TEXT): As\u0131l bellek i\u00e7eri\u011fini bar\u0131nd\u0131ran JSON string'i.<\/li>\n<\/ul>\n<p>\u00d6rnek bir <code>content<\/code> JSON yap\u0131s\u0131 \u015f\u00f6yle olabilir:<\/p>\n<pre><code>\n{\n    \"title\": \"Yeni \u00d6zellik Geli\u015ftirme Toplant\u0131s\u0131\",\n    \"description\": \"API entegrasyonu i\u00e7in gereksinimler belirlendi.\",\n    \"participants\": [\"Alice\", \"Bob\"],\n    \"action_items\": [\n        {\"task\": \"Dok\u00fcmantasyon haz\u0131rla\", \"assignee\": \"Alice\"},\n        {\"task\": \"Endpointleri test et\", \"assignee\": \"Bob\"}\n    ],\n    \"keywords\": [\"API\", \"entegrasyon\", \"gereksinimler\"]\n}\n<\/pre>\n<p><\/code><\/p>\n<p>\u015eimdi veritaban\u0131n\u0131 ve tabloyu olu\u015ftural\u0131m:<\/p>\n<pre><code>\nimport sqlite3\nimport json\nimport datetime\n\ndef setup_database(db_path=\"agent_memory.db\"):\n    conn = sqlite3.connect(db_path)\n    cursor = conn.cursor()\n    cursor.execute(\"\"\"\n        CREATE TABLE IF NOT EXISTS agent_memory (\n            id INTEGER PRIMARY KEY AUTOINCREMENT,\n            timestamp TEXT,\n            type TEXT,\n            project_id TEXT,\n            content TEXT\n        )\n    \"\"\")\n    conn.commit()\n    conn.close()\n    print(f\"Veritaban\u0131 ve 'agent_memory' tablosu olu\u015fturuldu veya zaten var: {db_path}\")\n\n# Veritaban\u0131n\u0131 kurmak i\u00e7in \u00e7a\u011f\u0131r\u0131n\nsetup_database()\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kodu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, belirtti\u011finiz yolda (varsay\u0131lan olarak <code>agent_memory.db<\/code>) bir SQLite veritaban\u0131 dosyas\u0131 olu\u015fturulacak ve i\u00e7inde <code>agent_memory<\/code> tablosu haz\u0131r olacakt\u0131r.<\/p>\n<h3>Ad\u0131m 2: Belle\u011fe Yazma Fonksiyonu<\/h3>\n<p>Ajan\u0131n yeni bilgileri belle\u011fine eklemesini sa\u011flayacak bir fonksiyon yazal\u0131m. Bu fonksiyon, JSON i\u00e7eri\u011fini string'e d\u00f6n\u00fc\u015ft\u00fcrerek veritaban\u0131na kaydedecek.<\/p>\n<pre><code>\ndef add_memory(db_path, memory_type, project_id, content_dict):\n    conn = sqlite3.connect(db_path)\n    cursor = conn.cursor()\n    timestamp = datetime.datetime.now().isoformat()\n    content_json = json.dumps(content_dict, ensure_ascii=False) # T\u00fcrk\u00e7e karakterler i\u00e7in ensure_ascii=False\n    \n    cursor.execute(\"\"\"\n        INSERT INTO agent_memory (timestamp, type, project_id, content)\n        VALUES (?, ?, ?, ?)\n    \"\"\", (timestamp, memory_type, project_id, content_json))\n    \n    conn.commit()\n    conn.close()\n    print(f\"Belle\u011fe eklendi: Tip='{memory_type}', Proje='{project_id}'\")\n\n# \u00d6rnek bellek eklemeleri:\nadd_memory(\"agent_memory.db\", \"meeting_note\", \"project_alpha\", {\n    \"title\": \"Haftal\u0131k Senkronizasyon\",\n    \"description\": \"Ekip, projenin mevcut durumu hakk\u0131nda bilgi ald\u0131. Yeni g\u00f6revler atand\u0131.\",\n    \"participants\": [\"Ay\u015fe\", \"Mehmet\"],\n    \"action_items\": [\n        {\"task\": \"Raporu bitir\", \"assignee\": \"Ay\u015fe\"},\n        {\"task\": \"Test senaryolar\u0131n\u0131 yaz\", \"assignee\": \"Mehmet\"}\n    ],\n    \"keywords\": [\"senkronizasyon\", \"haftal\u0131k\", \"rapor\", \"test\"]\n})\n\nadd_memory(\"agent_memory.db\", \"task\", \"project_alpha\", {\n    \"name\": \"Kullan\u0131c\u0131 aray\u00fcz\u00fc tasar\u0131m\u0131\",\n    \"status\": \"devam ediyor\",\n    \"priority\": \"y\u00fcksek\",\n    \"due_date\": \"2023-12-31\",\n    \"assigned_to\": \"Ay\u015fe\",\n    \"description\": \"Yeni \u00f6zellik i\u00e7in aray\u00fcz tasla\u011f\u0131n\u0131 tamamla.\",\n    \"keywords\": [\"UI\", \"tasar\u0131m\", \"aray\u00fcz\"]\n})\n\nadd_memory(\"agent_memory.db\", \"decision\", \"project_beta\", {\n    \"context\": \"Veritaban\u0131 se\u00e7imi\",\n    \"decision_made\": \"NoSQL yerine ili\u015fkisel veritaban\u0131 kullanma karar\u0131 al\u0131nd\u0131.\",\n    \"reason\": \"Veri tutarl\u0131l\u0131\u011f\u0131 ve karma\u015f\u0131k sorgular i\u00e7in daha uygun.\",\n    \"keywords\": [\"veritaban\u0131\", \"se\u00e7im\", \"NoSQL\", \"ili\u015fkisel\"]\n})\n<\/pre>\n<p><\/code><\/p>\n<h3>Ad\u0131m 3: Bellekten Okuma\/Arama Fonksiyonu<\/h3>\n<p>Ajan\u0131n belle\u011finden bilgi \u00e7ekmesini sa\u011flayacak bir fonksiyon geli\u015ftirelim. Bu fonksiyon, belirli filtreler (t\u00fcr, proje ID'si) ve anahtar kelimeler kullanarak belle\u011fi arayacak. SQLite'\u0131n <code>LIKE<\/code> operat\u00f6r\u00fc ile basit metin aramalar\u0131 yapabilir veya daha geli\u015fmi\u015f aramalar i\u00e7in FTS5 kullanabiliriz (bu \u00f6rnekte basit <code>LIKE<\/code> kullanaca\u011f\u0131z, ancak FTS5'in potansiyelini unutmay\u0131n).<\/p>\n<pre><code>\ndef retrieve_memory(db_path, query=\"\", memory_type=None, project_id=None, limit=5):\n    conn = sqlite3.connect(db_path)\n    cursor = conn.cursor()\n    \n    sql_query = \"SELECT timestamp, type, project_id, content FROM agent_memory WHERE 1=1\"\n    params = []\n\n    if memory_type:\n        sql_query += \" AND type = ?\"\n        params.append(memory_type)\n    \n    if project_id:\n        sql_query += \" AND project_id = ?\"\n        params.append(project_id)\n        \n    if query:\n        # JSON i\u00e7eri\u011finde anahtar kelime arama. Bu, t\u00fcm JSON string'ini arar.\n        # Daha spesifik aramalar i\u00e7in JSON_EXTRACT veya FTS5 gereklidir.\n        sql_query += \" AND content LIKE ?\"\n        params.append(f\"%{query}%\")\n        \n    sql_query += \" ORDER BY timestamp DESC LIMIT ?\"\n    params.append(limit)\n    \n    cursor.execute(sql_query, tuple(params))\n    results = cursor.fetchall()\n    conn.close()\n    \n    parsed_results = []\n    for row in results:\n        timestamp, m_type, p_id, content_json = row\n        parsed_content = json.loads(content_json)\n        parsed_results.append({\n            \"timestamp\": timestamp,\n            \"type\": m_type,\n            \"project_id\": p_id,\n            \"content\": parsed_content\n        })\n    return parsed_results\n\n# \u00d6rnek bellek aramalar\u0131:\nprint(\"\\n--- 'project_alpha' projesindeki g\u00f6revler ---\")\ntasks = retrieve_memory(\"agent_memory.db\", memory_type=\"task\", project_id=\"project_alpha\")\nfor task in tasks:\n    print(f\"- [{task['timestamp']}] G\u00f6rev: {task['content']['name']} (Durum: {task['content']['status']})\")\n\nprint(\"\\n--- 'API' anahtar kelimesini i\u00e7eren bellekler ---\")\napi_memories = retrieve_memory(\"agent_memory.db\", query=\"API\")\nfor mem in api_memories:\n    print(f\"- [{mem['timestamp']}] Tip: {mem['type']}, Proje: {mem['project_id']}, Ba\u015fl\u0131k: {mem['content'].get('title', 'N\/A')}\")\n\nprint(\"\\n--- Mehmet ile ilgili t\u00fcm bellekler (JSON i\u00e7eri\u011finde ara) ---\")\nmehmet_memories = retrieve_memory(\"agent_memory.db\", query=\"Mehmet\")\nfor mem in mehmet_memories:\n    print(f\"- [{mem['timestamp']}] Tip: {mem['type']}, Proje: {mem['project_id']}, \u0130\u00e7erik \u00d6zeti: {mem['content'].get('description', mem['content'].get('name', 'N\/A'))}\")\n<\/pre>\n<p><\/code><\/p>\n<p>Bu kod par\u00e7ac\u0131klar\u0131, basit bir proje y\u00f6netim asistan\u0131n\u0131n nas\u0131l bellek ekleyip arayabilece\u011fini g\u00f6steriyor. Ajan\u0131n\u0131z, gelen sorgular\u0131 analiz ederek (yine bir LLM yard\u0131m\u0131yla) hangi <code>memory_type<\/code>, <code>project_id<\/code> veya <code>query<\/code> anahtar kelimelerinin kullan\u0131laca\u011f\u0131na karar verebilir ve bu fonksiyonlar\u0131 \u00e7a\u011f\u0131rarak ilgili bilgileri alabilir. Daha sonra bu al\u0131nan bilgiyi LLM'nin ba\u011flam penceresine ekleyerek daha ak\u0131ll\u0131 ve bilgili yan\u0131tlar \u00fcretebilir.<\/p>\n<blockquote>\n<p><b>Uzman \u0130pucu:<\/b> SQLite'\u0131n dahili JSON fonksiyonlar\u0131 (<code>JSON_EXTRACT<\/code>, <code>JSON_EACH<\/code> vb.) ve FTS5 uzant\u0131s\u0131 ile <code>content<\/code> s\u00fctunu i\u00e7indeki JSON verileri \u00fczerinde \u00e7ok daha geli\u015fmi\u015f ve h\u0131zl\u0131 aramalar yapabilirsiniz. \u00d6rne\u011fin, <code>SELECT * FROM agent_memory WHERE JSON_EXTRACT(content, '$.status') = 'devam ediyor'<\/code> gibi sorgularla JSON alanlar\u0131na do\u011frudan filtre uygulayabilirsiniz.<\/p>\n<\/blockquote>\n<p>Bu temel yap\u0131, AI ajan\u0131n\u0131z i\u00e7in olduk\u00e7a i\u015flevsel bir uzun s\u00fcreli bellek \u00e7\u00f6z\u00fcm\u00fc sunar. Geli\u015ftirece\u011finiz ajan\u0131n t\u00fcr\u00fcne ve ihtiya\u00e7lar\u0131na g\u00f6re bu yap\u0131y\u0131 daha da geni\u015fletebilir ve optimize edebilirsiniz. \u00d6rne\u011fin, Redis gibi bir arac\u0131, s\u0131k eri\u015filen son 100 bellek par\u00e7as\u0131n\u0131 \u00f6nbelle\u011fe almak i\u00e7in kullan\u0131rken, t\u00fcm kal\u0131c\u0131 verileri SQLite'ta tutabilirsiniz. Bu katmanl\u0131 yakla\u015f\u0131m, hem performans\u0131 art\u0131r\u0131r hem de bellek y\u00f6netimini daha verimli hale getirir.<\/p>\n<h2>Performans ve \u00d6l\u00e7eklenebilirlik \u0130pu\u00e7lar\u0131: Belle\u011finizi Nas\u0131l Optimize Edersiniz?<\/h2>\n<p>AI ajan\u0131n\u0131z\u0131n uzun s\u00fcreli bellek sistemi b\u00fcy\u00fcd\u00fck\u00e7e, performans ve \u00f6l\u00e7eklenebilirlik \u00f6nemli hale gelir. Vekt\u00f6r veritaban\u0131 kullanmadan da bellek sisteminizi optimize etmek i\u00e7in uygulayabilece\u011finiz baz\u0131 stratejiler mevcuttur.<\/p>\n<h3>Bilgi \u0130ndeksleme<\/h3>\n<p>Bellek veritaban\u0131n\u0131zdaki (\u00f6rne\u011fin SQLite) ilgili s\u00fctunlara indeksler eklemek, arama sorgular\u0131n\u0131n h\u0131z\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. \u00d6zellikle <code>type<\/code>, <code>project_id<\/code> gibi s\u0131k\u00e7a filtrelenen s\u00fctunlara indeks eklemek faydal\u0131d\u0131r. E\u011fer metin tabanl\u0131 arama yap\u0131yorsan\u0131z, tam metin indeksleme (Full-Text Search) \u00e7\u00f6z\u00fcmlerini d\u00fc\u015f\u00fcnmelisiniz.<\/p>\n<ul>\n<li><strong>SQLite FTS5:<\/strong> SQLite i\u00e7in FTS5, metin tabanl\u0131 aramalarda ola\u011fan\u00fcst\u00fc performans sa\u011flar. Bellek i\u00e7eriklerinizi ayr\u0131 bir FTS5 tablosunda depolayarak veya mevcut tablonuza ba\u011flayarak metin aramalar\u0131n\u0131 h\u0131zland\u0131rabilirsiniz. \u00d6rne\u011fin:\n<pre><code>\n        -- FTS5 tablosu olu\u015fturma \u00f6rne\u011fi\n        CREATE VIRTUAL TABLE agent_memory_fts USING fts5(\n            content,\n            id UNINDEXED,\n            type UNINDEXED,\n            project_id UNINDEXED\n        );\n        -- Ana agent_memory tablosundaki verileri FTS5 tablosuna kopyalama\n        INSERT INTO agent_memory_fts(rowid, content, type, project_id)\n        SELECT id, content, type, project_id FROM agent_memory;\n        -- Arama \u00f6rne\u011fi:\n        SELECT T1.timestamp, T1.type, T1.project_id, T1.content \n        FROM agent_memory AS T1 JOIN agent_memory_fts AS T2 ON T1.id = T2.rowid \n        WHERE T2.content MATCH 'API*' ORDER BY T1.timestamp DESC LIMIT 5;\n        <\/pre>\n<p><\/code><\/p>\n<p>Bu, do\u011frudan <code>LIKE &#039;%query%&#039;<\/code> kullanmaktan \u00e7ok daha h\u0131zl\u0131 ve esnek bir arama sa\u011flar.<\/p>\n<\/li>\n<li><strong>Redis Search:<\/strong> E\u011fer Redis kullan\u0131yorsan\u0131z, Redis Search mod\u00fcl\u00fc geli\u015fmi\u015f indeksleme ve sorgulama yetenekleri sunar. Anahtar-de\u011fer \u00e7iftlerinizin \u00fczerinde tam metin aramalar\u0131, alan bazl\u0131 aramalar ve co\u011frafi aramalar yapabilirsiniz.<\/li>\n<\/ul>\n<h3>Bellek Temizleme ve S\u0131k\u0131\u015ft\u0131rma<\/h3>\n<p>Bellek sistemi zamanla \u00e7ok fazla gereksiz veya eski bilgi biriktirebilir. Bu durum, arama s\u00fcrelerini uzatabilir ve depolama maliyetlerini art\u0131rabilir. D\u00fczenli olarak bellek temizli\u011fi ve s\u0131k\u0131\u015ft\u0131rma i\u015flemleri yapmak \u00f6nemlidir:<\/p>\n<ul>\n<li><strong>Eskimi\u015f Bilgileri Ar\u015fivleme\/Silme:<\/strong> Belirli bir ya\u015ftan (\u00f6rn: 1 y\u0131l) sonra kritik olmayan bilgileri otomatik olarak ar\u015fivleyebilir veya silebilirsiniz.<\/li>\n<li><strong>\u00d6zetleme:<\/strong> \u00c7ok detayl\u0131 bellek par\u00e7alar\u0131n\u0131 daha k\u0131sa \u00f6zetlere d\u00f6n\u00fc\u015ft\u00fcrerek depolama boyutunu k\u00fc\u00e7\u00fcltebilirsiniz. Bu, \u00f6zellikle LLM'nin \u00f6zetleme yetenekleriyle birle\u015ftirildi\u011finde g\u00fc\u00e7l\u00fc bir stratejidir.<\/li>\n<li><strong>Tekille\u015ftirme:<\/strong> Ayn\u0131 bilginin birden fazla kopyas\u0131 varsa, bunlar\u0131 birle\u015ftirmek veya referanslamak depolama alan\u0131ndan tasarruf sa\u011flar.<\/li>\n<\/ul>\n<h3>Katmanl\u0131 Bellek Mimarisi<\/h3>\n<p>Performans ve maliyet aras\u0131nda denge kurmak i\u00e7in katmanl\u0131 bir bellek mimarisi kullanabilirsiniz. Bu, \"s\u0131cak\" veriyi (s\u0131k eri\u015filen) \"so\u011fuk\" veriden (nadir eri\u015filen) ay\u0131rma prensibine dayan\u0131r:<\/p>\n<ul>\n<li><strong>H\u0131zl\u0131 Eri\u015fim Katman\u0131 (\u00d6nbellek):<\/strong> S\u0131k\u00e7a ihtiya\u00e7 duyulan veya son kullan\u0131lan bilgileri Redis gibi bellek i\u00e7i bir \u00f6nbellekte tutun. Bu, ajan\u0131n yan\u0131t s\u00fcrelerini dramatik \u015fekilde k\u0131salt\u0131r.\n<pre><code>\n        import redis\n\n        # Redis ba\u011flant\u0131s\u0131\n        r = redis.Redis(host='localhost', port=6379, db=0)\n\n        def add_to_cache(key, value, expiry_seconds=3600):\n            r.setex(key, expiry_seconds, json.dumps(value))\n\n        def get_from_cache(key):\n            cached_data = r.get(key)\n            return json.loads(cached_data) if cached_data else None\n\n        # \u00d6rnek kullan\u0131m: S\u0131k\u00e7a sorulan bir sorunun cevab\u0131n\u0131 \u00f6nbelle\u011fe al\n        # cached_answer = {\"soru\": \"AI nedir?\", \"cevap\": \"Yapay zeka...\"}\n        # add_to_cache(\"faq:ai_nedir\", cached_answer)\n        <\/pre>\n<p><\/code>\n    <\/li>\n<li><strong>Kal\u0131c\u0131 Depolama Katman\u0131:<\/strong> T\u00fcm kal\u0131c\u0131 ve kapsaml\u0131 bilgileri SQLite veya daha b\u00fcy\u00fck \u00f6l\u00e7ekli projeler i\u00e7in PostgreSQL\/MySQL gibi geleneksel bir ili\u015fkisel veritaban\u0131nda saklay\u0131n. Ajan \u00f6nce \u00f6nbelle\u011fe bakar, bilgi orada yoksa kal\u0131c\u0131 depolama katman\u0131na sorgu g\u00f6nderir.<\/li>\n<\/ul>\n<blockquote>\n<p><b>Uzman \u0130pucu:<\/b> Belle\u011finizi d\u00fczenli olarak analiz ederek en \u00e7ok kullan\u0131lan ve en kritik bilgileri belirleyin. Bu \"s\u0131cak\" bilgileri h\u0131zl\u0131 eri\u015fim katman\u0131na (\u00f6rne\u011fin Redis \u00f6nbellek) ta\u015f\u0131yarak genel performans\u0131 %40'a kadar art\u0131rabilirsiniz. Ayr\u0131ca, az kullan\u0131lan \"so\u011fuk\" verileri daha uygun maliyetli, yava\u015f depolama \u00e7\u00f6z\u00fcmlerine (\u00f6rne\u011fin dosya sistemindeki s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f JSON'lar) ta\u015f\u0131y\u0131n.<\/p>\n<\/blockquote>\n<h3>Bellek Par\u00e7alama (Sharding) veya Da\u011f\u0131t\u0131k Sistemler<\/h3>\n<p>E\u011fer ajan\u0131n bellek y\u00fck\u00fc tek bir veritaban\u0131n\u0131n veya sunucunun ta\u015f\u0131yamayaca\u011f\u0131 kadar b\u00fcy\u00fcrse, veriyi birden fazla sunucuya veya veritaban\u0131na da\u011f\u0131tmak (sharding) gerekebilir. Bu, daha karma\u015f\u0131k bir kurulum gerektirse de, sistemin yatay \u00f6l\u00e7eklenmesine olanak tan\u0131r. \u00d6rne\u011fin, farkl\u0131 projelerin belleklerini ayr\u0131 SQLite dosyalar\u0131nda tutmak ve ilgili projeye \u00f6zel veritaban\u0131n\u0131 y\u00fcklemek basit bir par\u00e7alama \u00f6rne\u011fi olabilir.<\/p>\n<p>Bu ipu\u00e7lar\u0131n\u0131 uygulayarak, vekt\u00f6r veritaban\u0131 kullanmadan bile AI ajan\u0131n\u0131z i\u00e7in sa\u011flam, performansl\u0131 ve \u00f6l\u00e7eklenebilir bir uzun s\u00fcreli bellek sistemi olu\u015fturabilirsiniz. Anahtar, projenizin mevcut ve gelecekteki ihtiya\u00e7lar\u0131n\u0131 do\u011fru bir \u015fekilde de\u011ferlendirmek ve buna uygun bir mimari se\u00e7mektir.<\/p>\n<h2>Gelece\u011fe Y\u00f6nelik Bak\u0131\u015f: Daha Ak\u0131ll\u0131 Bellek Sistemleri<\/h2>\n<p>AI ajanlar\u0131 i\u00e7in uzun s\u00fcreli bellek sistemlerini geli\u015ftirmek, sadece bilginin depolanmas\u0131ndan ibaret de\u011fildir; ayn\u0131 zamanda bu bilginin nas\u0131l organize edildi\u011fi, ili\u015fkilendirildi\u011fi ve zamanla nas\u0131l evrildi\u011fi ile de ilgilidir. Vekt\u00f6r veritaban\u0131 kullanmasak bile, ajan\u0131n bellek yeteneklerini art\u0131rmak i\u00e7in ileri d\u00fczey yakla\u015f\u0131mlar mevcuttur.<\/p>\n<h3>Hiyerar\u015fik Bellek Modelleri: Genelden \u00d6zele Bilgi Saklama<\/h3>\n<p>\u0130nsan beyni, bilgiyi d\u00fcz bir liste halinde saklamaz; bunun yerine, kavramlar\u0131 ve an\u0131lar\u0131 hiyerar\u015fik bir yap\u0131da d\u00fczenler. Benzer bir yakla\u015f\u0131m AI ajanlar\u0131 i\u00e7in de uygulanabilir. Bu, bilginin farkl\u0131 soyutlama seviyelerinde saklanmas\u0131 anlam\u0131na gelir:<\/p>\n<ul>\n<li><strong>Genel Bellek (Global Context):<\/strong> T\u00fcm projeler veya kullan\u0131c\u0131lar i\u00e7in ge\u00e7erli olan y\u00fcksek seviyeli bilgiler (\u015firket politikalar\u0131, genel \u00fcr\u00fcn bilgisi, ajan\u0131n ki\u015fili\u011fi ve hedefleri). Bu bilgiler, genellikle daha statiktir ve t\u00fcm etkile\u015fimler i\u00e7in temel bir ba\u011flam sa\u011flar.<\/li>\n<li><strong>Proje\/Kullan\u0131c\u0131 Bazl\u0131 Bellek (Specific Context):<\/strong> Belirli bir proje veya kullan\u0131c\u0131ya ait detayl\u0131 bilgiler (proje hedefleri, kullan\u0131c\u0131 tercihleri, ge\u00e7mi\u015f etkile\u015fimler). Bu katman, daha dinamiktir ve ki\u015fiselle\u015ftirilmi\u015f etkile\u015fimler i\u00e7in kritik \u00f6neme sahiptir.<\/li>\n<li><strong>Diyalog Bazl\u0131 Bellek (Episodic Context):<\/strong> Mevcut konu\u015fman\u0131n veya g\u00f6revin en k\u0131sa s\u00fcreli ve en spesifik detaylar\u0131. Bu bilgiler, genellikle konu\u015fma bittikten sonra \u00f6zetlenerek veya \u00e7\u0131kar\u0131larak daha y\u00fcksek katmanlara eklenir veya k\u0131sa bir s\u00fcre sonra silinir.<\/li>\n<\/ul>\n<p>Bu hiyerar\u015fik yap\u0131, ajan\u0131n bir sorgu geldi\u011finde \u00f6nce en genelden ba\u015flayarak en spesifik bilgiye do\u011fru arama yapmas\u0131n\u0131 sa\u011flayarak, daha verimli ve alakal\u0131 bilgi geri \u00e7a\u011f\u0131r\u0131m\u0131na olanak tan\u0131r. \u00d6rne\u011fin, bir \"proje_alpha\" hakk\u0131nda soru soruldu\u011funda, ajan \u00f6nce global politika bilgilerine bakar, ard\u0131ndan \"proje_alpha\"ya \u00f6zg\u00fc bellekleri tarar ve son olarak mevcut diyalogdaki detaylar\u0131 de\u011ferlendirir.<\/p>\n<h3>\u00d6\u011frenme ve Unutma Mekanizmalar\u0131: Bilginin \u00d6nemine G\u00f6re A\u011f\u0131rl\u0131kland\u0131rma<\/h3>\n<p>Her bilginin de\u011feri ayn\u0131 de\u011fildir. Baz\u0131 bilgiler \u00e7ok \u00f6nemlidir ve asla unutulmamal\u0131d\u0131r, baz\u0131lar\u0131 ise ge\u00e7icidir ve zamanla \u00f6nemini yitirir. Ajanlar\u0131n belle\u011fini daha ak\u0131ll\u0131 hale getirmek i\u00e7in, bilginin \u00f6nemine (s\u0131kl\u0131k, yak\u0131nl\u0131k, duygusal de\u011fer gibi fakt\u00f6rlere g\u00f6re) a\u011f\u0131rl\u0131k veren ve bu a\u011f\u0131rl\u0131\u011fa g\u00f6re bilgiyi hat\u0131rlama veya unutma karar\u0131 veren mekanizmalar geli\u015ftirilebilir:<\/p>\n<ul>\n<li><strong>S\u0131kl\u0131k ve Yak\u0131nl\u0131k:<\/strong> Bir bilginin ne s\u0131kl\u0131kta kullan\u0131ld\u0131\u011f\u0131 veya en son ne zaman kullan\u0131ld\u0131\u011f\u0131, o bilginin \u00f6nemini g\u00f6steren g\u00fc\u00e7l\u00fc bir g\u00f6stergedir. S\u0131k kullan\u0131lan veya yak\u0131n zamanda eri\u015filen bilgiler daha y\u00fcksek bir \"canl\u0131l\u0131k\" puan\u0131na sahip olabilir ve bu puan, geri \u00e7a\u011f\u0131rma s\u0131ras\u0131nda \u00f6nceliklendirme i\u00e7in kullan\u0131labilir.<\/li>\n<li><strong>\u00d6nem Puanlamas\u0131:<\/strong> Her bellek girdisine, LLM taraf\u0131ndan veya manuel olarak bir \"\u00f6nem\" veya \"kritiklik\" puan\u0131 atanabilir. Bu puan, bilginin ajan\u0131n genel hedefleri veya kullan\u0131c\u0131n\u0131n istekleri a\u00e7\u0131s\u0131ndan ne kadar de\u011ferli oldu\u011funu g\u00f6sterir. \u00d6rne\u011fin, bir g\u00fcvenlik protokol\u00fc bilgisi, bir kullan\u0131c\u0131n\u0131n favori renginden daha y\u00fcksek bir \u00f6neme sahip olabilir.<\/li>\n<li><strong>Unutma (Forgetfulness):<\/strong> \u0130nsan beyni, bilgileri unutarak a\u015f\u0131r\u0131 y\u00fcklenmeyi \u00f6nler. AI ajanlar\u0131 da benzer bir mekanizmaya sahip olabilir. D\u00fc\u015f\u00fck \u00f6neme sahip ve uzun s\u00fcredir kullan\u0131lmayan bilgiler, otomatik olarak ar\u015fivlenebilir, \u00f6zetlenebilir veya silinebilir. Bu, belle\u011fin daha k\u00fc\u00e7\u00fck ve daha y\u00f6netilebilir kalmas\u0131n\u0131 sa\u011flar.<\/li>\n<\/ul>\n<h3>LLM'leri Kullanarak Daha Sofistike \u00c7\u0131kar\u0131mlar ve \u00c7apraz Referanslama<\/h3>\n<p>B\u00fcy\u00fck dil modellerinin anlama ve \u00fcretme yetenekleri, basit depolama ve geri \u00e7a\u011f\u0131rman\u0131n \u00f6tesine ge\u00e7erek, bellek sistemini \u00e7ok daha ak\u0131ll\u0131 hale getirebilir:<\/p>\n<ul>\n<li><strong>Ba\u011flam Zenginle\u015ftirme:<\/strong> Ajan, bir sorguyu belle\u011fe g\u00f6ndermeden \u00f6nce, LLM'den sorguyu zenginle\u015ftirmesini isteyebilir. \u00d6rne\u011fin, \"Haftal\u0131k toplant\u0131n\u0131n \u00f6zeti nedir?\" sorusu i\u00e7in, LLM, ilgili anahtar kelimeleri (\"haftal\u0131k\", \"toplant\u0131\", \"\u00f6zet\") ve olas\u0131 proje ID'lerini (e\u011fer konu\u015fma i\u00e7inde varsa) \u00e7\u0131kararak daha iyi bir arama sorgusu olu\u015fturabilir.<\/li>\n<li><strong>\u00c7apraz Referanslama:<\/strong> LLM, bellekteki farkl\u0131 bilgi par\u00e7alar\u0131 aras\u0131ndaki ili\u015fkileri belirleyebilir ve yeni \u00e7\u0131kar\u0131mlar yapabilir. \u00d6rne\u011fin, bir bellek par\u00e7as\u0131nda \"Ay\u015fe test senaryolar\u0131n\u0131 yazd\u0131\" bilgisi varken, ba\u015fka birinde \"Ay\u015fe'nin uzmanl\u0131k alan\u0131 kalite g\u00fcvencesidir\" bilgisi varsa, LLM bu iki bilgiyi birle\u015ftirerek Ay\u015fe'nin test senaryolar\u0131nda iyi oldu\u011funu \u00e7\u0131karabilir.<\/li>\n<li><strong>Dinamik Bilgi Grafi\u011fi Olu\u015fturma:<\/strong> Depolanan yap\u0131land\u0131r\u0131lm\u0131\u015f verilerden (JSON, \u00fc\u00e7l\u00fcler) dinamik olarak bir bilgi grafi\u011fi olu\u015fturmak ve bu grafi\u011fi LLM'ye bir referans olarak sunmak, ajan\u0131n karma\u015f\u0131k ili\u015fkileri anlamas\u0131na yard\u0131mc\u0131 olabilir. LLM, bu grafi\u011fi kullanarak sorgulara daha ba\u011flamsal ve ili\u015fkisel yan\u0131tlar verebilir.<\/li>\n<\/ul>\n<p>Bu ileri d\u00fczey yakla\u015f\u0131mlar, AI ajanlar\u0131n\u0131n sadece bilgi depolayan ve geri \u00e7a\u011f\u0131ran sistemler olmaktan \u00e7\u0131k\u0131p, bilgiyi aktif olarak i\u015fleyen, ili\u015fkileri anlayan ve zamanla \u00f6\u011frenerek daha ak\u0131ll\u0131 hale gelen varl\u0131klar olmalar\u0131n\u0131 sa\u011flayabilir. Vekt\u00f6r veritabanlar\u0131 olmadan da, do\u011fru stratejilerle ve LLM'nin g\u00fcc\u00fcn\u00fc kullanarak, karma\u015f\u0131k ve etkileyici bellek sistemleri in\u015fa etmek m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<h2>Sonu\u00e7: Vekt\u00f6r DB'siz Uzun S\u00fcreli Haf\u0131za M\u00fcmk\u00fcn M\u00fc?<\/h2>\n<p>Bu makalede g\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, AI ajanlar\u0131na uzun s\u00fcreli bellek kazand\u0131rmak i\u00e7in karma\u015f\u0131k ve pahal\u0131 vekt\u00f6r veritabanlar\u0131na ba\u015fvurmak her zaman \u015fart de\u011fil. K\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli projeler, ki\u015fisel asistanlar veya \u00f6zel g\u00f6rev botlar\u0131 i\u00e7in JSON dosyalar\u0131, SQLite veya Redis gibi daha geleneksel ve y\u00f6netilebilir depolama \u00e7\u00f6z\u00fcmleri, \u015fa\u015f\u0131rt\u0131c\u0131 derecede etkili ve yeterli olabilir. Anahtar, bilgiyi ak\u0131ll\u0131ca yap\u0131land\u0131rmak, ilgili veriyi etkili bir \u015fekilde indekslemek ve LLM'nin do\u011fal dil anlama yeteneklerini kullanarak bellekten en alakal\u0131 par\u00e7alar\u0131 geri \u00e7a\u011f\u0131rmakt\u0131r.<\/p>\n<p>Bu yakla\u015f\u0131mlar\u0131n temel avantajlar\u0131, d\u00fc\u015f\u00fck maliyet, kolay kurulum ve y\u00f6netim, ve projeye \u00f6zg\u00fc ihtiya\u00e7lara g\u00f6re y\u00fcksek esneklik sunmalar\u0131d\u0131r. Geli\u015ftiriciler, daha az altyap\u0131 karma\u015f\u0131kl\u0131\u011f\u0131yla u\u011fra\u015farak, ajan\u0131n as\u0131l i\u015flevselli\u011fine ve kullan\u0131c\u0131 deneyimine odaklanabilirler. Elbette, bu y\u00f6ntemler vekt\u00f6r veritabanlar\u0131n\u0131n sundu\u011fu saf anlamsal benzerlik arama g\u00fcc\u00fcn\u00fc birebir taklit edemez. Ancak, anahtar kelime tabanl\u0131 arama, yap\u0131sal filtreleme ve LLM'nin ba\u011flamsal anlama yetenekleriyle bu a\u00e7\u0131\u011f\u0131 b\u00fcy\u00fck \u00f6l\u00e7\u00fcde kapatmak m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<p>\u00d6zetle, evet, vekt\u00f6r DB'siz uzun s\u00fcreli haf\u0131za kesinlikle m\u00fcmk\u00fcnd\u00fcr. Do\u011fru ara\u00e7lar\u0131, stratejileri ve biraz yarat\u0131c\u0131l\u0131\u011f\u0131 bir araya getirerek, AI ajanlar\u0131n\u0131za unutkanl\u0131k sorununu a\u015facak ve onlar\u0131 \u00e7ok daha yetenekli, ba\u011flamsal ve kullan\u0131c\u0131 dostu hale getirecek sa\u011flam bir bellek sistemi kazand\u0131rabilirsiniz.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<p><strong>1. Bu y\u00f6ntem vekt\u00f6r DB'lerin yerini tamamen alabilir mi?<\/strong><\/p>\n<p>Bu y\u00f6ntemler, \u00f6zellikle daha k\u00fc\u00e7\u00fck ve orta \u00f6l\u00e7ekli projelerde veya b\u00fct\u00e7e k\u0131s\u0131tlamalar\u0131 olan durumlarda vekt\u00f6r DB'lere g\u00fc\u00e7l\u00fc bir alternatif sunar. Ancak, \u00e7ok b\u00fcy\u00fck ve karma\u015f\u0131k veri setlerinde, saf anlamsal benzerlik aramas\u0131n\u0131n kritik oldu\u011fu senaryolarda veya \u00e7ok y\u00fcksek e\u015fzamanl\u0131 sorgu y\u00fcklerinde vekt\u00f6r DB'ler hala daha \u00fcst\u00fcn performans g\u00f6sterebilir. Bu y\u00f6ntemler, vekt\u00f6r DB'lerin \"yerine tamamen ge\u00e7mek\"ten ziyade, onlara g\u00fc\u00e7l\u00fc ve eri\u015filebilir bir alternatif sunar.<\/p>\n<p><strong>2. B\u00fcy\u00fck \u00f6l\u00e7ekli uygulamalar i\u00e7in uygun mu?<\/strong><\/p>\n<p>Do\u011frudan JSON dosyalar\u0131yla \u00e7al\u0131\u015fmak b\u00fcy\u00fck \u00f6l\u00e7ekli uygulamalar i\u00e7in performans sorunlar\u0131 yaratabilir. Ancak SQLite, FTS5 gibi eklentilerle birlikte orta \u00f6l\u00e7ekli uygulamalar i\u00e7in olduk\u00e7a yeterli olabilir. Redis, bellek i\u00e7i depolama ve da\u011f\u0131t\u0131k mimarilerle birle\u015ftirildi\u011finde b\u00fcy\u00fck \u00f6l\u00e7ekli uygulamalar\u0131n h\u0131zl\u0131 eri\u015fim katmanlar\u0131 i\u00e7in kullan\u0131labilir. PostgreSQL veya MySQL gibi geleneksel veritabanlar\u0131 da daha karma\u015f\u0131k ve b\u00fcy\u00fck \u00f6l\u00e7ekli yap\u0131land\u0131r\u0131lm\u0131\u015f bellek sistemleri i\u00e7in g\u00fc\u00e7l\u00fc se\u00e7eneklerdir.<\/p>\n<p><strong>3. Bellek sistemi ne kadar karma\u015f\u0131k olabilir?<\/strong><\/p>\n<p>Bellek sisteminin karma\u015f\u0131kl\u0131\u011f\u0131 tamamen projenizin ihtiya\u00e7lar\u0131na ba\u011fl\u0131d\u0131r. Basit bir anahtar-de\u011fer depolamas\u0131ndan, hiyerar\u015fik yap\u0131land\u0131r\u0131lm\u0131\u015f, \u00f6\u011frenme ve unutma mekanizmalar\u0131 i\u00e7eren katmanl\u0131 bir sisteme kadar de\u011fi\u015febilir. Temel bir sistemle ba\u015flay\u0131p, ihtiya\u00e7lar do\u011frultusunda zamanla karma\u015f\u0131kl\u0131\u011f\u0131 art\u0131rmak genellikle en iyi yakla\u015f\u0131md\u0131r.<\/p>\n<p><strong>4. Bu yakla\u015f\u0131m\u0131n temel dezavantaj\u0131 nedir?<\/strong><\/p>\n<p>Temel dezavantaj, anlamsal benzerlik aramas\u0131n\u0131n (semantik search) do\u011fu\u015ftan gelen g\u00fcc\u00fcn\u00fcn olmamas\u0131d\u0131r. Vekt\u00f6r DB'ler, iki metin par\u00e7as\u0131n\u0131n i\u00e7erdi\u011fi kelimeler tamamen farkl\u0131 olsa bile, anlamsal olarak benzer olduklar\u0131n\u0131 anlayabilir. Anahtar kelime tabanl\u0131 veya yap\u0131sal aramalarda bu yetenek s\u0131n\u0131rl\u0131d\u0131r ve daha \u00e7ok do\u011frudan e\u015fle\u015fmelere veya \u00f6nceden tan\u0131mlanm\u0131\u015f ili\u015fkilere dayan\u0131r. Bu a\u00e7\u0131\u011f\u0131 kapatmak i\u00e7in LLM'nin kendisini bir \"anlamsal filtre\" olarak kullanmak ek maliyet ve gecikme yaratabilir.<\/p>\n<p><strong>5. Hangi programlama dilleriyle uygulanabilir?<\/strong><\/p>\n<p>Bu makaledeki \u00f6rnekler Python ile verilmi\u015f olsa da, bu yakla\u015f\u0131mlar hemen hemen t\u00fcm modern programlama dilleriyle uygulanabilir. SQLite, Redis ve JSON gibi teknolojiler \u00e7o\u011fu dilde g\u00fc\u00e7l\u00fc k\u00fct\u00fcphane ve SDK deste\u011fine sahiptir. \u00d6rne\u011fin, Node.js, Java, C#, Go gibi dillerde de benzer uygulamalar\u0131 kolayca geli\u015ftirebilirsiniz.<\/p>\n","protected":false},"excerpt":{"rendered":"Yapay zeka ajanlar\u0131, g\u00fcn\u00fcm\u00fcz\u00fcn en heyecan verici teknolojik geli\u015fmelerinden biri olarak kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor. Ancak, bu ak\u0131ll\u0131 sistemlerin en&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1342],"tags":[],"class_list":{"0":"post-35164","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ai","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>AI Ajanlara Vekt\u00f6r DB&#039;siz Uzun S\u00fcreli Haf\u0131za Nas\u0131l Verilir?<\/title>\n<meta name=\"description\" content=\"Yapay zeka ajanlar\u0131, g\u00fcn\u00fcm\u00fcz\u00fcn en heyecan verici teknolojik geli\u015fmelerinden biri olarak kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor. Ancak, bu ak\u0131ll\u0131 sistemlerin en b\u00fcy\u00fck zorluklar\u0131ndan biri, edindikleri bilgileri kal\u0131c\u0131 olarak hat\u0131rlayabilmeleri ve bu bilgileri yeni etkile\u015fimlerde kullanabilmeleri. \u00c7o\u011fu zaman, b\u00fcy\u00fck dil modelleri (LLM&#039;ler) gibi teknolojilerle \u00e7al\u0131\u015fan ajanlar, sadece o anki &quot;ba\u011flam penceresi&quot; i\u00e7inde bilgi tutabilir ve pencere kapand\u0131\u011f\u0131nda her \u015feyi unutma e\u011filimindedir. Peki, ajanlar\u0131m\u0131za bir vekt\u00f6r veritaban\u0131n\u0131n karma\u015f\u0131kl\u0131\u011f\u0131na bula\u015fmadan nas\u0131l uzun s\u00fcreli haf\u0131za kazand\u0131rabiliriz? \u0130\u015fte bu yaz\u0131da, bu sorunun cevab\u0131n\u0131, pratik ve anla\u015f\u0131l\u0131r yakla\u015f\u0131mlarla birlikte ad\u0131m ad\u0131m inceleyece\u011fiz.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"AI Ajanlara Vekt\u00f6r DB&#039;siz Uzun S\u00fcreli Haf\u0131za Nas\u0131l Verilir?\" \/>\n<meta property=\"og:description\" content=\"Yapay zeka ajanlar\u0131, g\u00fcn\u00fcm\u00fcz\u00fcn en heyecan verici teknolojik geli\u015fmelerinden biri olarak kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor. Ancak, bu ak\u0131ll\u0131 sistemlerin en b\u00fcy\u00fck zorluklar\u0131ndan biri, edindikleri bilgileri kal\u0131c\u0131 olarak hat\u0131rlayabilmeleri ve bu bilgileri yeni etkile\u015fimlerde kullanabilmeleri. \u00c7o\u011fu zaman, b\u00fcy\u00fck dil modelleri (LLM&#039;ler) gibi teknolojilerle \u00e7al\u0131\u015fan ajanlar, sadece o anki &quot;ba\u011flam penceresi&quot; i\u00e7inde bilgi tutabilir ve pencere kapand\u0131\u011f\u0131nda her \u015feyi unutma e\u011filimindedir. Peki, ajanlar\u0131m\u0131za bir vekt\u00f6r veritaban\u0131n\u0131n karma\u015f\u0131kl\u0131\u011f\u0131na bula\u015fmadan nas\u0131l uzun s\u00fcreli haf\u0131za kazand\u0131rabiliriz? \u0130\u015fte bu yaz\u0131da, bu sorunun cevab\u0131n\u0131, pratik ve anla\u015f\u0131l\u0131r yakla\u015f\u0131mlarla birlikte ad\u0131m ad\u0131m inceleyece\u011fiz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-26T09:01:25+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"33 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"AI Ajanlara Vekt\u00f6r DB&#8217;siz Uzun S\u00fcreli Haf\u0131za Nas\u0131l Verilir?\",\"datePublished\":\"2025-11-26T09:01:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/\"},\"wordCount\":5591,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"AI\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/\",\"name\":\"AI Ajanlara Vekt\u00f6r DB'siz Uzun S\u00fcreli Haf\u0131za Nas\u0131l Verilir?\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-26T09:01:25+00:00\",\"description\":\"Yapay zeka ajanlar\u0131, g\u00fcn\u00fcm\u00fcz\u00fcn en heyecan verici teknolojik geli\u015fmelerinden biri olarak kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor. Ancak, bu ak\u0131ll\u0131 sistemlerin en b\u00fcy\u00fck zorluklar\u0131ndan biri, edindikleri bilgileri kal\u0131c\u0131 olarak hat\u0131rlayabilmeleri ve bu bilgileri yeni etkile\u015fimlerde kullanabilmeleri. \u00c7o\u011fu zaman, b\u00fcy\u00fck dil modelleri (LLM'ler) gibi teknolojilerle \u00e7al\u0131\u015fan ajanlar, sadece o anki \\\"ba\u011flam penceresi\\\" i\u00e7inde bilgi tutabilir ve pencere kapand\u0131\u011f\u0131nda her \u015feyi unutma e\u011filimindedir. Peki, ajanlar\u0131m\u0131za bir vekt\u00f6r veritaban\u0131n\u0131n karma\u015f\u0131kl\u0131\u011f\u0131na bula\u015fmadan nas\u0131l uzun s\u00fcreli haf\u0131za kazand\u0131rabiliriz? \u0130\u015fte bu yaz\u0131da, bu sorunun cevab\u0131n\u0131, pratik ve anla\u015f\u0131l\u0131r yakla\u015f\u0131mlarla birlikte ad\u0131m ad\u0131m inceleyece\u011fiz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"AI Ajanlara Vekt\u00f6r DB&#8217;siz Uzun S\u00fcreli Haf\u0131za Nas\u0131l Verilir?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"AI Ajanlara Vekt\u00f6r DB'siz Uzun S\u00fcreli Haf\u0131za Nas\u0131l Verilir?","description":"Yapay zeka ajanlar\u0131, g\u00fcn\u00fcm\u00fcz\u00fcn en heyecan verici teknolojik geli\u015fmelerinden biri olarak kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor. Ancak, bu ak\u0131ll\u0131 sistemlerin en b\u00fcy\u00fck zorluklar\u0131ndan biri, edindikleri bilgileri kal\u0131c\u0131 olarak hat\u0131rlayabilmeleri ve bu bilgileri yeni etkile\u015fimlerde kullanabilmeleri. \u00c7o\u011fu zaman, b\u00fcy\u00fck dil modelleri (LLM'ler) gibi teknolojilerle \u00e7al\u0131\u015fan ajanlar, sadece o anki \"ba\u011flam penceresi\" i\u00e7inde bilgi tutabilir ve pencere kapand\u0131\u011f\u0131nda her \u015feyi unutma e\u011filimindedir. Peki, ajanlar\u0131m\u0131za bir vekt\u00f6r veritaban\u0131n\u0131n karma\u015f\u0131kl\u0131\u011f\u0131na bula\u015fmadan nas\u0131l uzun s\u00fcreli haf\u0131za kazand\u0131rabiliriz? \u0130\u015fte bu yaz\u0131da, bu sorunun cevab\u0131n\u0131, pratik ve anla\u015f\u0131l\u0131r yakla\u015f\u0131mlarla birlikte ad\u0131m ad\u0131m inceleyece\u011fiz.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/","og_locale":"tr_TR","og_type":"article","og_title":"AI Ajanlara Vekt\u00f6r DB'siz Uzun S\u00fcreli Haf\u0131za Nas\u0131l Verilir?","og_description":"Yapay zeka ajanlar\u0131, g\u00fcn\u00fcm\u00fcz\u00fcn en heyecan verici teknolojik geli\u015fmelerinden biri olarak kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor. Ancak, bu ak\u0131ll\u0131 sistemlerin en b\u00fcy\u00fck zorluklar\u0131ndan biri, edindikleri bilgileri kal\u0131c\u0131 olarak hat\u0131rlayabilmeleri ve bu bilgileri yeni etkile\u015fimlerde kullanabilmeleri. \u00c7o\u011fu zaman, b\u00fcy\u00fck dil modelleri (LLM'ler) gibi teknolojilerle \u00e7al\u0131\u015fan ajanlar, sadece o anki \"ba\u011flam penceresi\" i\u00e7inde bilgi tutabilir ve pencere kapand\u0131\u011f\u0131nda her \u015feyi unutma e\u011filimindedir. Peki, ajanlar\u0131m\u0131za bir vekt\u00f6r veritaban\u0131n\u0131n karma\u015f\u0131kl\u0131\u011f\u0131na bula\u015fmadan nas\u0131l uzun s\u00fcreli haf\u0131za kazand\u0131rabiliriz? \u0130\u015fte bu yaz\u0131da, bu sorunun cevab\u0131n\u0131, pratik ve anla\u015f\u0131l\u0131r yakla\u015f\u0131mlarla birlikte ad\u0131m ad\u0131m inceleyece\u011fiz.","og_url":"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-26T09:01:25+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"33 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"AI Ajanlara Vekt\u00f6r DB&#8217;siz Uzun S\u00fcreli Haf\u0131za Nas\u0131l Verilir?","datePublished":"2025-11-26T09:01:25+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/"},"wordCount":5591,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["AI"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/","url":"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/","name":"AI Ajanlara Vekt\u00f6r DB'siz Uzun S\u00fcreli Haf\u0131za Nas\u0131l Verilir?","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-26T09:01:25+00:00","description":"Yapay zeka ajanlar\u0131, g\u00fcn\u00fcm\u00fcz\u00fcn en heyecan verici teknolojik geli\u015fmelerinden biri olarak kar\u015f\u0131m\u0131za \u00e7\u0131k\u0131yor. Ancak, bu ak\u0131ll\u0131 sistemlerin en b\u00fcy\u00fck zorluklar\u0131ndan biri, edindikleri bilgileri kal\u0131c\u0131 olarak hat\u0131rlayabilmeleri ve bu bilgileri yeni etkile\u015fimlerde kullanabilmeleri. \u00c7o\u011fu zaman, b\u00fcy\u00fck dil modelleri (LLM'ler) gibi teknolojilerle \u00e7al\u0131\u015fan ajanlar, sadece o anki \"ba\u011flam penceresi\" i\u00e7inde bilgi tutabilir ve pencere kapand\u0131\u011f\u0131nda her \u015feyi unutma e\u011filimindedir. Peki, ajanlar\u0131m\u0131za bir vekt\u00f6r veritaban\u0131n\u0131n karma\u015f\u0131kl\u0131\u011f\u0131na bula\u015fmadan nas\u0131l uzun s\u00fcreli haf\u0131za kazand\u0131rabiliriz? \u0130\u015fte bu yaz\u0131da, bu sorunun cevab\u0131n\u0131, pratik ve anla\u015f\u0131l\u0131r yakla\u015f\u0131mlarla birlikte ad\u0131m ad\u0131m inceleyece\u011fiz.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ai-ajanlara-vektor-dbsiz-uzun-sureli-hafiza-nasil-verilir\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"AI Ajanlara Vekt\u00f6r DB&#8217;siz Uzun S\u00fcreli Haf\u0131za Nas\u0131l Verilir?"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=35164"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35164\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}