Self-hosting Perplexica - con Ollama
Eseguire un servizio nello stile di Copilot in locale? Facile!
Questo è molto eccitante! Invece di chiamare copilot o perplexity.ai e raccontare a tutti il mondo di cosa stai cercando, ora puoi ospitare un servizio simile sul tuo PC o laptop!
Cosa è
Perplexica è un sistema simile a Copilot e Perplexity.ai.
- Tu fai una domanda
- L’AI cerca su internet le risposte (puoi specificare dove cercare: articoli accademici, scrittura, YouTube, Reddit…)
- Poi l’AI riassume tutto ciò che ha trovato
- Poi presenta il risultato con i riferimenti ai siti web originali
- Anche un elenco di immagini e video di YouTube a destra
- Anche domande successive pronte per il clic, se desideri esplorare l’argomento un po’ di più
Quei sistemi sono ospitati in cloud e appartengono a certe corporazioni (ad esempio, Microsoft o Meta). Perplexica è un software Open Source che puoi ospitare sul tuo PC o su un laptop potente.
Qui vediamo la risposta di Perplexica con il modello di chat llama3.1 8b q6 e il modello di embedding jina - alla domanda
Chi è Elon Mask?
Perplexica è composto da diversi moduli
- SearxNG - motore di metacercatore. Chiamerà 10+ altri motori di ricerca per ottenere i risultati, quindi Perplexica può combinarli. SearxNG è molto configurabile da solo, 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
- Servizio Ollama - che non fa parte del progetto Perplexica, ma se desideri ospitare i tuoi LLM localmente, Ollama è l’unico modo per usarli.
Quindi l’installazione di tutto il sistema consiste in due grandi passaggi:
- Installare Ollama + scaricare i modelli Ollama
- Installare 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
Dì a Ollama di scaricare il tuo modello LLM preferito. Se è Llama3.1 8b q4 - esegui lo script:
ollama pull llama3.1:latest
Scarica la versione più recente di Nomic-Embed-Text da usare come modello di embedding (se è il tuo preferito) utilizzando
ollama pull nomic-embed-text:latest
Modifica il file del servizio Ollama eseguendo
sudo systemctl edit ollama.service
Aggiungendo le seguenti righe per esporre Ollama alla rete (Perplexica deve connettersi a esso da dentro il 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 stato avviato correttamente
systemctl status ollama.service
sudo journalctl -u ollama.service --no-pager
Descrizione dettagliata su come installare, aggiornare e configurare Ollama vedi: Installare e configurare Ollama
Per i dettagli su come utilizzare altri modelli Ollama con Perplexica vedi la sezione ‘Installare altri modelli Ollama’ di seguito.
Installazione di Perplexica
Ho installato Perplexica dockerizzato su Linux, ma un docker-compose simile può essere utilizzato su Windows o Mac.
Andiamo!
Inizio 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 aver clonato, naviga nella directory che contiene i file del progetto.
cd Perplexica
Rinomina il file sample.config.toml in config.toml. Se intendi aggiornare Perplexica in seguito - eseguendo git pull in questo repository - allora copia 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 riempire solo i seguenti campi:
OLLAMA: L’URL dell’API di Ollama.
Dovresti inserirlo come http://host.docker.internal:PORT_NUMBER.
Se hai installato Ollama sulla porta 11434 (che è la predefinita), usa http://host.docker.internal:11434. Per altre porte, adatta di conseguenza.
Mentre sei ancora nella directory di Perplexica, esegui:
docker compose up -d
Questo scaricherà le immagini docker di SearxNG e del nodo base, costruirà due immagini docker di Perplexica e avvierà 3 container. Aspetta alcuni minuti per completare l’installazione.
Puoi accedere a Perplexica all’indirizzo http://localhost:3000 nel tuo browser web.
Vai alle Impostazioni. Sai, l’icona del Cog in basso a sinistra, e scegli i tuoi modelli Ollama
Qui vedi il modello di 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 Light o Dark a seconda di quale ti piace di più.
Le opzioni di ricerca di Perplexica (Clicca su questo occhio nell’icona della scatola), nel 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” prima.
Hai bisogno solo di un modello per la chat, ma ci sono molti modelli disponibili. Si comportano leggermente diversamente, è buono iniziare con i più comuni: Llama3.1, Gemma2, Mistral Nemo o Qwen2.
Modelli di chat
Il nome completo del modello di chat che hai visto nella sezione di installazione - llama3.1:latest è llama3.1:8b-text-q4_0. Questo significa che ha 8 miliardi di parametri e quantizzazione 4_0. È veloce e relativamente piccolo (4,8 GB), ma se la tua GPU ha un po’ più di memoria ti consiglio di provare
- llama3.1:8b-instruct-q6_K (6,7 GB) - nei miei test ha mostrato una risposta molto migliore, anche se un po’ più lenta.
- llama3.1:8b-instruct-q8_0 (8,5 GB) - o forse questo.
In generale tutti i modelli del gruppo llama3.1:8b sono relativamente veloci.
puoi scaricare quelli che ti 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 queste:
# 9,8 GB
ollama pull gemma2:9b-instruct-q8_0
# 14 GB
ollama pull gemma2:27b-instruct-q3_K_L
I modelli Mistral Nemo producono risposte in un certo modo tra gemma2 e llama3.1.
# il predefinito, 7,1 GB
ollama pull mistral-nemo:12b-instruct-2407-q4_0
# 10 GB
ollama pull mistral-nemo:12b-instruct-2407-q6_K
# 13 GB
ollama pull mistral-nemo:12b-instruct-2407-q8_0
Potresti anche voler provare i modelli Qwen2
# il predefinito, 4,4 GB
ollama pull qwen2:7b-instruct-q4_0
# 8,1 GB
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 controllare i modelli che Ollama ha nel repository locale:
ollama list
Per rimuovere alcuni modelli non necessari:
ollama rm qwen2:7b-instruct-q4_0 # ad esempio
Modelli di embedding
Puoi saltare l’installazione di questi, Perplexica ha già installati 3 modelli di embedding: BGE Small, GTE Small e Bert bilingual. Lavorano non male, ma potresti voler provare altri modelli di embedding.
Nella sezione di installazione di 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 sono piuti di più i risultati del modello jina/jina-embeddings-v2-base-en:latest, ma vedi per te stesso.
Installazione di rete di Perplexica
Se lo installi su un server di rete, allora prima del
docker compose up -d
o se stai già eseguendo Perplexica e devi ricostruire le immagini
# Fermalo e rimuovi tutti i container (!!! se hai bisogno solo di questo)
docker compose down --rmi all
Inserisci l’indirizzo IP del tuo server Perplexica nel docker-compose.yaml: poi 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 di 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 (!!! se hai bisogno solo di questo)
docker compose down --rmi all
# naviga nella cartella del progetto
# dove hai clonato Perplexica durante l'installazione
cd Perplexica
# pull degli aggiornamenti
git pull
# Aggiornamento e Ricostruzione dei 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
-
Q: Cosa è Perplexica?
-
A: Perplexica è un motore di ricerca AI gratuito e autoospitato e un’alternativa a perplexity.ai e ai sistemi Copilot che consente agli utenti di eseguire il proprio motore di ricerca localmente sul proprio computer.
-
Q: Quali sono i passaggi per installare e configurare Perplexica con Ollama?
-
A: I passaggi includono l’installazione di Ollama, lo scaricamento dei modelli, quindi l’installazione di Perplexica.
-
Q: Quali opzioni di personalizzazione sono disponibili in Perplexica?
-
A: Le opzioni includono la scelta di diversi modelli come LLama 3.1, Mistral Nemo o Gemma2, l’impostazione di modelli di embedding locali e l’esplorazione di diverse opzioni di ricerca come notizie, articoli accademici, video YouTube e forum Reddit.
-
Q: Quale modello Ollama usare con Perplexica?
-
A: 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.
Link utili
- Modelli di embedding e reranker di Qwen3 su Ollama: prestazioni all’avanguardia
- Test: come Ollama utilizza le prestazioni del processore Intel e i core efficienti
- Come Ollama gestisce le richieste parallele
- Test di Deepseek-r1 su Ollama
- Istruzioni di installazione sul sito di Perplexica: https://github.com/ItzCrazyKns/Perplexica
- Esposizione di Perplexica alla rete
- Confronto delle prestazioni di velocità degli LLM
- Installare Ollama e spostare i modelli Ollama in una cartella diversa
- Confronto delle capacità di sintesi degli LLM
- Confronto tra LLM: Mistral Small, Gemma 2, Qwen 2.5, Mistral Nemo, LLama3 e Phi
- Scheda di riferimento per Ollama