Självhosting av Perplexica - med Ollama

Kör en copilot-stilad tjänst lokalt? Lätt!

Sidinnehåll

Det är mycket spännande! Istället för att ringa copilot eller perplexity.ai och berätta för hela världen vad du letar efter, kan du nu värd för en liknande tjänst på din egen PC eller bärbara dator!

Vad det är

Perplexica är ett system liknande Copilot och Perplexity.ai.

  • Du ställer en fråga
  • AI söker på internet efter svar (du kan specificera var du vill söka: akademiska artiklar, skrivande, YouTube, Reddit…)
  • Sedan sammanfattar AI allt som hittats
  • Presentera sedan resultatet med referenser till originalwebbplatser
  • Även en lista med bilder och YouTube-videor till höger
  • Även följdfrågor redo för dig att klicka på, om du vill utforska ämnet lite mer

Dessa system värdas i molnet och tillhör olika företag (till exempel Microsoft eller Meta). Perplexica är en Open Source-software som du kan värda på din PC eller kraftfull bärbara dator.

perplexica response with llama3.1 8b q6 and jina embeddings Här ser vi Perplexicas svar med Chat-modellen llama3.1 8b q6 och jina Embedding-modell - på frågan Vem är Elon Mask?

Perplexica består av flera moduler

  1. SearxNG - Metasökmotor. Den kommer att ringa 10+ andra sökmotorer för att få resultaten, så att Perplexica kan kombinera dem. SearxNG är mycket konfigurerbar i sig, du kan slå på och av varje motor och lägga till nya. Men för våra ändamål fungerar standardkonfigurationen bra.
  2. Perplexica Backend och Frontend. Tekniskt sett är detta två separata moduler, en tillhandahåller API, den andra är UI
  3. Ollama Service - som inte är en del av Perplexica-projektet, men om du vill ha dina LLMs värdade lokalt, är Ollama det enda sättet att använda dem.

Så installation av hela systemet består av två stora steg:

  1. Installera Ollama + ladda ner Ollama-modeller
  2. Installera Perplexica tillsammans med SearxNG

Installera Ollama

För att börja med Ollama, följ dessa steg:

Installera Ollama genom att köra skriptet:

curl -fsSL https://ollama.com/install.sh | sh

Berätta för Ollama att ladda ner din favorit LLM. Om det är Llama3.1 8b q4 - kör skriptet:

ollama pull llama3.1:latest

Ladda ner den senaste versionen av Nomic-Embed-Text för att använda som embedding-modell (om det är din favorit) med

ollama pull nomic-embed-text:latest

Redigera Ollama-tjänstefilen genom att köra

sudo systemctl edit ollama.service

Lägg till följande rader för att exponera Ollama för nätverket (Perplexica behöver ansluta till det från insidan av docker)

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

Ladda om systemd-daemon och starta om Ollama-tjänsten:

sudo systemctl daemon-reload
sudo systemctl restart ollama

Kontrollera att Ollama startade framgångsrikt

systemctl status ollama.service
sudo journalctl -u ollama.service --no-pager

Detaljerad beskrivning av hur man installerar, uppdaterar och konfigurerar Ollama, se: Installera och konfigurera Ollama

För detaljer om användning av andra Ollama-modeller med Perplexica, se avsnittet ‘Installera andra Ollama-modeller’ nedan.

Installera Perplexica

Jag har installerat dockeriserad Perplexica på linux, men en mycket liknande docker-compose kan användas på Windows eller Mac.

Låt oss börja!

Kom igång med Docker (Rekommenderas) Se till att Docker är installerat och körs på ditt system.

Klona Perplexica-repositorn:

git clone https://github.com/ItzCrazyKns/Perplexica.git

Efter kloningen, navigera till mappen som innehåller projektfilerna.

cd Perplexica

Byt namn på sample.config.toml-filen till config.toml. Om du avser att uppdatera Perplexica senare - att göra git pull in i detta repository - då kopierar du bara sample.config.toml-filen till config.toml

cp sample.config.toml config.toml

Redigera konfigureringsfilen

nano config.toml

För Docker-uppsättningar behöver du bara fylla i följande fält:

OLLAMA: Din Ollama API URL.

Du bör ange det som http://host.docker.internal:PORT_NUMBER.

Om du installerat Ollama på port 11434 (det är standardporten), använd http://host.docker.internal:11434. För andra portar, justera därefter.

När du fortfarande är i Perplexica-mappen, kör:

docker compose up -d

Det kommer att ladda ner SearxNG och basnodens docker-bilder, bygga två Perplexica docker-bilder och starta 3 containrar. Vänta några minuter medan inställningen slutförs.

Du kan komma åt Perplexica på http://localhost:3000 i din webbläsare.

Gå till Inställningar. Du vet - ikonen med kugghjulet längst ned till vänster, och välj dina Ollama-modeller

perplexica settings - configuring ollama models

Här ser du att Chat-modellen llama3.1:8b-instruct-q6_K (Llama 3.1 8b med kvantisering q6_K) är vald, och Embedding-modellen nomic-embed-text:137m-v1.5-fp16.

Du kan också välja Light eller Dark tema, vilket du föredrar.

Perplexica sökalternativ (Klicka på den här ögonikonen i rutan), i Dark tema: perplexica search options

Installera andra Ollama-modeller

Du har redan installerat modellerna llama3.1:latest och nomic-embed-text:latest i avsnittet “Installera Ollama” tidigare.

Du behöver bara en modell för chatt, men det finns många modeller tillgängliga. De beter sig något olika, det är bra att börja med de vanligaste: Llama3.1, Gemma2, Mistral Nemo eller Qwen2.

Chattmodeller

Fullständigt namn på chattmodellen som du såg i installationsavsnittet - llama3.1:latest är llama3.1:8b-text-q4_0. Det betyder att den har 8 miljarder parametrar och kvantisering 4_0. Den är snabb och relativt liten (4,8GB), men om din GPU har lite mer minne skulle jag rekommendera dig att prova

  • llama3.1:8b-instruct-q6_K (6,7GB) - i mina tester visade den mycket bättre svar, men var lite långsammare.
  • llama3.1:8b-instruct-q8_0 (8,5GB) - eller kanske den här.

Överlag är alla modellerna från gruppen llama3.1:8b relativt snabba.

du kan ladda ner de jag rekommenderar att prova med skriptet:

ollama pull llama3.1:8b-instruct-q6_K
ollama pull llama3.1:8b-instruct-q8_0

Jämfört med Llama3.1:8b producerar Gemma2 mer sammanfattande och konstnärliga svar. Prova dessa:

# 9,8GB
ollama pull gemma2:9b-instruct-q8_0

# 14GB
ollama pull gemma2:27b-instruct-q3_K_L

Mistral Nemo-modellerna producerar svar någonstans mellan gemma2 och llama3.1.

# den standard, 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

Du kanske också vill prova Qwen2-modellerna

# den standard, 4,4GB
ollama pull qwen2:7b-instruct-q4_0

# 8,1GB
ollama pull qwen2:7b-instruct-q8_0

De modeller jag gillade mest är: llama3.1:8b-instruct-q6_K och mistral-nemo:12b-instruct-2407-q8_0.

För att kontrollera modellerna som Ollama har i det lokala repositoriet:

ollama list

För att ta bort någon onödig modell:

ollama rm qwen2:7b-instruct-q4_0 # till exempel

Embedding-modeller

Du kan hoppa över installationen av dessa, Perplexica har förinstallerade 3 embedding-modeller: BGE Small, GTE Small och Bert bilingual. De fungerar inte dåligt, men du kanske vill prova andra embedding-modeller.

I Ollama installationsavsnittet ovan installerade du nomic-embed-text:latest embedding-modellen, det är en bra modell, men jag skulle rekommendera dig att prova också:

ollama pull jina/jina-embeddings-v2-base-en:latest
# och
ollama pull bge-m3:567m-fp16

Jag gillade resultatet av jina/jina-embeddings-v2-base-en:latest mest, men se själv.

Perplexica Nätverksinstallation

Om du installerar det på en nätverksserver, då innan

docker compose up -d

eller om du redan kör Perplexica, och behöver bygga om bilderna

# Stanna och ta bort alla containrar (!!! om du bara behöver det)
docker compose down --rmi all

Lägg till din Perplexica-serverns IP-adress i docker-compose.yaml: då innan

nano docker-compose.yaml
perplexica-frontend:
    build:
      context: .
      dockerfile: app.dockerfile
      args:
      - NEXT_PUBLIC_API_URL=http://127.0.0.1:3001/api   # << här
      - NEXT_PUBLIC_WS_URL=ws://127.0.0.1:3001          # << här
    depends_on:
      - perplexica-backend

nu starta Perplexica och SearxNG containrarna:

docker compose up -d

Eller bygg om och starta:

docker compose up -d --build

Uppdatera Perplexica

Perplexica körs på docker:

# Stanna och ta bort alla containrar (!!! om du bara behöver det)
docker compose down --rmi all

# navigera till projektmappen
# där du klonade Perplexica under installationen
cd Perplexica

# ladda ner uppdateringarna
git pull

# Uppdatera och Bygg om Docker Containrarna:
docker compose up -d --build

För icke-docker-installationer, se: https://github.com/ItzCrazyKns/Perplexica/blob/master/docs/installation/UPDATING.md

Vanliga frågor

  • F: Vad är Perplexica?

  • S: Perplexica är en gratis självvärdad AI-sökmotor och ett alternativ till perplexity.ai och Copilot-system som låter användare köra sin egen sökmotor lokalt på sin dator.

  • F: Vilka steg krävs för att installera och konfigurera Perplexica med Ollama?

  • S: Stegen inkluderar installation av Ollama, laddning av modellerna, sedan installation av Perplexica.

  • F: Vilka anpassningsalternativ finns i Perplexica?

  • S: Alternativen inkluderar att välja olika modeller som LLama 3.1, Mistral Nemo eller Gemma2, att konfigurera lokala embedding-modeller och utforska olika sökalternativ som nyheter, akademiska artiklar, YouTube-videor och Reddit-forum.

  • F: Vilken Ollama-modell ska man använda med Perplexica?

  • S: De bästa resultaten vi fick i våra tester var när vi körde Perplexica med llama3.1:8b-instruct-q6_K och jina/jina-embeddings-v2-base-en:latest.

Användbara länkar