Update README: bge-m3 embedding, Olla proxy, verification system docs

- Correct embedding model: bge-m3:latest (1024d) via Olla proxy
- Document 3-layer verification system (per-call, first-batch, triple-check)
- Add monitor.py usage section
- Add full recovery procedures including lancedb/vector-cache cleanup
- Document Olla load balancer retry behavior
- Add technical notes on batch size, rate limiting, log buffering

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
salvacybersec
2026-04-07 01:34:16 +03:00
parent dfde494bd4
commit 0eb84bab78

View File

@@ -5,9 +5,10 @@
## Mimari ## Mimari
- **AnythingLLM Desktop** — `http://localhost:3001` - **AnythingLLM Desktop** — `http://localhost:3001`
- **LLM:** Ollama local (qwen3:14b) - **LLM:** Ollama (qwen3:8b) via Olla load balancer
- **Embedding:** Google Gemini (gemini-embedding-001) - **Embedding:** Ollama — `bge-m3:latest` (1024d) via Olla
- **Vector DB:** LanceDB - **Vector DB:** LanceDB
- **Olla Proxy:** `http://100.85.70.44:40114/olla/ollama`
- **OCR:** ocrmypdf (tur+eng) - **OCR:** ocrmypdf (tur+eng)
- **Kitap Kaynağı:** `/mnt/storage/Common/Books/` (39,754 dosya, 67 GB) - **Kitap Kaynağı:** `/mnt/storage/Common/Books/` (39,754 dosya, 67 GB)
@@ -29,6 +30,15 @@
python3 setup.py --status 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 ### Workspace Oluştur / Güncelle
```bash ```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: Dokümanlar zaten upload edilmiş ama vektörler silinmişse veya workspace atamaları bozulmuşsa:
```bash ```bash
# Önizleme python3 setup.py --reassign --reset # tüm workspace'ler
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 --cluster intel python3 setup.py --reassign --reset --cluster intel
python3 setup.py --reassign --reset --persona frodo
# Sıfırlamadan sadece eksik atamaları tamamla python3 setup.py --reassign --reset --dry-run # önizleme
python3 setup.py --reassign python3 setup.py --reassign # sadece eksikleri tamamla
``` ```
| Flag | Açıklama | | Flag | Açıklama |
|------|----------| |------|----------|
| `--reassign` | Disk taraması ve upload yapmadan, `upload_progress.json`'daki mevcut dosyaları workspace'lere embed eder | | `--reassign` | Disk taraması yapmadan mevcut dosyaları embed eder |
| `--reset` | `--reassign` ile birlikte kullanılır. Önce `workspace_docs` kaydını sıfırlar, sonra tümünü yeniden atar | | `--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 ## Pipeline
@@ -75,10 +102,10 @@ python3 setup.py --reassign
Phase A: Text dosyaları upload Phase A: Text dosyaları upload
Phase B: Scanned PDF'leri OCR (ocrmypdf) Phase B: Scanned PDF'leri OCR (ocrmypdf)
Phase C: OCR'lı dosyaları upload 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 ## Recovery
@@ -88,16 +115,18 @@ Final: Workspace'lere assign/embed
python3 setup.py --reassign --reset python3 setup.py --reassign --reset
``` ```
### Tek Persona Vektörü Bozulursa ### Tek Persona Recovery
```bash ```bash
python3 setup.py --reassign --reset --persona frodo python3 setup.py --reassign --reset --persona frodo
``` ```
### Tam Sıfırlama (her şey baştan) ### Tam Sıfırlama
```bash ```bash
rm upload_progress.json rm upload_progress.json
rm -rf ~/.config/anythingllm-desktop/storage/lancedb/*.lance
rm -rf ~/.config/anythingllm-desktop/storage/vector-cache/*
python3 setup.py --all python3 setup.py --all
``` ```
@@ -105,7 +134,18 @@ python3 setup.py --all
| Dosya | Açıklama | | Dosya | Açıklama |
|-------|----------| |-------|----------|
| `setup.py` | Ana entegrasyon scripti (upload, OCR, workspace assignment, reassign) | | `setup.py` | Ana entegrasyon scripti (upload, OCR, embed, reassign, verification) |
| `config.yaml` | Persona-klasör eşlemeleri, API config, batch ayarları | | `config.yaml` | Persona-klasör eşlemeleri (29 persona, 88 path), batch ayarları |
| `upload_progress.json` | Upload/atama state tracker (gitignore'd, makineye özel) | | `monitor.py` | CLI + web dashboard (progress, log tail, cluster view) |
| `ocr_output/` | OCR çıktıları (gitignore'd, büyük dosyalar) | | `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