Logo

Come Costruire un Sistema RAG Locale con OpenClaw e Ollama

Un tutorial completo passo dopo passo su come costruire un sistema RAG (Retrieval-Augmented Generation) 100% offline e rispettoso della privacy usando OpenClaw e Ollama.
CN

Matteo Giardino

Jun 17, 2026

Come Costruire un Sistema RAG Locale con OpenClaw e Ollama

Eseguire l'AI in locale non è più solo per gli smanettoni; è diventato un requisito fondamentale per le aziende che gestiscono dati sensibili e proprietari. Le soluzioni RAG (Retrieval-Augmented Generation) basate sul cloud sono potenti, ma ti costringono a inviare i tuoi documenti interni ad API di terze parti. In questa guida, ti mostrerò come costruire un sistema RAG 100% offline e orientato alla privacy usando OpenClaw e Ollama.

Il Problema della Privacy con la RAG in Cloud

La maggior parte dei tutorial sull'AI aziendale dà per scontato che tu sia a tuo agio nel caricare PDF, wiki aziendali e report finanziari sui server di OpenAI o Anthropic. Per molti CTO e sviluppatori, questa è un'opzione impraticabile a causa della compliance e della governance dei dati.

Spostando l'intera pipeline RAG in locale, ottieni:

  • Nessuna fuga di dati: i tuoi documenti non lasciano mai la tua macchina.
  • Nessun costo ricorrente: una volta configurato l'hardware, l'inferenza è gratuita.
  • Funzionamento air-gapped: funziona perfettamente anche senza una connessione internet.

Ollama rende l'esecuzione dei modelli banale, e OpenClaw fornisce il framework agentico perfetto per orchestrare le fasi di recupero e generazione.

Lo Stack RAG Locale

La nostra architettura offline si basa su tre componenti principali:

  1. Ollama: funge da provider LLM locale (eseguendo un modello come llama3) e da motore di embedding (utilizzando nomic-embed-text).
  2. Local Vector Store: useremo ChromaDB per la sua semplicità e l'esecuzione locale zero-setup puramente in Python.
  3. OpenClaw: l'orchestratore che riceve le query dell'utente, cerca nel database vettoriale e sintetizza la risposta finale.

Passo 1: Installare Ollama e OpenClaw

Per prima cosa, assicurati di avere sia Ollama che OpenClaw installati sul tuo sistema.

Scarica i modelli necessari usando la CLI di Ollama:

# Scarica il modello per la generazione
ollama pull llama3

# Scarica il modello per creare i vector embeddings
ollama pull nomic-embed-text

Passo 2: Configurare il Database Vettoriale

Successivamente, abbiamo bisogno di uno script per ingerire i nostri documenti, convertirli in embedding vettoriali e salvarli localmente.

import chromadb
import requests
import json

client = chromadb.PersistentClient(path="./local_rag_db")
collection = client.get_or_create_collection(name="internal_docs")

# Funzione per ottenere gli embedding da Ollama
def get_embedding(text):
    response = requests.post('http://localhost:11434/api/embeddings',
                             json={'model': 'nomic-embed-text', 'prompt': text})
    return response.json()['embedding']

# Esempio di ingestione
documents = [
    "OpenClaw è un framework modulare per agenti AI.",
    "Ollama ti permette di eseguire LLM localmente."
]

for i, doc in enumerate(documents):
    embedding = get_embedding(doc)
    collection.add(
        embeddings=[embedding],
        documents=[doc],
        ids=[f"doc_{i}"]
    )
print("Ingestione completata!")

Passo 3: Configurare l'Agente OpenClaw

Ora, creiamo un agente OpenClaw e forniamogli un tool per interrogare il nostro ChromaDB locale.

import { Agent, Tool } from 'openclaw';
import { ChromaClient } from 'chromadb';

const db = new ChromaClient({ path: "./local_rag_db" });

const searchDocsTool = new Tool({
  name: "search_internal_docs",
  description: "Cerca nel database vettoriale locale i documenti interni.",
  execute: async (query) => {
    // In un'app reale, convertiresti prima la query in un embedding via Ollama
    const collection = await db.getCollection("internal_docs");
    const results = await collection.query({
        queryTexts: [query],
        nResults: 2
    });
    return results.documents[0].join("\n");
  }
});

const ragAgent = new Agent({
  model: 'ollama/llama3',
  tools: [searchDocsTool],
  systemPrompt: "Sei un assistente utile. Usa sempre il tool search_internal_docs per rispondere alle domande basandoti sulla knowledge base locale."
});

Conclusione

Combinando l'architettura flessibile degli agenti di OpenClaw con i modelli locali privi di frizioni di Ollama, costruire un sistema RAG robusto e orientato alla privacy è realizzabile in meno di un'ora. Questa configurazione scala magnificamente per le knowledge base interne e i deployment offline.

Se incontri ostacoli durante la configurazione, dai un'occhiata alla documentazione di OpenClaw per configurazioni più avanzate dei tool.

CN
Matteo Giardino