- step-8/ingest.py: rimuove EMBED_MODEL e OLLAMA_URL hardcoded; li importa da step-9/config.py (fonte di verita unica) - step-7/check_env.py: aggiorna EMBED_MODELS con tutti i modelli del README (aggiunge qwen3-embedding, nomic-embed-text-v2-moe, paraphrase-multilingual); mostra il modello configurato in config.py e verifica proprio quello, non un qualsiasi modello embedding - step-8/README.md: creato
Step 7 — Verifica ambiente
Prima di procedere con la vettorizzazione (step 8) devi avere installato:
- Ollama — server locale per LLM e embedding
- un modello di embedding (es.
nomic-embed-text,bge-m3) - un modello LLM (es.
qwen3.5:4b,qwen3:4b) - chromadb — libreria Python per il vector store
1. Installa Ollama
curl -fsSL https://ollama.com/install.sh | sh
Verifica che il servizio sia attivo:
ollama list
Disinstalla Ollama
# Ferma e rimuovi il servizio systemd
sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm /etc/systemd/system/ollama.service
sudo systemctl daemon-reload
# Rimuovi il binario
sudo rm /usr/local/bin/ollama
# Rimuovi modelli e dati (opzionale — occupa spazio su disco)
# I modelli sono salvati sotto l'utente di sistema "ollama", non nella tua home
sudo rm -rf /usr/share/ollama
# Rimuovi l'utente e il gruppo di sistema creati dall'installer (opzionale)
sudo userdel ollama
sudo groupdel ollama
2. Scarica i modelli
Modello di embedding
Per testi in italiano serve un modello multilingue — i modelli English-first producono embeddings di qualità inferiore su lingue diverse dall'inglese, con retrieval meno preciso.
Prima scelta consigliata:
ollama pull qwen3-embedding:0.6b
Stessa famiglia del LLM in uso (qwen3.5), multilingue, recente, gira comodamente in CPU.
| Modello | Dim | Dimensione | Lingue | Consigliato |
|---|---|---|---|---|
qwen3-embedding:0.6b |
1024 | ~522 MB | multilingue | ✅ prima scelta |
nomic-embed-text-v2-moe |
768 | ~523 MB | multilingue | ✅ seconda scelta |
bge-m3 |
1024 | ~1.2 GB | 100+ lingue incl. IT | ✅ terza scelta |
nomic-embed-text |
768 | ~274 MB | principalmente EN | ⚠️ default corrente |
mxbai-embed-large |
1024 | ~670 MB | principalmente EN | ❌ |
paraphrase-multilingual |
768 | ~278 MB | multilingue | ❌ obsoleto |
all-minilm |
384 | ~46 MB | principalmente EN | ❌ troppo piccolo |
Se cambi modello rispetto a quello usato in step-8, devi rieseguire la vettorizzazione con --force e aggiornare EMBED_MODEL in step-9/config.py.
Modello LLM
Per RAG su testi italiani servono: buon instruction following, supporto multilingue e context window ampia (i prompt RAG includono più chunk).
Prima scelta consigliata per 8 GB RAM:
ollama pull qwen3.5:4b
Il progetto è pensato per la famiglia Qwen3.5 — stessa famiglia dell'embedding consigliato (qwen3-embedding), context window 256K, ottimo italiano. Altri modelli sono compatibili ma non testati.
| Modello | RAM | Note |
|---|---|---|
qwen3.5:0.8b |
≥ 1 GB | minimo assoluto |
qwen3.5:2b |
≥ 3 GB | leggero |
qwen3.5:4b |
≥ 5 GB | consigliato per 8 GB |
qwen3.5:9b |
≥ 8 GB | lento su CPU, meglio con GPU |
Se usi un modello diverso da qwen3.5:4b, aggiorna OLLAMA_MODEL in step-9/config.py.
Disinstalla un modello
ollama rm qwen3.5:4b
ollama rm nomic-embed-text
Per vedere tutti i modelli installati:
ollama list
3. Installa le dipendenze nel venv
Assicurati di avere chromadb installato nel .venv:
source .venv/bin/activate
pip install -r requirements.txt
4. Verifica tutto
source .venv/bin/activate
python step-7/check_env.py
Output atteso se tutto è a posto:
✅ ollama trovato nel PATH
✅ ollama risponde correttamente
✅ modello embedding trovato: nomic-embed-text:latest
✅ modello LLM trovato: qwen3.5:4b
✅ chromadb importabile
✅ Ambiente pronto — procedi con la vettorizzazione:
python step-8/ingest.py --stem <nome>
Prossimo step
python step-8/ingest.py --stem <nome>