AGI & Research

سیستم‌های حافظه ترکیبی: جستجوی برداری + عبور از گراف برای هوش مصنوعی عمومی

جستجو برای دستیابی به هوش مصنوعی عمومی (AGI) از صرفاً مقیاس‌بندی پارامترهای مدل به سمت بهبود نحوه تعامل مدل‌ها با دانش خارجی تغییر کرده است. تولید افزوده با بازیابی (RAG) سنتی به شدت به جستجوی شباهت برداری متکی است که در تطبیق معنایی عالی عمل می‌کند، اما اغلب فاقد عمق ساختاری لازم برای استدلال پیچیده است. با یکپارچه‌سازی جستجوی برداری با عبور از گراف، می‌توانیم سیستم‌های حافظه ترکیبی بسازیم که نه تنها حقایق مرتبط از نظر معنایی را پیدا می‌کنند، بلکه روابط منطقی بین آن‌ها را نیز پیمایش می‌کنند.

محدودیت‌های جستجوی خالص برداری

پایگاه‌های داده برداری مانند Pinecone یا Weaviate متن را به جاسازی‌های (embeddings) با بُعد بالا تبدیل می‌کنند و امکان جستجوی سریع شباهت کسینوسی را فراهم می‌سازند. اگرچه این روش برای یافتن اسناد "مشابه" مؤثر است، اما ذاتاً بدون ساختار است. این رویکرد همه داده‌ها را به عنوان نقاط ایزوله در یک فضا در نظر می‌گیرد. برای پرسش‌های پیچیده مانند "پیامدهای اقتصادی اختلالات زنجیره تأمین در سال 2020 بر بخش خودرو چیست؟"، یک جستجوی برداری ممکن است تکه‌هایی درباره زنجیره تأمین و تکه‌هایی درباره بخش خودرو را برگرداند، اما بدون انجام حدس‌زنی قابل توجه توسط مدل در طول استنتاج، در رسم صریح پیوند علّی بین آن‌ها با مشکل مواجه می‌شود.

قدرت عبور از گراف

گراف‌های دانش (KGs) داده‌ها را به صورت گره‌ها (کیفیت‌ها) و یال‌ها (رابطه‌ها) ذخیره می‌کنند. این ساختار امکان پرسش‌های منطقی دقیق را فراهم می‌کند. با این حال، عبور خالص از گراف می‌تواند شکننده باشد. این روش نیاز به تطبیق دقیق کلمات کلیدی یا تعاریف خاص اسکیمای دارد و در مدیریت ابهام زبان طبیعی یا مفاهیم مبهم که در آن‌ها شباهت معنایی مهم‌تر از تطبیق ساختاری دقیق است، ضعیف عمل می‌کند.

ساخت معماری ترکیبی

یک سیستم ترکیبی از جستجوی برداری به عنوان یک "شاخص‌ساز معنایی" برای شناسایی نقاط شروع یا خوشه‌های مرتبط گره‌ها در گراف استفاده می‌کند. پس از برقراری زمینه اولیه از طریق شباهت برداری، سیستم به عبور از گراف تغییر می‌کند تا با شامل کردن کیفیت‌های مستقیماً مرتبط، پنجره زمینه را گسترش دهد. این فرآیند دو مرحله‌ای اطمینان حاصل می‌کند که زمینه نهایی ارائه‌شده به LLM هم از نظر معنایی هم‌راستا و هم از نظر ساختاری منسجم است.

استراتژی پیاده‌سازی

در زیر یک پیاده‌سازی مفهومی پایتون با استفاده از `neo4j` برای ذخیره‌سازی گراف و `faiss` برای شاخص‌بندی برداری آمده است. در یک محیط تولید، معمولاً از یک پلتفرم یکپارچه مانند شاخص برداری Neo4j یا یک پایگاه داده ترکیبی تخصصی استفاده می‌شود.


import numpy as np
from sentence_transformers import SentenceTransformer
import neo4j

# 1. Initialize Components
model = SentenceTransformer('all-MiniLM-L6-v2')
driver = neo4j.GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j", "password"))

def embed_text(text):
    return model.encode(text, convert_to_numpy=True).flatten()

def hybrid_retrieve(query, limit=5):
    # Step 1: Vector Search to find seed nodes
    query_embedding = embed_text(query)
    
    # Note: In a real system, you'd query a vector store linked to Neo4j nodes
    # Here we simulate finding 'seed' IDs based on semantic similarity
    seeds = search_vector_db(query_embedding, limit=limit) 
    
    # Step 2: Graph Expansion from Seeds
    related_context = []
    for seed_id in seeds:
        with driver.session() as session:
            # Traverse 2 hops to get relationships and associated nodes
            result = session.run(
                """
                MATCH (start:Entity {id: $id})-[*1..2]-(related:Entity)
                WHERE related.id <> $id
                RETURN related.name, related.description, type(start, related) as rel_type
                """,
                {"id": seed_id}
            )
            for record in result:
                related_context.append(f"{record['rel_type']}: {record['name']} - {record['description']}")
                
    return related_context

# Simulated Vector DB search
def search_vector_db(embedding, limit):
    # Return list of entity IDs found in vector index
    return ["entity_101", "entity_204"] 

context = hybrid_retrieve("Impact of AI on climate modeling accuracy")
print(context)

ملاحظات عملی

هنگام پیاده‌سازی این روش، تأخیر (latency) نگرانی اصلی است. جستجوی برداری زیر میلی‌ثانیه است، اما عبورهای گراف می‌توانند پرهزینه باشند اگر ضریب شاخه‌بندی (branching factor) بالا باشد. محدود کردن عمق عبور (مثلاً حداکثر 2 تا 3 پرش) و اعمال امتیازدهی مرتبط بودن به گره‌های گسترش‌یافته قبل از ارسال آن‌ها به LLM حیاتی است. علاوه بر این، حفظ همگام‌سازی بین شاخص برداری و ساختار گراف یک چالش مهندسی قابل توجه است؛ اگر گره‌ای حذف یا به‌روزرسانی شود، هر دو انبار باید این تغییر را به صورت اتمیک بازتاب دهند.

نتیجه‌گیری

سیستم‌های حافظه ترکیبی یک گام حیاتی به سمت معماری‌های AGI مقاوم‌تر را نشان می‌دهند. با بهره‌گیری از انعطاف‌پذیری معنایی جستجوی برداری و دقت منطقی عبور از گراف، توسعه‌دهندگان می‌توانند زمینه‌ای را به LLMها ارائه دهند که از نظر معنای و ساختار غنی است. این رویکرد توهم‌سازی (hallucinations) را به حداقل می‌رساند و توانایی مدل‌ها را برای انجام استدلال چندمرحله‌ای افزایش می‌دهد و راه را برای عاملان هوشمند پیچیده‌تر و قابل‌اتکا‌تر هموار می‌کند.

Share: