diff --git a/README.md b/README.md index 34c5251..dabe4a4 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,10 @@ ## Mimari - **AnythingLLM Desktop** — `http://localhost:3001` -- **LLM:** Ollama local (qwen3:14b) -- **Embedding:** Google Gemini (gemini-embedding-001) +- **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) @@ -29,6 +30,15 @@ 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 @@ -50,24 +60,41 @@ python3 setup.py --upload-documents --dry-run Dokümanlar zaten upload edilmiş ama vektörler silinmişse veya workspace atamaları bozulmuşsa: ```bash -# Önizleme -python3 setup.py --reassign --reset --dry-run - -# Tüm workspace'leri sıfırla + yeniden embed et -python3 setup.py --reassign --reset - -# Sadece tek persona veya cluster -python3 setup.py --reassign --reset --persona frodo +python3 setup.py --reassign --reset # tüm workspace'ler python3 setup.py --reassign --reset --cluster intel - -# Sıfırlamadan sadece eksik atamaları tamamla -python3 setup.py --reassign +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ı ve upload yapmadan, `upload_progress.json`'daki mevcut dosyaları workspace'lere embed eder | -| `--reset` | `--reassign` ile birlikte kullanılır. Önce `workspace_docs` kaydını sıfırlar, sonra tümünü yeniden atar | +| `--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 @@ -75,10 +102,10 @@ python3 setup.py --reassign Phase A: Text dosyaları upload Phase B: Scanned PDF'leri OCR (ocrmypdf) Phase C: OCR'lı dosyaları upload -Final: Workspace'lere assign/embed +Final: Workspace'lere assign/embed (+ doğrulama) ``` -`--reassign` modu sadece "Final" adımını çalıştırır — diğer fazları atlar. +`--reassign` modu sadece "Final" adımını çalıştırır. ## Recovery @@ -88,16 +115,18 @@ Final: Workspace'lere assign/embed python3 setup.py --reassign --reset ``` -### Tek Persona Vektörü Bozulursa +### Tek Persona Recovery ```bash python3 setup.py --reassign --reset --persona frodo ``` -### Tam Sıfırlama (her şey baştan) +### 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 ``` @@ -105,7 +134,18 @@ python3 setup.py --all | Dosya | Açıklama | |-------|----------| -| `setup.py` | Ana entegrasyon scripti (upload, OCR, workspace assignment, reassign) | -| `config.yaml` | Persona-klasör eşlemeleri, API config, batch ayarları | -| `upload_progress.json` | Upload/atama state tracker (gitignore'd, makineye özel) | -| `ocr_output/` | OCR çıktıları (gitignore'd, büyük dosyalar) | +| `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