Yerel bir kodlama asistanı kurmayı deneyimledikten sonra anladım ki: yerel modeller, bulut tabanlı rakipleri kadar akıllı olmasa da, onlara verilen girdileri daha akıllı hale getirmek mümkün.
Deneyimimde, tokena dayalı maliyetlerin çoğunun aslında düşünme sürecinden değil, yeniden öğrenme sürecinden kaynaklandığını fark ettim. Her yeni oturumda, veritabanındaki basit ilişkileri, tanımları ve enum değerlerini yeniden açıklamak zorunda kalıyordum. Bu durum, hem token hem de süre açısından ciddi bir israf anlamına geliyordu.
AI İçin Gerçek Bellek Sorunu: Girdi Tokens’ı Verimli Kullanmak
AI yardımcılarıyla (Claude, Cursor, Copilot gibi) çalışırken en büyük engellerden biri, sürekli aynı veritabanı şemasını yeniden açıklamak zorunda kalmaktı. Örneğin:
status = 3ne anlama geliyor? (iptal edilmiş)orderstablosuusersile nasıl ilişkilendiriliyor? (orders.user_id → users.id)JobStatusenum’u nedir? (hatırlanması zor bir dizi tam sayı kodu)
Her oturumda AI bu bilgileri yeniden keşfediyor, tokenlar harcanıyor ve yanıt süreleri uzuyordu. Oysa ki bu bilgiler sabitti ve asla değişmiyordu.
Bu sorunu çözmek için veritabanı şemasını kalıcı olarak belleğe alan ve her AI aracıyla paylaşabilen bir sistem kurmaya karar verdim.
Amnesic: Veritabanı Hafızası için Açık Kaynaklı MCP Sunucusu
Amnesic, herhangi bir AI istemcisinin kullanabileceği, kalıcı ve paylaşılabilir bir veritabanı hafızası sunan açık kaynaklı bir MCP (Model Context Protocol) sunucusudur. Adı ironik olsa da ("amnezi" yani hafıza kaybı anlamına gelir), aslında hiçbir şeyi unutmayan bir sistemdir.
Kurulumu oldukça basittir:
pip install amnesic
amnesic init # Etkileşimli kurulum sihirbazıArdından, AI istemcinizin mcp.json dosyasına eklenerek çalıştırılabilir. Desteklediği veritabanı sistemleri arasında PostgreSQL, MySQL, MSSQL ve SQLite bulunur.
Nasıl Çalışır?
Veritabanı şemasını kalıcı olarak belleğe almak için tek bir kez anotasyon yapmak yeterlidir. Örneğin:
db_annotate(
table="orders",
column="status",
column_description="Sipariş yaşam döngüsü durumu",
enum_values={
"1": "beklemede",
"2": "gönderildi",
"3": "iptal edildi",
"4": "teslim edildi"
}
)Bu anotasyon, yerel bir SQLite dosyasına kaydedilir. Her yeni sorguda, AI istemcisi bu anotasyonları kullanarak doğru SQL sorgusunu oluşturabilir:
SELECT COUNT(*) FROM orders WHERE status = 3 AND created_at >= '2024-01-01';Artık her oturumda aynı bilgileri yeniden açıklamak zorunda kalmıyorsunuz. AI, sürekli aynı veriyi yeniden öğrenmek yerine, yerleşik bilgiyi kullanır.
Teknik Kararların Arkasındaki Düşünceler
Amnesic’i geliştirirken alınan bazı teknik kararlar, benzer projelerde yol gösterici olabilir:
Vektör Veritabanları Yerine SQLite FTS5
Başlangıçta, tablo ve kolonları aramak için ChromaDB gibi bir vektör veritabanı kullanmayı düşündüm. Ancak bu, projenin "hafif yerel bir araç" olma hedefiyle çelişiyordu. SQLite’nin yerleşik FTS5 (Full-Text Search) motoru, arama işlevini hiçbir ek bağımlılık olmadan yerine getirdi:
db_search("ödeme")
# Sonuçlar: orders.payment_method, tüketici_ödeme_tablosu, ...Salt Okunur Güvenlik Katmanları
Amnesic’in veritabanlarına bağlanabilmesi nedeniyle, AI’nın veri değiştirmesini engellemek kritiktir. Bunun için iki katmanlı bir koruma sistemi uygulandı:
- Statik SQL Analizi: AI’nin gönderdiği sorguların sadece
SELECTveWITHkomutlarını içerdiğinden emin olunur.INSERT,UPDATE,DELETEgibi yazma komutları reddedilir. - İşlem Geri Sarma: Her sorgu, otomatik olarak geri sarılan bir işlem içinde çalıştırılır. Böylece, SQL enjeksiyonu gibi senaryolarda bile veri kaybı yaşanmaz.
Tek SQLite Dosyasıyla Taşınabilirlik
Tüm veritabanı şeması, anotasyonlar, ilişki grafiği ve FTS5 endeksi, tek bir SQLite dosyasında saklanır. Bu dosya:
- Taşınabilir: Bir ekip arkadaşına kolayca gönderilebilir.
- İncelenebilir: Dosyayı inceleyerek hangi anotasyonların yapıldığını görebilirsiniz.
- Güvenli:
chmod 600ile koruma altına alınabilir.
Veri Minimizasyonu Avantajı
Amnesic’in bir diğer faydası da, çoğu sorunun doğrudan yerel anotasyon dosyasından yanıtlanabilmesidir. Örneğin:
status = 3ne anlama gelir? → Doğrudan anotasyon dosyasından yanıtlanır.ordersveusersnasıl ilişkilendirilir? → Yabancı anahtar grafiğinden yanıtlanır.
Bu da, veritabanından çekilen veri miktarını önemli ölçüde azaltır.
Sınırlamalar ve Gelecek Planları
Amnesic’in bazı sınırlamaları vardır:
- AI’nın zekasını artırmaz.
- Doğal dilden SQL’e dönüştürme işlevi yoktur.
- Sadece veritabanı şemasını belleğe alır; sorguları çalıştırmaz. Bu görev, diğer MCP sunucularına bırakılmıştır.
Güvenlik konusunda iyileştirmeler devam etmektedir. Özellikle salt okunur modun sağlamlığı, AI’nın veritabanında yanlışlıkla değişiklik yapmasını engellemek açısından kritik öneme sahiptir.
Sonuç: AI’nın Yeniden Öğrenme Derdini Sonlandırın
Yerel AI yardımcılarıyla çalışırken karşılaşılan en büyük sorunlardan biri, sürekli aynı verileri yeniden açıklamak zorunda kalmaktır. Amnesic gibi araçlar, veritabanı şemasını kalıcı olarak belleğe alarak bu sorunu çözüyor.
Eğer AI’nızın veritabanınızın içeriğini daha verimli kullanmasını istiyorsanız, Amnesic’i deneyin ve geri bildirimlerinizi paylaşın. Proje, MIT lisansıyla açık kaynak olarak geliştirilmekte olup, Linux Vakfı MCP Kayıtlığı’nda yer almaktadır.
Daha akıllı bir AI için daha akıllı girdilerle başlayın.
Yapay zeka özeti
AI yardımcılarına sürekli aynı veritabanı sorgularını açıklamaktan bıktınız mı? Amnesic adlı açık kaynaklı MCP sunucusu, veritabanı şemasını kalıcı belleğe alarak AI’nın yeniden öğrenmesini engelliyor. Kurulumu kolay ve güvenli.