Self-hosting di Perplexica - con Ollama

Eseguire un servizio simile a Copilot in locale? È semplice!

Indice

È 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.

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

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

  1. Installa Ollama + scarica i modelli Ollama
  2. 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.

impostazioni di perplexica - configurazione 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: 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” 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.

Iscriviti

Ricevi nuovi articoli su sistemi, infrastruttura e ingegneria AI.