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:
- Ollama: funge da provider LLM locale (eseguendo un modello come
llama3) e da motore di embedding (utilizzandonomic-embed-text). - Local Vector Store: useremo ChromaDB per la sua semplicità e l'esecuzione locale zero-setup puramente in Python.
- 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-textPasso 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.
