From f27ebfa101d48e8a4c63e7cdd52a0de973e7a7a6 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Tue, 14 Apr 2026 15:57:40 +0200 Subject: [PATCH] docs(step-7): aggiorna guida modelli embedding e LLM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sostituisce la tabella embedding con valutazione completa dei modelli disponibili su Ollama, con raccomandazione esplicita per testi italiani. Riduce la sezione LLM alla sola famiglia Qwen3.5 con nota di compatibilità. Semplifica la sezione chromadb --- step-7/README.md | 87 ++++++++++++++++++------------------------------ 1 file changed, 33 insertions(+), 54 deletions(-) diff --git a/step-7/README.md b/step-7/README.md index 2ebd3fd..c5a5b72 100644 --- a/step-7/README.md +++ b/step-7/README.md @@ -48,42 +48,48 @@ sudo groupdel ollama ### Modello di embedding -Per testo in italiano usa **`bge-m3`** — addestrato su 100+ lingue, gestisce l'italiano meglio dei modelli English-first: +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: ```bash -ollama pull bge-m3 +ollama pull qwen3-embedding:0.6b ``` -Alternativa leggera (principalmente inglese, ~274 MB): +Stessa famiglia del LLM in uso (`qwen3.5`), multilingue, recente, gira comodamente in CPU. -```bash -ollama pull nomic-embed-text -``` +| 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 | -| Modello | Dim | Dimensione | Lingue | -|---|---|---|---| -| `bge-m3` | 1024 | ~1.2 GB | 100+ lingue incl. IT | -| `nomic-embed-text` | 768 | ~274 MB | principalmente EN | -| `mxbai-embed-large` | 1024 | ~670 MB | principalmente EN | -| `all-minilm` | 384 | ~46 MB | principalmente EN | +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 -Scegli in base alla RAM disponibile: +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: ```bash -ollama pull qwen3.5:4b # consigliato per 8 GB RAM +ollama pull qwen3.5:4b ``` -| Modello | RAM consigliata | Note | -|---|---|---| -| `qwen3:8b` | ≥ 10 GB | ottima qualità, troppo stretto su 8 GB | -| `qwen3.5:4b` | ≥ 5 GB | buon bilanciamento, **consigliato per 8 GB** | -| `qwen3:4b` | ≥ 5 GB | alternativa stabile | -| `phi4-mini` | ≥ 4 GB | ottimo per instruction following | -| `qwen3:1.7b` | ≥ 3 GB | leggero, qualità base | +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. -Se usi un modello diverso da `qwen3.5:4b`, aggiorna la costante `LLM_MODEL` in `step-9/rag.py`. +| 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 @@ -100,42 +106,15 @@ ollama list --- -## 3. Installa chromadb nel venv +## 3. Installa le dipendenze nel venv + +Assicurati di avere `chromadb` installato nel `.venv`: ```bash source .venv/bin/activate -pip install chromadb +pip install -r requirements.txt ``` -Aggiorna anche `requirements.txt`: - -```bash -pip freeze | grep chromadb >> requirements.txt -``` - -### Disinstalla chromadb - -```bash -source .venv/bin/activate - -# Rimuovi il pacchetto e le dipendenze non più necessarie -pip uninstall chromadb -y -pip autoremove 2>/dev/null || pip uninstall $(pip-autoremove chromadb -l 2>/dev/null) -y 2>/dev/null - -# Rimuovi i dati del vector store (opzionale — occupa spazio su disco) -rm -rf chroma_db/ -``` - -> `pip autoremove` richiede il pacchetto `pip-autoremove` (`pip install pip-autoremove`). -> In alternativa, elimina e ricrea il venv per una pulizia completa: -> ```bash -> deactivate -> rm -rf .venv -> python -m venv .venv -> source .venv/bin/activate -> pip install -r requirements.txt -> ``` - --- ## 4. Verifica tutto @@ -164,5 +143,5 @@ Output atteso se tutto è a posto: ## Prossimo step ```bash -python step-8/ingest.py --stem nietzsche +python step-8/ingest.py --stem ```