# AnythingLLM × Persona RAG Integration 29 persona workspace'i olan, 39,754 dosyalık (67 GB) kitap kütüphanesinden beslenen RAG sistemi. 88 mapped path, 0 unmapped içerik klasörü. Diskte duplicate yok — aynı klasör birden fazla persona'ya atanabiliyor, her workspace kendi vektör embedding'ini tutar. ## Mimari - **AnythingLLM Desktop** — `http://localhost:3001` - **LLM:** Ollama (qwen3:8b) via Olla load balancer - **Embedding:** Ollama — `bge-m3:latest` (1024d) via Olla - **Vector DB:** LanceDB - **Olla Proxy:** `http://100.85.70.44:40114/olla/ollama` - **OCR:** ocrmypdf (tur+eng) - **Kitap Kaynağı:** `/mnt/storage/Common/Books/` (39,754 dosya, 67 GB) ## Personalar (5 Cluster) | Cluster | Personalar | |---------|-----------| | Intel | Frodo, Echo, Ghost, Oracle, Wraith, Scribe, Polyglot | | Cyber | Neo, Bastion, Sentinel, Specter, Phantom, Cipher, Vortex | | Military | Marshal, Centurion, Corsair, Warden, Medic | | Humanities | Chronos, Tribune, Arbiter, Ledger, Sage, Herald, Scholar, Gambit | | Engineering | Forge, Architect | ## Kullanım ### Durum Kontrolü ```bash python3 setup.py --status ``` ### Monitor (CLI + Web) ```bash python3 monitor.py # tek seferlik CLI python3 monitor.py --watch # canlı terminal (2s refresh) python3 monitor.py --web # web dashboard http://localhost:8899 python3 monitor.py --web 9000 # custom port ``` ### Workspace Oluştur / Güncelle ```bash python3 setup.py --create-workspaces python3 setup.py --create-workspaces --persona frodo ``` ### Tam Pipeline (upload + OCR + embed) ```bash python3 setup.py --upload-documents --resume python3 setup.py --upload-documents --cluster cyber --resume python3 setup.py --upload-documents --persona neo --priority 1 --resume python3 setup.py --upload-documents --dry-run ``` ### Re-assign (vektör recovery — tarama/upload yapmadan) Dokümanlar zaten upload edilmiş ama vektörler silinmişse veya workspace atamaları bozulmuşsa: ```bash python3 setup.py --reassign --reset # tüm workspace'ler python3 setup.py --reassign --reset --cluster intel python3 setup.py --reassign --reset --persona frodo python3 setup.py --reassign --reset --dry-run # önizleme python3 setup.py --reassign # sadece eksikleri tamamla ``` | Flag | Açıklama | |------|----------| | `--reassign` | Disk taraması yapmadan mevcut dosyaları embed eder | | `--reset` | Önce workspace_docs kaydını sıfırlar | | `--verbose` / `-v` | Debug-level console + log çıktısı | ## Embedding Doğrulama Sistemi Script her embed işlemini 3 katmanlı doğrulamayla kontrol eder: ### Her API Çağrısı - **5 retry** progressive backoff ile (Olla farklı instance'lara yönlendirebilir) - API 200 dönse bile response body'de error kontrolü - Art arda 5 fail → persona atlanır ### İlk Batch Doğrulama - LanceDB dosyası fiziksel olarak büyüdü mü? - Workspace'e test sorgusu — vektörler aranabilir mi? - Model hatası → tüm işlem ABORT ### Persona Sonu — Triple Check - **LanceDB fiziksel:** `.lance` dizin boyutu ve dosya sayısı - **Workspace API:** Doküman sayısı kontrolü - **Search testi:** Gerçek vektörel arama çalışıyor mu ### Pre-flight - Embedding modeli Olla üzerinden 3 kez test edilir (ilk yükleme 120s sürebilir) - Model bulunamazsa hiç başlamaz ## Pipeline ``` Phase A: Text dosyaları upload Phase B: Scanned PDF'leri OCR (ocrmypdf) Phase C: OCR'lı dosyaları upload Final: Workspace'lere assign/embed (+ doğrulama) ``` `--reassign` modu sadece "Final" adımını çalıştırır. ## Recovery ### Vektör DB Silinirse ```bash python3 setup.py --reassign --reset ``` ### Tek Persona Recovery ```bash python3 setup.py --reassign --reset --persona frodo ``` ### Tam Sıfırlama ```bash rm upload_progress.json rm -rf ~/.config/anythingllm-desktop/storage/lancedb/*.lance rm -rf ~/.config/anythingllm-desktop/storage/vector-cache/* python3 setup.py --all ``` ## Dosyalar | Dosya | Açıklama | |-------|----------| | `setup.py` | Ana entegrasyon scripti (upload, OCR, embed, reassign, verification) | | `config.yaml` | Persona-klasör eşlemeleri (29 persona, 88 path), batch ayarları | | `monitor.py` | CLI + web dashboard (progress, log tail, cluster view) | | `setup.log` | Detaylı log dosyası (gitignore'd) | | `upload_progress.json` | Upload/atama state tracker (gitignore'd) | | `ocr_output/` | OCR çıktıları (gitignore'd) | ## Teknik Notlar - Olla load balancer birden fazla Ollama instance'a dağıtır — embedding modeli her instance'da olmayabilir, bu yüzden her istek 5 retry yapılır - Batch boyutu 5 doc — daha büyük batch'lerde AnythingLLM hang edebilir - Batch arası 5 saniye bekleme (rate limit koruması) - `direct-uploads/` → `/mnt/storage/anythingllm/direct-uploads/` (HDD symlink, SSD tasarrufu) - `--resume` flag'i kesilen işlemi kaldığı yerden devam ettirir - Log dosyası line-buffered — arka planda çalışırken bile anlık yazılır