Self-hosting Perplexica - con Ollama

Eseguire un servizio nello stile di Copilot in locale? Facile!

Indice

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.

risposta di perplexica con llama3.1 8b q6 e jina embeddings 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

  1. 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.
  2. Backend e Frontend di Perplexica. Tecnicamente questi sono due moduli separati, uno fornisce l’API, l’altro è l’interfaccia utente
  3. 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:

  1. Installare Ollama + scaricare i modelli Ollama
  2. 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

impostazioni di perplexica - configurazione dei 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: opzioni di ricerca di perplexica

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.