AGI & Research

AGI Belleğini Birleştirme: Vektör, Grafik ve Epizodik API'ler

Giriş: Bellek Parçalanması Sorunu

Modern yapay zeka ajanları, bellek sistemleri izole olduğundan bağlamı korumakta zorlanabilir. Vektör depoları anlamsal benzerliği, bilgi grafikleri ilişkisel mantığı ve epizodik bellek zaman sıralarını yönetir. Bu sistemler izole çalıştığında, ajan tutarlı bir dünya görüşüne sahip olamaz. Birleşik Bellek Arayüzü (UMI) tasarlamak, geliştiricilerin farklı depolama altyapılarını tek bir mantısal varlık olarak ele almasını sağlar. Farklı bilgi türleri üzerinde akıl yürütebilen, ölçeklenebilir ve yüksek performanslı AGI sistemleri oluşturmak için bu standartlaştırma hayati önem taşır.

Mimari Temeller

UMI'nin çekirdeği, farklı bellek paradigmaları arasında girdileri ve çıktıları normalize eden soyutlama katmanıdır. Ajan, doğrudan vektör veritabanına sorgu göndermek yerine, istekleri sorgu türüne ve gerekli bağlama göre uygun arka uca yönlendiren bir MemoryService ile etkileşime girer. Bu yaklaşım, ajan mantığını alttaki altyapıdan ayırarak, çekirdek ajan kodunu yeniden yapılandırmadan sağlayıcıların kolayca değiştirilmesine veya yeni bellek türlerinin eklenmesine olanak tanır.

Standartlaştırılmış API'nin Tanımlanması

Sağlam bir arayüz, depolama, geri getirme ve silme işlemleri için net sözleşmeler tanımlamalıdır. Aşağıda, bu işlemlerin genel olarak nasıl tanımlanacağını gösteren bir Python soyutlaması bulunmaktadır. Arayüz, veriler gömme (embedding), düğüm/kenar veya zaman damgalı olaylar olarak saklanıyor olsa bile, ajanın tutarlı veri yapıları almasını sağlar.

from abc import ABC, abstractmethod
from typing import Any, Dict, List, Optional
import uuid

class MemoryItem:
    def __init__(self, content: str, metadata: Dict[str, Any], mem_id: Optional[str] = None):
        self.id = mem_id or str(uuid.uuid4())
        self.content = content
        self.metadata = metadata
        self.timestamp = metadata.get('timestamp')

class UnifiedMemoryInterface(ABC):
    @abstractmethod
    async def store(self, item: MemoryItem) -> str:
        """Veriyi, öğe türüne göre uygun arka uca kalıcı olarak kaydeder."""
        pass

    @abstractmethod
    async def retrieve(
        self, 
        query: str, 
        context_type: str, 
        limit: int = 5
    ) -> List[MemoryItem]:
        """
        Bellekleri geri getirir. 
        context_type 'semantic', 'relational' veya 'temporal' olabilir.
        """
        pass

    @abstractmethod
    async def link(self, id_a: str, id_b: str, relation: str) -> None:
        """Bellek öğeleri arasında çapraz referanslar oluşturur."""
        pass

Orkestratörün Uygulanması

Uygulama, belirli bellek adaptörlerine referanslar tutan bir orkestratör sınıfını içerir. retrieve metodu bir yönlendirici olarak çalışır. context_type 'semantic' ise vektör deposunu sorgular. 'relational' ise grafiği gezinir. 'temporal' ise epizodik günlüğü tarar. Bu hibrit geri getirme stratejisi, ajanın tek tip bir yaklaşım dayatmak yerine, eldeki spesifik görev için en ilgili bağlamı almasını sağlar.

class AGIOrchestrator(UnifiedMemoryInterface):
    def __init__(self):
        self.vector_store = VectorAdapter()
        self.graph_store = GraphAdapter()
        self.episodic_log = EpisodicAdapter()

    async def retrieve(self, query: str, context_type: str, limit: int = 5) -> List[MemoryItem]:
        if context_type == 'semantic':
            return await self.vector_store.similarity_search(query, limit)
        elif context_type == 'relational':
            return await self.graph_store.query_neighbors(query, limit)
        elif context_type == 'temporal':
            return await self.episodic_log.get_recent(query, limit)
        else:
            raise ValueError("Geçersiz bağlam türü")

Pratik Örnek: Bağlamsal Akıl Yürütme

Bir seyahat planlaması görevi verilen bir ajanı düşünün. Kullanıcının ne sevdiğini (epizodik), şehirler arasındaki ilişkileri (grafik) ve benzer geçmiş destinasyonları (vektör) hatırlaması gerekir. UMI ile ajan, içsel olarak üç sistemin tümünde paralel sorguları tetikleyen tek bir yüksek düzeyde istek gönderebilir ve sonuçları birleşik bir bağlam penceresinde birleştirir. Bu, gecikmeyi azaltır ve ajanın nihai çıktısının tutarlılığını artırır.

Sonuç

Bellek arayüzlerini standartlaştırmak, gerçekten zeki ajanlar oluşturma yolunda kritik bir adımdır. Vektör, grafik ve epizodik depolamanın karmaşıklıklarını soyutlayarak, geliştiriciler veri yönetimiyle uğraşmak yerine sofistike akıl yürütme yetenekleri oluşturmaya odaklanabilir. AGI modelleri evrildikçe, çeşitli bellek türlerini sorunsuz bir şekilde entegre etme yeteneği, sistemin etkinliğini belirleyecektir. Bugün birleşik bir API benimsemek, mimarinizin yarının karmaşık bellek taleplerine hazır olduğunu garanti eder.

Share: