RAG locale con Ollama senza scrivere codice (Open WebUI, AnythingLLM)
Usare il RAG locale con Ollama significa porre domande a un LLM ospitato in proprio facendogli leggere i tuoi documenti — senza inviare una sola riga al cloud. Due strumenti gratuiti permettono di configurarlo senza programmare: Open WebUI (interfaccia simile a ChatGPT con una base di conoscenze integrata) e AnythingLLM (workspace + citazioni). Questa guida offre una panoramica in 10 minuti, anche su un computer poco potente senza GPU.
#Perché un RAG locale con Ollama
Un RAG (Retrieval-Augmented Generation) risponde a un limite semplice degli LLM: conoscono solo i propri dati di addestramento. Il RAG li collega ai tuoi documenti: PDF di procedure interne, note Markdown, esportazioni di email, contratti, manuali — tutto ciò che non è né pubblico né recente. Il modello legge i passaggi pertinenti prima di rispondere e cita le proprie fonti se lo strumento lo consente.
La versione cloud (ChatGPT, Claude, Gemini) richiede di caricare i tuoi documenti su server di terzi. Per uno studio legale, un medico, un contabile o persino un privato che non vuole vedere le proprie note personali trasferite negli Stati Uniti, è inaccettabile. Un RAG locale con Ollama risolve il problema: tutto rimane sulla tua macchina e mantieni il controllo sia sui costi (zero) sia sulla riservatezza.
- Confidenzialità totale
- I tuoi documenti non lasciano mai la macchina. Nessun token viene inviato a un fornitore.
- Costo marginale nullo
- Nessun abbonamento, nessun limite API. Paghi l'elettricità, punto.
- Offline
- Una volta scaricato il modello, il RAG funziona senza connessione internet.
- Personalizzabile
- Scegli il modello di risposta, il modello di embedding, le fonti.
#Ollama supporta il RAG nativamente?
La tua IA legge i tuoi documenti senza una riga di codice. Rimane la vera domanda: risponde correttamente? Il kit RAG Locale parte da lì (cap. 1), approfondisce l'uso avanzato di Open WebUI e AnythingLLM (cap. 13) e ti insegna a misurare le risposte errate e le citazioni inventate (cap. 14).
- Spazio online a vita
- PDF + file
- Aggiornamenti a vita
Risposta chiara: no. Ollama è un motore di inferenza — scarica ed esegue LLM, espone un'API compatibile con OpenAI su http://localhost:11434, ma non è in grado di indicizzare da solo i tuoi documenti. Non dispone né di un database vettoriale, né di uno strumento per suddividere i PDF, né di un'interfaccia per trascinare e rilasciare file.
Tuttavia, sa servire contemporaneamente un modello di generazione e un modello di embedding — è tutto ciò che serve perché un tool esterno (Open WebUI, AnythingLLM, LangChain…) costruisca un RAG su di esso. Quando si parla di RAG locale Ollama, si parla quindi sempre di una combinazione Ollama + interfaccia RAG.
#Prerequisiti
- Ollama installato
- Su Windows, macOS o Linux. È in ascolto per impostazione predefinita su http://localhost:11434.
- Un modello di risposta
- Granite 4.2 8B o Qwen 3.5 9B in Q4_K_M. Prevedere circa 5–7 GB di VRAM o RAM.
- Un modello di embeddings
- nomic-embed-text o mxbai-embed-large. ~300 MB. Indispensabile per vettorializzare i documenti.
- Docker (opzione Open WebUI)
- Docker Desktop su Windows/macOS, o docker.io su Linux. Questo è il metodo di installazione consigliato.
- Spazio su disco
- Almeno 10 GB per il modello LLM + embedding + l'indice vettoriale dei tuoi documenti.
#1. Open WebUI : base di conoscenza integrata
Open WebUI (ex-Ollama WebUI) è l'interfaccia ChatGPT-like più popolare per Ollama. La sua funzionalità Knowledge (base di conoscenze) permette di caricare documenti e di interrogarli con RAG, senza dover configurare nulla dal lato del codice.
- 01Avviare Open WebUI in DockerIn un terminale: docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main. Su Linux nativo, sostituire host.docker.internal con localhost se avvii Ollama fuori Docker.
- 02Aprire l'interfacciaAndare su http://localhost:3000. Creare un account amministratore (il primo account è amministratore per impostazione predefinita). Open WebUI rileva automaticamente Ollama su localhost:11434.
- 03Creare una base di conoscenzaAndare in Workspace → Knowledge → + Create a Knowledge Base. Assegnare un nome (es.: 'Contratti clienti'). È il tuo contenitore vettoriale.
- 04Importare i propri documentiFare clic sul + in alto a destra nella base, poi caricare i propri file PDF, .docx, .md, .txt. Open WebUI li suddivide e calcola gli embedding in background.
- 05Configurare il modello di embeddingSettings (admin) → Documents → Embedding Model Engine = Ollama, Embedding Model = nomic-embed-text. Salvare. Altrimenti, Open WebUI utilizza un modello predefinito meno adatto al francese.
- 06Interrogare la baseIn una nuova chat, digitare # seguito dal nome della base di conoscenza per collegarla. Porre la propria domanda: la risposta viene generata a partire dai chunk pertinenti, con numeri di citazione cliccabili.
#2. AnythingLLM: workspaces e citazioni
AnythingLLM è l'alternativa più matura a Open WebUI nel campo del RAG. Mentre Open WebUI è generalista, AnythingLLM è progettato intorno al concetto di workspace: ogni progetto ha la propria base documentale, il proprio modello e la propria cronologia. Ideale quando vuoi tenere separati 'Contratti clienti', 'Note personali' e 'Documentazione tecnica'.
- 01Installare AnythingLLMScaricare il programma di installazione Desktop da useanything.com per Windows, macOS o Linux. È un'applicazione Electron: per la versione desktop non serve Docker.
- 02Scegliere Ollama come provider LLMAl primo avvio, l'assistente chiede quale LLM utilizzare. Selezionare Ollama, indicare l'URL http://localhost:11434, e scegliere qwen3.5:9b nella lista che si carica automaticamente.
- 03Scegliere il motore di embeddingProssima fase: Embedder. Selezionare Ollama, modello nomic-embed-text. AnythingLLM può anche utilizzare il proprio embedder locale integrato se non hai scaricato nomic-embed-text — meno performante, ma zero configurazione.
- 04Creare un workspaceNella barra laterale: + New Workspace. Assegnargli un nome. Cliccarci sopra, poi sull'icona di caricamento per trascinare i tuoi PDF, .docx, .csv, .epub, URL o persino video YouTube (trascrizione automatica).
- 05Spostare documenti → workspaceAnythingLLM separa l'ingestione (documenti elencati a sinistra) dall'uso (workspace a destra). Selezionare i documenti, fare clic su 'Move to Workspace', poi su 'Save and Embed'. È qui che gli embedding vengono calcolati tramite Ollama.
- 06Parlare con citazioniNel workspace, porre la propria domanda. Ogni risposta contiene un pannello Citations espandibile, che mostra esattamente quali chunk sono stati utilizzati. Molto utile per verificare che il modello non abbia prodotto allucinazioni.
- Open WebUI
- Migliore se vuoi un'interfaccia generalista simile a ChatGPT, multiutente (per un team), con accesso web. Il RAG è una funzionalità tra le altre.
- AnythingLLM
- Migliore se il RAG è l'uso principale: workspaces stretti, citazioni ben fatte, supporto di più formati (URL, YouTube, GitHub), agenti integrati.
#3. Quale modello di embedding scegliere
Il modello di embedding è il componente che molti trascurano. È questo modello a trasformare i tuoi documenti in vettori: la sua qualità determina direttamente la pertinenza dei passaggi recuperati. Su documenti in francese, alcuni modelli sono nettamente migliori di altri.
- nomic-embed-text (137M, 274 MB)
- La scelta predefinita consigliata. Veloce, con prestazioni multilingue discrete e un contesto di 8192 token. Ottimo compromesso per iniziare. Disponibile direttamente: ollama pull nomic-embed-text.
- mxbai-embed-large (335M, 670 MB)
- Più preciso di nomic, leggermente più lento. Principalmente per l'inglese, ma gestisce anche il francese per documenti standard. Da preferire se la qualità conta più della velocità. ollama pull mxbai-embed-large.
- bge-m3 (567M, 1,2 GB)
- Eccellente nelle attività multilingue (100+ lingue, con supporto nativo per il francese), contesto 8192. Più pesante. Disponibile su Hugging Face, importabile in Ollama tramite Modelfile.
- snowflake-arctic-embed
- Buone prestazioni multilingue, più leggero di bge-m3. Una buona alternativa se bge-m3 è troppo pesante.
#4. RAG locale su 4 GB di RAM, senza GPU
Sì, è fattibile. Il RAG richiede meno risorse di quanto si pensi: il grosso del lavoro (gli embedding) si svolge una tantum durante l'ingestione e, durante l'uso, è semplicemente il LLM a rispondere con qualche migliaio di token di contesto in più. Su una macchina poco potente, il compromesso riguarda soprattutto la scelta del LLM che genera le risposte.
- 4 GB di RAM, CPU lenta (vecchio portatile)
- LLM: qwen3.5:2b o granite4.2:3b in Q4_K_M (~2 GB). Embedding: nomic-embed-text. Risposte lente ma leggibili (3-5 tok/s). Il contesto dell'LLM viene impostato a 2048 per restare sotto il limite della RAM.
- 8 GB di RAM, CPU recente (i5/Ryzen 5)
- LLM: qwen3.5:4b Q4 (~3,4 GB) o gemma4:e2b-it-qat. Embeddings: nomic-embed-text. ~6-10 tok/s. Questa è la configurazione 'piuttosto buona' senza GPU.
- 16 GB di RAM, senza GPU
- LLM: granite4.2:8b o qwen3.5:9b Q4 (~5-7 GB). Embeddings: nomic o mxbai. ~4-8 tok/s usando solo la CPU su un Ryzen 7 o i7 recente.
#Risoluzione dei problemi
- Il modello 'non vede' i miei documenti
- Verifica che la base di conoscenza sia correttamente associata alla chat (Open WebUI: comando #, AnythingLLM: icona workspace). Verifica anche che siano stati effettivamente generati gli embedding dei documenti, e che questi non siano stati soltanto caricati.
- Risposte molto lente sui piccoli modelli
- Il RAG aggiunge da 1000 a 3000 token al contesto. Riduci il top-k (3-5 blocchi invece di 10) nelle impostazioni RAG e abbassa il parametro num_ctx del LLM a 2048 o 4096.
- Allucinazioni anche con documenti presenti
- Aumenta il top-k, verifica che il modello di embedding sia proprio quello usato per l'indicizzazione (un cambio di modello invalida la base). Abilita le citazioni per vedere cosa ha davvero letto il LLM.
- Open WebUI non vede Ollama
- Con Docker, usa --add-host=host.docker.internal:host-gateway, poi in Settings → Connections imposta http://host.docker.internal:11434 come URL di Ollama.
- AnythingLLM si blocca durante la generazione degli embedding
- Spesso è dovuto a una carenza di RAM. Chiudi altre applicazioni, suddividi l'importazione in più parti oppure passa a un modello di embedding più leggero (nomic invece di bge-m3).
#Per approfondire
Una volta configurato il tuo RAG locale con Ollama, ecco alcune guide per proseguire nell'approfondimento:
- RAG locale: introduzione
- Il manuale concettuale che spiega cosa avviene dietro le quinte (chunking, embedding, retrieval) — utile per capire perché funziona o no.
- I migliori modelli di embedding FR
- Confronto dettagliato tra BGE, E5 e Solon per i contenuti in francese — quando sostituire nomic-embed-text.
- Open WebUI con Ollama: guida completa
- Per andare oltre il RAG su Open WebUI: multiutente, profili, prompt personalizzati, pipeline.
- Eseguire un LLM senza GPU
- Guida dettagliata CPU-only con benchmark tokens/sec per CPU — se vuoi ottimizzare il tuo setup RAG senza scheda grafica.
Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.