Add --reassign mode for fast vector recovery without disk scanning

Skips the slow folder scan (50K+ files) and upload phases — directly
re-embeds already-uploaded documents to workspaces using progress state.
Use with --reset to clear assignment tracking first.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
salvacybersec
2026-04-07 00:04:36 +03:00
parent 9e9b75e0b3
commit c45efcb261
2 changed files with 126 additions and 14 deletions

View File

@@ -11,6 +11,8 @@
- **OCR:** ocrmypdf (tur+eng)
- **Kitap Kaynağı:** `/mnt/storage/Common/Books/`
Kitaplar diskte tek kopya halinde durur (`/mnt/storage/Common/Books/`). AnythingLLM API'sine upload edildiğinde tokenize edilmiş metadata kopyası `documents/` klasörüne alınır. `config.yaml`'da aynı klasör birden fazla persona'ya atanabilir — diskte duplicate oluşmaz, her workspace kendi vektör embedding'ini tutar.
## Personalar (5 Cluster)
| Cluster | Personalar |
@@ -23,24 +25,52 @@
## Kullanım
### Durum Kontrolü
```bash
# Durum kontrolü
python3 setup.py --status
```
# Workspace oluştur / güncelle
### Workspace Oluştur / Güncelle
```bash
python3 setup.py --create-workspaces
python3 setup.py --create-workspaces --persona frodo
```
# Tam pipeline (upload + OCR + embed)
### Tam Pipeline (upload + OCR + embed)
```bash
python3 setup.py --upload-documents --resume
# Tek cluster veya persona
python3 setup.py --upload-documents --cluster cyber --resume
python3 setup.py --upload-documents --persona neo --priority 1 --resume
# Önizleme
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
# Ö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 --cluster intel
# Sıfırlamadan sadece eksik atamaları tamamla
python3 setup.py --reassign
```
| 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 |
## Pipeline
```
@@ -50,14 +80,34 @@ Phase C: OCR'lı dosyaları upload
Final: Workspace'lere assign/embed
```
`--reassign` modu sadece "Final" adımını çalıştırır — diğer fazları atlar.
## Recovery
Vektör DB silinirse:
1. `upload_progress.json`'da `workspace_docs``{}` sıfırla
2. `python3 setup.py --upload-documents --resume` (sadece re-embed yapar)
### Vektör DB Silinirse
```bash
python3 setup.py --reassign --reset
```
### Tek Persona Vektörü Bozulursa
```bash
python3 setup.py --reassign --reset --persona frodo
```
### Tam Sıfırlama (her şey baştan)
```bash
rm upload_progress.json
python3 setup.py --all
```
## Dosyalar
- `setup.py` — Ana entegrasyon scripti (upload, OCR, workspace assignment)
- `config.yaml` — Persona-klasör eşlemeleri, API config, batch ayarları
- `upload_progress.json` — Upload/atama state tracker (gitignore'd)
| 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) |