Vane (Perplexica 2.0) Guida introduttiva con Ollama e llama.cpp
Ricerca AI self-hosted con LLM locali
Vane è una delle opzioni più pragmatiche nell’ambito della “ricerca AI con citazioni”: un motore di risposta self-hosted che combina il recupero live dal web con LLM locali o cloud, mantenendo l’intero stack sotto il vostro controllo.
Il progetto era originariamente noto come Perplexica, e il cambio di nome in Vane non è meramente estetico: riflette sia una pulizia del branding sia uno spostamento costante lontano dalla definizione di “un clone” verso l’idea di un motore di risposta generico.

Dato che la parte utile dello stack non è solo l’interfaccia utente, ma anche dove risiedono l’inferenza e i dati, questo confronto sull’hosting LLM nel 2026 riunisce configurazioni locali, self-hosted e cloud, permettendovi di collocare Vane accanto ad altri runtime e scelte di deployment.
Questo post si concentra sulle parti che i lettori tecnici interessano davvero: come funziona il sistema, un rapido avvio con Docker e come eseguirlo con inferenza locale tramite Ollama e llama.cpp (direttamente o tramite LM Studio). Lungo il percorso, ogni argomento FAQ viene risposto nel contesto, senza essere lasciato per ultimo.
Vane è deliberatamente un motore di risposta piuttosto che un sistema di ricerca ricorsiva, e vale la pena essere precisi su questa distinzione. Sistemi di Ricerca Profonda Self-Hosted: 12 Strumenti Confrontati mette Vane a confronto con dodici architetture di ricerca self-hosted ed spiega perché “eseguire più ricerche” non è la stessa cosa di “effettuare Deep Research”.
Cos’è Vane e come funzionano i motori di ricerca AI
A un livello alto, Vane è un’applicazione Next.js che combina un’interfaccia di chat con ricerca e citazioni. I pezzi architetturali fondamentali sono esattamente ciò ci si aspetterebbe da un moderno motore di ricerca AI: route API per chat e ricerca, un’orchestrazione che decide quando effettuare il recupero e un writer di risposte consapevole delle citazioni.
Quando si invia una query nell’interfaccia utente, Vane chiama POST /api/chat. Internamente, il flusso di lavoro è deliberatamente strutturato:
- Classifica prima la domanda per decidere se la ricerca è necessaria e quali helper dovrebbero essere eseguiti.
- Esegue ricerca e widget in parallelo.
- Genera la risposta finale e include le citazioni.
L’etichetta “motore di ricerca AI” è importante, perché questo non è solo un frontend di chat. La differenza chiave è la generazione aumentata dal recupero (RAG): invece di affidarsi puramente ai parametri del LLM, Vane recupera contesto esterno (risultati web e, facoltativamente, upload degli utenti) e utilizza quel materiale come substrato di supporto per la risposta finale. I suoi documenti chiamano esplicitamente in causa la ricerca web e la “ricerca nei file caricati dagli utenti” come parte della ricerca, con embedding utilizzati per la ricerca semantica sugli upload.
Le citazioni non sono un’afterthought. Vane sollecita il modello a citare i riferimenti utilizzati, poi l’interfaccia utente renderizza quelle citazioni accanto alla risposta. Nella pratica, è questo che separa la ricerca AI “utile” da un generatore di allucinazioni confidente che si trova ad avere un pulsante di ricerca.
SearxNG si trova sotto il livello di recupero web per la maggior parte delle configurazioni. SearxNG è un motore di ricerca metasearch gratuito che aggrega risultati da molti servizi di ricerca e, per progettazione, non traccia né profila gli utenti. Questa è una filosofia fondamentalmente diversa dalle API di ricerca a pagamento, che di solito offrono un indice di un singolo vendor e un contratto di dati commerciale.
Da Perplexica a Vane: storia e cambio di nome
Perplexica è iniziato come un motore di risposta open-source e self-hostabile ispirato a Perplexity AI. Diverse guide pubbliche descrivono ancora il progetto come “precedentemente noto come Perplexica” e trattano Vane come la continuazione piuttosto che come un fork ostile.
Il cambio di nome è stato implementato direttamente nel repository upstream. Nella cronologia dei commit del ramo master, il commit intitolato feat(app): rename to 'vane' appare il 9 marzo 2026 (SHA 39c0f19).
Il “come” è più interessante del titolo. Quel commit di rinomina non è solo una modifica al README: aggiorna i nomi delle immagini Docker da itzcrazykns1337/perplexica a itzcrazykns1337/vane, aggiusta i percorsi del filesystem del container da /home/perplexica a /home/vane e aggiorna di conseguenza il testo e le asset del progetto.
Se vi state chiedendo perché i progetti AI open-source vengano rinominati, Vane è un esempio da manuale dei fattori abituali:
- La vicinanza del nome a un marchio commerciale crea confusione (e talvolta rischio legale).
- L’ambito del progetto si espande oltre la cornice originale (da “clone” a “motore di risposta”).
- Gli artefatti di distribuzione hanno bisogno di un’identità coerente (immagini Docker, documentazione, etichette UI).
Inoltre, l’ecosistema non cambia nome da un giorno all’altro. Docker Hub mostra ancora entrambi i repository sotto l’account del maintainer, inclusi itzcrazykns1337/vane e itzcrazykns1337/perplexica. Quindi vedrete ancora vecchi post di blog, file compose e riferimenti al registry che usano la nomenclatura Perplexica anche dopo il rebranding del repository.
Avvio rapido Docker e configurazione di base
Il README ufficiale di Vane è refrescamente diretto: eseguite un singolo container e otterrete Vane più un backend di ricerca SearxNG incluso. L’avvio rapido minimo con Docker è questo.
docker run -d -p 3000:3000 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:latest
Quell’immagine è posizionata come il percorso “che funziona subito” perché include già SearxNG, quindi non avete bisogno di un backend di ricerca esterno solo per testare l’interfaccia utente. La configurazione avviene nella schermata di setup dopo aver aperto l’interfaccia web su http://localhost:3000.
Se eseguite già SearxNG (comune negli homelab), l’immagine “slim” di Vane si aspetta che la si punti a un’istanza SearxNG esterna utilizzando SEARXNG_API_URL. Il README cita anche due aspettative pratiche per le impostazioni di SearxNG: output JSON abilitato e motore Wolfram Alpha abilitato.
docker run -d -p 3000:3000 \
-e SEARXNG_API_URL=http://your-searxng-url:8080 \
-v vane-data:/home/vane/data \
--name vane \
itzcrazykns1337/vane:slim-latest
Mantenere Vane aggiornato è anche documentato nel repository. Il flusso di lavoro di aggiornamento ufficiale è sostanzialmente prendere l’immagine più recente e riavviare con lo stesso volume, il che preserva le impostazioni.
docker pull itzcrazykns1337/vane:latest
docker stop vane
docker rm vane
docker run -d -p 3000:3000 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:latest
Una volta che è in esecuzione, Vane può essere utilizzato come scorciatoia per un motore di ricerca nel browser puntando un motore personalizzato a http://localhost:3000/?q=%s. Questa è una piccola funzionalità con un impatto sproporzionato se volete che la “ricerca AI” sembri una ricerca piuttosto che un’app che visitate.
Per automazione e integrazione, Vane espone un’API. I documenti descrivono GET /api/providers per scoprire i provider e i modelli configurati, e POST /api/search per eseguire una ricerca con un modello di chat scelto, un modello di embedding, sorgenti e un optimizationMode (velocità, bilanciato, qualità).
Setup LLM locale con Ollama
Vane supporta LLM locali attraverso Ollama e provider cloud nella stessa interfaccia utente, che è l’astrazione giusta se pensate in termini di “connessioni” e “modelli” piuttosto che di “vendor”.
Scheda Rapida Ollama elenca comandi CLI comuni e rapide verifiche API che si abbinano bene alla scelta dei modelli e alla verifica di Ollama prima di inseguire problemi di rete Docker.
Il problema più comune non è la scelta del modello, è la rete. Quando Vane è in esecuzione in Docker e Ollama è in esecuzione sull’host, “localhost” non significa ciò che pensate significhi da dentro il container. Vane documenta URL base specifici per sistema operativo per connettersi a Ollama da un container.
Problemi di connettività con Docker
La sezione di troubleshooting di Vane raccomanda esplicitamente:
- Windows e macOS:
http://host.docker.internal:11434 - Linux:
http://<ip_privato_host>:11434
Per Linux, Vane nota anche che Ollama potrebbe essere legato a 127.0.0.1 di default e ha bisogno di essere esposto. Il README suggerisce di impostare OLLAMA_HOST=0.0.0.0:11434 nel servizio systemd e di riavviare il servizio.
Questo è in linea con le variabili d’ambiente serve di Ollama, dove OLLAMA_HOST controlla l’indirizzo di binding del server e di default è 127.0.0.1:11434.
Mantenere i modelli caldi e scegliere i modelli
Se eseguite inferenza locale, sentirete i cold start. Ollama ha due meccanismi correlati per mantenere i modelli caricati:
OLLAMA_KEEP_ALIVEcome impostazione del server.keep_alivecome parametro per singola richiesta per/api/generatee/api/chat, che sovrascrive il default del server.
Vane ha aggiunto il proprio supporto keep_alive per i modelli Ollama (in modo che l’app possa influenzare per quanto tempo un modello rimane in memoria). Questa funzione appare nelle note di rilascio di Vane v1.10.0.
La selezione del modello è la parte che diventa troppo complicata su internet. Per il lavoro di tipo Vane, la divisione più pratica è:
- Un modello di chat istruito per fine (per sommari e sintesi).
- Un modello di embedding per la ricerca di similarità su upload e testo recuperato. I documenti API di Vane mostrano che la richiesta di ricerca sceglie esplicitamente sia un modello di chat che un modello di embedding.
Ollama stesso supporta workflow di embedding e persino i documenti CLI includono un esempio che usa nomic-embed-text per embedding.
Questa è anche la risposta alla FAQ sull’esecuzione della ricerca AI localmente senza API cloud: con Vane in Docker, SearxNG locale e Ollama sul vostro hardware, potete mantenere sia le vostre query di ricerca che gli upload di documenti privati entro il confine della vostra rete. (Se decidete di connettervi a un provider cloud invece, la connessione cambia ovviamente il percorso dei dati.)
Setup LLM locale con llama.cpp
Ci sono due modi realistici per abbinare Vane con llama.cpp:
- Usare LM Studio come livello server (e lasciare che Vane comunichi con esso).
- Eseguire il server HTTP proprio di llama.cpp (llama-server) e connettersi tramite un endpoint compatibile con OpenAI.
Vane supporta esplicitamente “Server Locali Compatibili con API OpenAI” e chiama in causa i requisiti usuale: legarsi a 0.0.0.0 piuttosto che 127.0.0.1, usare la porta corretta, impostare un nome del modello che esiste sul server e non lasciare vuoto il campo della chiave API anche se il server non applica l’autenticazione.
LM Studio è rilevante qui perché si trova sopra i backend locali (spesso llama.cpp) espone un’API compatibile con OpenAI. Vane v1.12.1 nota specificamente l’aggiunta di un provider LM Studio.
I documenti di LM Studio elencano gli endpoint compatibili con OpenAI supportati e mostrano un esempio di URL base usando http://localhost:1234/v1 (assumendo la porta 1234). Questo conta perché, dal punto di vista di Vane, è “solo un altro server di tipo OpenAI”.
Se preferite eseguire llama.cpp direttamente, Avvio Rapido llama.cpp con CLI e Server copre installazione, llama-cli e llama-server. Il server HTTP ufficiale di llama.cpp supporta route compatibili con l’API OpenAI per chat completions, risposte e embedding, insieme a una lunga lista di funzionalità del server (batching, monitoraggio, uso di tool).
Anche se non memorizzate i flag, le parti importanti sono:
- Il server esiste ed è attivamente documentato.
- La superficie API è abbastanza compatibile perché i client di tipo OpenAI possano comunicare con esso, il che è esattamente ciò di cui ha bisogno Vane per il suo modello di connessione “compatibile con OpenAI”.
Cosa è stato rilasciato di recente e cosa sta cambiando ora
Se volete capire in cosa si è trasformato Vane nell’ultimo anno, seguite le note di rilascio e la cronologia del ramo master piuttosto che l’hype.
Al 10 aprile 2026 (Australia/Melbourne), l’ultimo rilascio GitHub taggato visibile nella pagina dei rilasci è v1.12.1 (31 dicembre 2025). Quella nota di rilascio menziona l’aggiunta di un provider LM Studio e fix intorno al function calling con provider compatibili con OpenAI e al parsing JSON.
I rilasci precedenti delineano i cambiamenti più grandi:
- v1.11.0 (21 ottobre 2025) ha introdotto una nuova guida di setup e un sistema di configurazione ridisegnato, insieme a un supporto più ampio per i provider e un percorso di installazione Docker con un solo comando. Menciona anche il fetch dinamico dei modelli e vari miglioramenti dell’interfaccia utente e dell’esperienza dello sviluppatore.
- v1.12.0 (27 dicembre 2025) è una reset architetturale: rimuove LangChain a favore di un’implementazione personalizzata per streaming, generazione e comportamento specifico per provider. Rinomina anche “provider” in “connessioni”, aggiunge miglioramenti alla renderizzazione dell’interfaccia utente e del codice e sposta più capacità nelle astrazioni proprie del progetto (incluso un function calling migliorato rispetto ai precedenti approcci di parsing).
- Prima, v1.10.0 (20 marzo 2025) ha aggiunto upload di file (PDF, TXT, DOCX), aggiunto un parametro keep_alive per Ollama, aggiunto una classe agente di ricerca meta per migliorare la manutenibilità e la creazione della modalità focus, e aggiunto funzionalità di ricerca automatica di immagini e video.
Sul lato del branding, il cambio di nome in Vane è atterrato il 9 marzo 2026 in master (feat(app): rename to 'vane'), aggiornando sia la nomenclatura del codebase che gli artefatti Docker.
E il progetto non ha smesso di evolversi dopo il rilascio di dicembre 2025. I commit del ramo master dell'8-9 aprile 2026 includono lavoro descritto come “modalità di ricerca profonda aggiornata, gestione del contesto” e nuovi cambiamenti relativi all’esecuzione della ricerca e allo scraping. In altre parole, la parte “motore di ricerca AI” è ancora attivamente iterata, non congelata dietro tag di rilascio.