Self-hosting di Perplexica - con Ollama
Eseguire un servizio simile a Copilot in locale? È semplice!
È davvero entusiasmante! Invece di chiamare Copilot o Perplexity.ai e rivelare al mondo intero cosa stai cercando, ora puoi ospitare un servizio simile sul tuo PC o laptop!
Perplexica è un sistema simile a Copilot e Perplexity.ai.
- Fai una domanda
- L’AI cerca le risposte su Internet (puoi specificare dove cercare: paper accademici, articoli, YouTube, Reddit…)
- Quindi l’AI riassume tutto ciò che ha trovato
- Poi presenta il risultato con i riferimenti ai siti web originali
- Inoltre, mostra una lista di immagini e video YouTube a destra
- E propone domande di follow-up pronte per essere cliccate, se desideri approfondire l’argomento
Questi sistemi sono ospitati nel cloud e appartengono a grandi corporation (ad esempio, Microsoft o Meta). Perplexica è un software Open Source che puoi ospitare sul tuo PC o laptop potente.
Lo stesso codice di base upstream è ora distribuito come Vane; Vane (Perplexica 2.0) Guida Rapida con Ollama e llama.cpp copre le immagini Docker attuali, SearxNG e i percorsi di inferenza locale se ti allinei con il progetto rinominato.
Per un confronto più ampio tra Ollama locale e vLLM, Docker Model Runner, LocalAI e provider cloud—inclusi compromessi su costi e infrastruttura—vedi Hosting LLM: Infrastruttura Locale, Self-Hosted e Cloud Confrontata.
Qui vediamo la risposta di Perplexica con il modello Chat llama3.1 8b q6 e il modello di Embedding jina - alla domanda Chi è Elon Musk?
Perplexica è composto da diversi moduli:
- SearxNG - Motore di metaricerca. Chiamerà oltre 10 altri motori di ricerca per ottenere i risultati, così Perplexica può combinarli. SearxNG è molto configurabile di per sé, puoi attivare e disattivare ogni motore e aggiungerne di nuovi. Ma per i nostri scopi, la configurazione predefinita funziona bene.
- Backend e Frontend di Perplexica. Tecnicamente questi sono due moduli separati, uno fornisce l’API, l’altro l’interfaccia utente (UI).
- Servizio Ollama - non fa parte del progetto Perplexica, ma se vuoi ospitare i tuoi LLM localmente, Ollama è l’unico modo per utilizzarli.
Quindi l’installazione dell’intero sistema consiste in due grandi passi:
- Installa Ollama + scarica i modelli Ollama
- Installa Perplexica insieme a SearxNG
Installazione di Ollama
Per iniziare con Ollama, segui questi passaggi:
Installa Ollama eseguendo lo script:
curl -fsSL https://ollama.com/install.sh | sh
Chiedi a Ollama di scaricare il tuo LLM preferito. Se è Llama3.1 8b q4 - esegui lo script:
ollama pull llama3.1:latest
Trascina l’ultima versione di Nomic-Embed-Text per usarlo come modello di embedding (se è il tuo preferito) usando
ollama pull nomic-embed-text:latest
Modifica il file di servizio Ollama eseguendo
sudo systemctl edit ollama.service
Aggiungendo le seguenti righe per esporre Ollama alla rete (Perplexica deve connettersi ad esso dall’interno di docker)
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Ricarica il demone systemd e riavvia il servizio Ollama:
sudo systemctl daemon-reload
sudo systemctl restart ollama
Verifica che Ollama sia partito con successo
systemctl status ollama.service
sudo journalctl -u ollama.service --no-pager
Per una descrizione dettagliata su come installare, aggiornare e configurare Ollama, vedi: Installa e configura Ollama
Per i dettagli sull’utilizzo di altri modelli Ollama con Perplexica, vedi la sezione ‘Installazione di altri modelli Ollama’ qui sotto.
Installazione di Perplexica
Ho installato Perplexica dockerizzato su Linux, ma un docker-compose molto simile può essere utilizzato su Windows o Mac.
Cominciamo!
Per iniziare con Docker (Consigliato) Assicurati che Docker sia installato e in esecuzione sul tuo sistema.
Clona il repository di Perplexica:
git clone https://github.com/ItzCrazyKns/Perplexica.git
Dopo il cloning, naviga nella directory contenente i file del progetto.
cd Perplexica
Rinomina il file sample.config.toml in config.toml. Se intendi aggiornare Perplexica in futuro - per eseguire git pull in questo repository - allora copia semplicemente il file sample.config.toml in config.toml
cp sample.config.toml config.toml
Modifica il file di configurazione
nano config.toml
Per le configurazioni Docker, devi compilare solo i seguenti campi:
OLLAMA: Il tuo URL API Ollama.
Dovresti inserirlo come http://host.docker.internal:NUMERO_PORTA.
Se hai installato Ollama sulla porta 11434 (che è quella predefinita), usa http://host.docker.internal:11434. Per altre porte, adatta di conseguenza.
Quando ti trovi ancora nella directory Perplexica, esegui:
docker compose up -d
Questo scaricherà le immagini Docker di SearxNG e base node, costruirà due immagini Docker di Perplexica e avvierà 3 container. Aspetta qualche minuto per completare la configurazione.
Puoi accedere a Perplexica all’indirizzo http://localhost:3000 nel tuo browser web.
Vai alle Impostazioni. Sai quale - l’icona dell’ingranaggio in basso a sinistra, e scegli i tuoi modelli Ollama.

Qui vedi il modello Chat selezionato llama3.1:8b-instruct-q6_K (Llama 3.1 8b con quantizzazione q6_K), e il modello di Embedding nomic-embed-text:137m-v1.5-fp16.
Puoi anche selezionare il tema Chiaro o Scuro a seconda delle tue preferenze.
Opzioni di ricerca di Perplexica (Clicca sull’icona dell’occhio nella casella), in tema Scuro:

Installazione di altri modelli Ollama
Hai già installato i modelli llama3.1:latest e nomic-embed-text:latest nella sezione “Installazione di Ollama” precedente.
Hai bisogno di un solo modello per la chat, ma ci sono molti modelli disponibili. Si comportano leggermente in modo diverso, è bene iniziare con quelli più comuni: Llama3.1, Gemma2, Mistral Nemo o Qwen2.
Modelli Chat
Il nome completo del modello chat che hai visto nella sezione di installazione - llama3.1:latest è llama3.1:8b-text-q4_0. Ciò significa che ha 8 miliardi di parametri e quantizzazione 4_0. È veloce e relativamente piccolo (4.8GB), ma se la tua GPU ha un po’ più di memoria, ti consiglio di provare
- llama3.1:8b-instruct-q6_K (6.7GB) - nei miei test ha mostrato una risposta molto migliore, anche se un po’ più lenta.
- llama3.1:8b-instruct-q8_0 (8.5GB) - o forse questo.
In generale, tutti i modelli del gruppo llama3.1:8b sono relativamente veloci.
Puoi scaricare quelli che ho consigliato di provare con lo script:
ollama pull llama3.1:8b-instruct-q6_K
ollama pull llama3.1:8b-instruct-q8_0
Confrontando con Llama3.1:8b, Gemma2 produce risposte più concise e artistiche. Prova questi:
# 9.8GB
ollama pull gemma2:9b-instruct-q8_0
# 14GB
ollama pull gemma2:27b-instruct-q3_K_L
I modelli Mistral Nemo producono risposte da qualche parte tra gemma2 e llama3.1.
# quello predefinito, 7.1GB
ollama pull mistral-nemo:12b-instruct-2407-q4_0
# 10GB
ollama pull mistral-nemo:12b-instruct-2407-q6_K
# 13GB
ollama pull mistral-nemo:12b-instruct-2407-q8_0
Potresti anche voler provare i modelli Qwen2
# quello predefinito, 4.4GB
ollama pull qwen2:7b-instruct-q4_0
# 8.1GB
ollama pull qwen2:7b-instruct-q8_0
I modelli che mi sono piaciuti di più sono: llama3.1:8b-instruct-q6_K e mistral-nemo:12b-instruct-2407-q8_0.
Per verificare i modelli che Ollama ha nel repository locale:
ollama list
Per rimuovere un modello non necessario:
ollama rm qwen2:7b-instruct-q4_0 # per esempio
Modelli di Embedding
Puoi saltare l’installazione di questi, Perplexica ha già installati 3 modelli di embedding: BGE Small, GTE Small e Bert bilingue. Funzionano non male, ma potresti voler provare altri modelli di embedding.
Nella sezione di installazione Ollama sopra hai installato il modello di embedding nomic-embed-text:latest, è un buon modello, ma ti consiglio di provare anche:
ollama pull jina/jina-embeddings-v2-base-en:latest
# e
ollama pull bge-m3:567m-fp16
Mi è piaciuto di più il risultato di jina/jina-embeddings-v2-base-en:latest, ma fallo tu stesso.
Installazione di Rete di Perplexica
Se lo installi su un server di rete, allora prima di
docker compose up -d
o se stai già eseguendo Perplexica e devi ricostruire le immagini
# Fermalo e rimuovi tutti i container (!!! solo se necessario)
docker compose down --rmi all
Inserisci l’indirizzo IP del server Perplexica in docker-compose.yaml: prima di
nano docker-compose.yaml
perplexica-frontend:
build:
context: .
dockerfile: app.dockerfile
args:
- NEXT_PUBLIC_API_URL=http://127.0.0.1:3001/api # << qui
- NEXT_PUBLIC_WS_URL=ws://127.0.0.1:3001 # << qui
depends_on:
- perplexica-backend
ora avvia i container Perplexica e SearxNG:
docker compose up -d
O ricostruisci e avvia:
docker compose up -d --build
Aggiornamento di Perplexica
Perplexica in esecuzione su docker:
# Fermalo e rimuovi tutti i container (!!! solo se necessario)
docker compose down --rmi all
# naviga nella cartella del progetto
# dove hai clonato perplexica durante l'installazione
cd Perplexica
# scarica gli aggiornamenti
git pull
# Aggiorna e Ricrea i Container Docker:
docker compose up -d --build
Per le installazioni non docker, vedi: https://github.com/ItzCrazyKns/Perplexica/blob/master/docs/installation/UPDATING.md
FAQ
-
D: Cos’è Perplexica?
-
R: Perplexica è un motore di ricerca AI self-hosted gratuito e un’alternativa ai sistemi perplexity.ai e Copilot che permette agli utenti di eseguire il proprio motore di ricerca localmente sul proprio computer.
-
D: Quali sono i passaggi per installare e configurare Perplexica con Ollama?
-
R: I passaggi includono l’installazione di Ollama, il download dei modelli, quindi l’installazione di Perplexica.
-
D: Quali opzioni di personalizzazione sono disponibili in Perplexica?
-
R: Le opzioni includono la scelta di diversi modelli come LLama 3.1, Mistral Nemo o Gemma2, la configurazione di modelli di embedding locali e l’esplorazione di varie opzioni di ricerca come notizie, paper accademici, video YouTube e forum Reddit.
-
D: Quale modello Ollama usare con Perplexica?
-
R: I migliori risultati che abbiamo ottenuto nei nostri test sono stati quando abbiamo eseguito Perplexica con llama3.1:8b-instruct-q6_K e jina/jina-embeddings-v2-base-en:latest.
Per vedere come Ollama (il backend tipico di Perplexica) si integra con vLLM, Docker Model Runner, LocalAI e provider cloud, controlla la nostra guida Hosting LLM: Infrastruttura Locale, Self-Hosted e Cloud Confrontata.