step-8: add ingest.py, align README
- ingest.py: embed chunks via Ollama nomic-embed-text, index in ChromaDB (cosine space); --stem / --force / batch-100 / ETA display - README: fix step-8 input path (step-5 → step-6), script path (scripts/ → step-8/), add --force explanation and real timings
This commit is contained in:
@@ -506,17 +506,29 @@ Ollama è sempre disponibile sul sistema.
|
||||
### Step 8 — Vettorizzazione
|
||||
|
||||
**Tipo:** automatico (lento)
|
||||
**Input:** `step-5/<stem>/chunks.json`
|
||||
**Input:** `step-6/<stem>/chunks.json`
|
||||
**Output:** `chroma_db/` popolato
|
||||
**Script:** `scripts/ingest.py`
|
||||
**Script:** `step-8/ingest.py`
|
||||
|
||||
```bash
|
||||
python scripts/ingest.py step-5/documento/chunks.json
|
||||
source .venv/bin/activate
|
||||
python step-8/ingest.py --stem <nome>
|
||||
```
|
||||
|
||||
Trasforma ogni chunk in un vettore numerico e lo salva in ChromaDB.
|
||||
È il processo più lento — su CPU circa 1-3 secondi per chunk.
|
||||
Per 300 chunk aspetta 5-15 minuti.
|
||||
È il processo più lento — su CPU circa 1 secondo per chunk.
|
||||
Per 900 chunk aspetta circa 15 minuti.
|
||||
|
||||
**Argomenti:**
|
||||
|
||||
| Argomento | Descrizione |
|
||||
|---|---|
|
||||
| `--stem <nome>` | Processa un singolo documento. Senza questo argomento processa tutti gli stem trovati in `step-6/` |
|
||||
| `--force` | Cancella e ricrea la collection se esiste già. Senza `--force`, se la collection è presente lo step viene saltato |
|
||||
|
||||
**Quando usare `--force`:**
|
||||
Se hai modificato i chunk (es. hai rieseguito step-6 dopo correzioni), la collection in ChromaDB
|
||||
contiene ancora i vecchi vettori. `--force` la cancella e la ricrea da zero con i chunk aggiornati.
|
||||
|
||||
**Cosa succede per ogni chunk:**
|
||||
|
||||
@@ -528,7 +540,7 @@ vettore di 768 numeri
|
||||
[0.23, -0.41, 0.87, 0.12, ...]
|
||||
│
|
||||
▼ ChromaDB
|
||||
salva: testo + vettore + metadati
|
||||
salva: testo + vettore + metadati (sezione, titolo, sub_index)
|
||||
```
|
||||
|
||||
**Perché 768 numeri:**
|
||||
@@ -541,14 +553,16 @@ Questo è ciò che permette il retrieval semantico.
|
||||
|
||||
```
|
||||
✅ Ollama OK — nomic-embed-text disponibile
|
||||
📦 301 chunk da ingestire
|
||||
|
||||
[ 1/301] ✓ sezione_1__sotto_1__s0 ETA: 290s
|
||||
[ 2/301] ✓ sezione_1__sotto_2__s0 ETA: 287s
|
||||
📦 872 chunk da ingestire
|
||||
|
||||
[ 1/872] ✓ sezione_1__sotto_1__s0 ETA: 870s
|
||||
[ 2/872] ✓ sezione_1__sotto_2__s0 ETA: 867s
|
||||
...
|
||||
[301/301] ✓ sezione_9__sotto_42__s0 ETA: 0s
|
||||
[872/872] ✓ sezione_9__sotto_42__s0 ETA: 0s
|
||||
|
||||
✅ Ingestione completata in 312s — 301/301 chunk salvati
|
||||
✅ Ingestione completata in 718s — 872/872 chunk salvati
|
||||
Collection 'nietzsche' in chroma_db/
|
||||
```
|
||||
|
||||
`chroma_db/` contiene ora tutti i vettori su disco.
|
||||
|
||||
Reference in New Issue
Block a user