# Step 9 — Pipeline RAG Loop interattivo che risponde a domande in linguaggio naturale sul documento indicato. Per ogni domanda: vettorizza la query, recupera i chunk più rilevanti da ChromaDB e genera la risposta tramite Ollama. --- ## Prerequisiti - Step 8 completato (`chroma_db/` popolata) - Ollama attivo con il modello di embedding e il modello LLM scaricati --- ## Avvio ```bash source .venv/bin/activate python step-9/rag.py --stem ``` `--stem` è l'unico argomento CLI. Tutti gli altri parametri si configurano in `config.py`. --- ## Configurazione (`config.py`) | Parametro | Default | Descrizione | |---|---|---| | `TOP_K` | `6` | Chunk recuperati per ogni domanda. Valori consigliati: `3`–`10` | | `TEMPERATURE` | `0.0` | Deterministico a `0.0`, creativo verso `1.0`. Per RAG consigliato `0.0` | | `NO_THINK` | `True` | Disabilita il chain-of-thought interno dei modelli Qwen3/Qwen3.5. `True` = risposta diretta, più veloce | | `EMBED_MODEL` | `"nomic-embed-text"` | Deve corrispondere al modello usato in step-8. Se cambiato, rieseguire step-8 con `--force` | | `OLLAMA_URL` | `"http://localhost:11434"` | Modifica solo se Ollama gira su porta o host diversi | | `OLLAMA_MODEL` | `"qwen3.5:0.8b"` | Modello LLM. Vedi `step-7/README.md` per la scelta | | `SYSTEM_PROMPT` | *(vedi file)* | Istruzioni di comportamento inviate al LLM. Modifica per cambiare tono, lingua o condizione di fallback | --- ## Loop interattivo ``` ── Loop RAG ─────────────────────────────────────── (exit per uscire) Domanda: ``` | Sintassi | Comportamento | |---|---| | `` | Risposta basata sul documento | | ` -v` | Risposta + chunk recuperati con score di similarità | | `exit` | Esce dal programma | --- ## Flusso interno ``` domanda │ ▼ embed (EMBED_MODEL, Ollama) vettore N-dim │ ▼ query ChromaDB — similarità coseno, top-K chunk rilevanti │ ▼ build_prompt (SYSTEM_PROMPT + contesti + domanda) │ ▼ generate (OLLAMA_MODEL, Ollama) risposta ``` Il LLM risponde esclusivamente dal contesto fornito. Se il contesto è irrilevante rispetto alla domanda, lo dichiara esplicitamente. --- ## Test senza RAG Per verificare che Ollama risponda correttamente prima di interrogare il documento: ```bash python step-9/test_ollama.py ``` Chat diretta con il modello, senza ChromaDB. Usa gli stessi parametri di `config.py`.