
Memo'nun Getirme-Destekli Üretim (RAG) sistemi, modele sohbetler arası kalıcı, aranabilir hafıza kazandırır. Vektör uzantılı SQLite üzerine inşa edilmiştir — harici vektör veritabanı gerekmez.
┌──────────────┐ ┌─────────────────────┐ ┌──────────────────┐
│ Belge Aktar │────▶│ Parçala & Göm │────▶│ SQLite + vec0 │
│ (MD/TXT/PDF) │ │ (768 boyut vektör) │ │ (ANN İndeks) │
└──────────────┘ └─────────────────────┘ └────────┬─────────┘
│
┌──────────────┐ ┌─────────────────────┐ │
│ Kullanıcı │────▶│ Sorguyu Göm │────▶────────┘
│ Sorgusu │ │ (aynı model) │ │ Kosinüs Arama │
└──────────────┘ └─────────────────────┘ │ İlk-K Sonuç │
└────────┬────────┘
│
┌──────────────┐ ┌─────────────────────┐ │
│ LLM Yanıtı │◀────│ Bağlam Enjekte Et │◀─────────────┘
│ (zengin) │ │ (parçaları başa ekle)│
└──────────────┘ └─────────────────────┘
nomic-embed-text-v1.5Gömme sunucusu, sağlık kontrolleri ve arıza durumunda otomatik yeniden başlatma ile bir alt süreç olarak yönetilir.
Vektörler ve üst veriler, Yaklaşık En Yakın Komşu (ANN) indeksleme için vec0 sanal tablosuyla birlikte sqlite-vec uzantısı kullanılarak SQLite'da saklanır:
CREATE VIRTUAL TABLE vec_memory USING vec0(
embedding float[768],
content text,
source text,
chunk_index integer,
created_at datetime
);
Bir belge veya sohbet parçası aktarıldığında:
vec_memory tablosuna yazılırBir kullanıcı sorgusu hafıza hatırlamayı tetiklediğinde:
min_similarity altındaki sonuçlar atılır (varsayılan 0.7)[İlgili Hafıza]
- parça_1 içeriği (benzerlik: 0.92)
- parça_2 içeriği (benzerlik: 0.85)
[Kullanıcı Mesajı]
...mevcut sorgu...
Memo, harici sohbet sağlayıcılarının (OpenAI, Claude, vb.) yerel vektör depona yazıp okuyabildiği çapraz mod hafızayı destekler:
Bu sayede ister yerel GGUF modeli ister harici API kullan, hafızan birleşik kalır.
vec_memory tablosu eşzamanlı okumaları destekler; yazmalar sync.RWMutex ile serileştirilirstoreMu ile korunur| İşlem | Tipik Gecikme |
|---|---|
| Parça gömme (512 token) | ~50ms |
| Vektör arama (10K belge) | <5ms |
| Tam aktarım (1MB metin) | ~2s |
| Bağlam enjeksiyonu | <1ms |
En iyi hafıza kalitesi için aynı gömme modelini tutarlı şekilde kullan. Gömme modelini değiştirmek, saklanan tüm belgelerin yeniden indekslenmesini gerektirir.