docs: aggiorna README con flusso ingestion completo

- README.md: aggiunge step 7 (ingestion) con verifica ambiente,
  comandi base e --force; aggiorna pipeline header e riferimenti
- ingestion/README.md: rinomina da "Step 8" a "Ingestion",
  aggiorna riferimenti da step-6 a chunks/, aggiunge sezione
  "Verifica ambiente", corregge comandi con .venv/bin/python

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-11 16:05:23 +02:00
parent 9e1a72a9e6
commit b49ef8edf0
2 changed files with 44 additions and 10 deletions
+25 -1
View File
@@ -3,7 +3,7 @@
Converte PDF digitali in chunk semantici pronti per la vettorizzazione RAG, Converte PDF digitali in chunk semantici pronti per la vettorizzazione RAG,
senza LLM né OCR. senza LLM né OCR.
**Pipeline:** PDF → Markdown strutturato → chunk semantici **Pipeline:** PDF → Markdown strutturato → chunk semantici → embedding ChromaDB
**Stack:** Python · PyMuPDF · pdfplumber **Stack:** Python · PyMuPDF · pdfplumber
**Non supportati:** PDF scansionati (solo immagini), PDF protetti da password. **Non supportati:** PDF scansionati (solo immagini), PDF protetti da password.
@@ -105,6 +105,29 @@ Il fix gestisce automaticamente: chunk incompleti (frase spezzata), chunk
troppo corti (accorpa al successivo), chunk eccessivamente lunghi (spezza troppo corti (accorpa al successivo), chunk eccessivamente lunghi (spezza
su punteggiatura). Ogni chunk termina sempre su un confine di frase. su punteggiatura). Ogni chunk termina sempre su un confine di frase.
### 7. Esegui l'ingestion
Prima verifica che Ollama e i modelli siano pronti:
```bash
.venv/bin/python ollama/check_env.py
```
Poi genera gli embedding e salva in ChromaDB:
```bash
# Singolo documento
.venv/bin/python ingestion/ingest.py --stem <nome>
# Tutti i documenti in chunks/
.venv/bin/python ingestion/ingest.py
# Rigenera dopo aver cambiato modello o aggiornato i chunk
.venv/bin/python ingestion/ingest.py --stem <nome> --force
```
Output in `chroma_db/<nome>/` (ignorata da git).
--- ---
## Configurazione del chunking ## Configurazione del chunking
@@ -135,3 +158,4 @@ Modificare solo questo file — chunker, verify e fix si aggiornano automaticame
## Riferimenti ## Riferimenti
- [`conversione/README.md`](conversione/README.md) — dettagli sulla pipeline PDF→Markdown e sui tipi di documento supportati - [`conversione/README.md`](conversione/README.md) — dettagli sulla pipeline PDF→Markdown e sui tipi di documento supportati
- [`ingestion/README.md`](ingestion/README.md) — configurazione embedding, scelta modello, regole --force
+19 -9
View File
@@ -1,18 +1,28 @@
# Step 8 — Vettorizzazione # Ingestion — Vettorizzazione
Legge i chunk prodotti da step-6, genera gli embedding tramite Ollama e li Legge i chunk prodotti dal chunker, genera gli embedding tramite Ollama e li
salva in ChromaDB (vector store persistente su disco). salva in ChromaDB (vector store persistente su disco).
--- ---
## Prerequisiti ## Prerequisiti
- Step-6 completato (esiste `step-6/<stem>/chunks.json`) - Chunking completato (esiste `chunks/<stem>/chunks.json`)
- Ollama attivo con il modello di embedding scaricato - Ollama attivo con il modello di embedding scaricato
- `chromadb` installato (`pip install -r requirements.txt`) - `chromadb` installato (`pip install -r requirements.txt`)
--- ---
## Verifica ambiente
Prima di eseguire l'ingestion, verifica che Ollama e i modelli siano disponibili:
```bash
.venv/bin/python ollama/check_env.py
```
---
## Configurazione modello ## Configurazione modello
Il modello di embedding viene letto da **`config.py`**: Il modello di embedding viene letto da **`config.py`**:
@@ -31,16 +41,16 @@ EMBED_MODEL = "nomic-embed-text" # ← cambia qui
```bash ```bash
# Vettorizza un singolo documento # Vettorizza un singolo documento
python ingestion/ingest.py --stem <nome> .venv/bin/python ingestion/ingest.py --stem <nome>
# Vettorizza tutti i documenti trovati in step-6/ # Vettorizza tutti i documenti trovati in step-6/
python ingestion/ingest.py .venv/bin/python ingestion/ingest.py
# Sovrascrive una collection già esistente # Sovrascrive una collection già esistente
python ingestion/ingest.py --stem <nome> --force .venv/bin/python ingestion/ingest.py --stem <nome> --force
# Override modello (senza modificare config.py) # Override modello (senza modificare config.py)
python ingestion/ingest.py --stem <nome> --model bge-m3 .venv/bin/python ingestion/ingest.py --stem <nome> --model bge-m3
``` ```
--- ---
@@ -94,7 +104,7 @@ Senza `--force` lo script salta la collection già esistente — i vecchi vettor
```bash ```bash
# Cambio modello → ricrea sempre la collection # Cambio modello → ricrea sempre la collection
python ingestion/ingest.py --stem <nome> --force .venv/bin/python ingestion/ingest.py --stem <nome> --force
``` ```
### Quando usare `--force` ### Quando usare `--force`
@@ -103,7 +113,7 @@ python ingestion/ingest.py --stem <nome> --force
|---|---| |---|---|
| Prima esecuzione | No | | Prima esecuzione | No |
| Hai cambiato `EMBED_MODEL` | **Sì** | | Hai cambiato `EMBED_MODEL` | **Sì** |
| Hai migliorato i chunk in step-6 | **Sì** | | Hai migliorato i chunk in chunks/ | **Sì** |
| Hai aggiunto nuovi documenti (stem diverso) | No | | Hai aggiunto nuovi documenti (stem diverso) | No |
| Vuoi solo verificare che funzioni | No | | Vuoi solo verificare che funzioni | No |