Självhyst Perplexica – med Ollama

Kör en Copilot-tjänst lokalt? Det är enkelt!

Sidinnehåll

Det är väldigt 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ärdshålla en liknande tjänst på din egen PC eller bärbara dator!

Perplexica är ett system som liknar Copilot och Perplexity.ai.

  • Du ställer en fråga
  • AI:n letar efter svaren på internet (du kan specificera var den ska söka: akademiska artiklar, texter, YouTube, Reddit…)
  • Sedan sammanfattar AI:n allt den har hittat
  • Sedan presenteras resultatet med referenser till de ursprungliga webbplatserna
  • Dessutom en lista med bilder och YouTube-videos till höger
  • Och uppföljningsfrågor redo för att du ska klicka på, om du vill utforska ämnet lite mer

Dessa system är värdshållna i molnet och tillhör vissa bolag (till exempel Microsoft eller Meta). Perplexica är en Open Source-programvara du kan värdshålla på din PC eller kraftfulla bärbara dator.

Samma upstream-kodbas distribueras nu som Vane; Vane (Perplexica 2.0) Quickstart With Ollama and llama.cpp täcker aktuella Docker-images, SearxNG och lokala inferensvägar om du är med i det omnamnda projektet.

För en bredare jämförelse av lokal Ollama med vLLM, Docker Model Runner, LocalAI och molnleverantörer – inklusive kostnads- och infrastrukturell avvägning – se LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared.

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

Perplexica består av flera moduler

  1. SearxNG - Metasökmotor. Den kommer att anropa 10+ andra sökmotorer för att få resultaten, så att Perplexica kan kombinera dem. SearxNG är mycket konfigurerbar i sig själv, du kan aktivera och inaktivera 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 dessa två separata moduler, den ena tillhandahåller API, den andra är gränssnittet (UI).
  3. Ollama-tjänst - det är inte en del av Perplexica-projektet, men om du vill att dina LLM:ar ska vara värdshållna lokalt, är Ollama det enda sättet att använda dem.

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

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

Installation av 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 Ollama att den ska ladda ner din favorit-LLM. Om det är Llama3.1 8b q4 - kör skriptet:

ollama pull llama3.1:latest

Dra ner den senaste versionen av Nomic-Embed-Text för att använda som inbäddningsmodell (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 mot nätverket (Perplexica behöver ansluta till den från inuti docker)

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

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

sudo systemctl daemon-reload
sudo systemctl restart ollama

Kontrollera att Ollama startade lyckat

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

En detaljerad beskrivning av hur man installerar, uppdaterar och konfigurerar Ollama hittar du här: Install and configure Ollama

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

Installation av Perplexica

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

Låt oss gå!

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

Klona Perplexica-repositoriet:

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

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

cd Perplexica

Byt namn på filen sample.config.toml till config.toml. Om du tänker uppdatera Perplexica senare - genom att göra git pull i detta repositorium - då kopiera bara filen sample.config.toml till config.toml

cp sample.config.toml config.toml

Redigera konfigurationsfilen

nano config.toml

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

OLLAMA: Din Ollama API-URL.

Du ska ange den som http://host.docker.internal:PORT_NUMBER.

Om du installerade Ollama på port 11434 (det är standard), använd http://host.docker.internal:11434. För andra portar, justera motsvarande.

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

docker compose up -d

Det kommer att dra ner SearxNG och basnode-docker-images, bygga två Perplexica-docker-images och starta 3 containrar. Vänta några minuter tills installationen är klar.

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

Gå till Inställningar. Du vet - kugghjulsikonen längst ner till vänster, och välj dina Ollama-modeller

perplexica settings - configuring ollama models

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

Du kan också välja Ljust eller Mörkt tema, vilket du föredrar.

Perplexica-sökalternativ (Klicka på detta öga-i-rutan-ikonen), i Mörkt tema: perplexica search options

Installation av andra Ollama-modeller

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

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

Chat-modeller

Fullständigt namn på chat-modellen 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 att du provar

  • llama3.1:8b-instruct-q6_K (6.7GB) - i mina test visade den mycket bättre svar, men var lite långsammare.
  • llama3.1:8b-instruct-q8_0 (8.5GB) - eller kanske denna.

Totalt sett är alla modeller från llama3.1:8b-gruppen relativt snabba.

Du kan dra ner de jag rekommenderade 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 koncisa 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 standarden, 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 standarden, 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 vilka modeller Ollama har i lokalt repositorium:

ollama list

För att ta bort onödiga modeller:

ollama rm qwen2:7b-instruct-q4_0 # för exempel

Inbäddningsmodeller

Du kan hoppa över installation av dessa, Perplexica har förinstallerade 3 inbäddningsmodeller: BGE Small, GTE Small och Bert bilingual. De fungerar inte så dåligt, men du kanske vill prova andra inbäddningsmodeller.

I Ollama-installationsavsnittet ovan installerade du nomic-embed-text:latest-inbäddningsmodellen, det är en bra modell, men jag skulle rekommendera att du också provar:

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.

Nätverksinstallation av Perplexica

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

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

Sätt in din Perplexica-server-IP-adress i docker-compose.yaml: därefter 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

Starta nu Perplexica och SearxNG-containrar:

docker compose up -d

Eller bygga om och starta:

docker compose up -d --build

Uppdatering av Perplexica

Perplexica som körs på docker:

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

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

# dra ner uppdateringarna
git pull

# Uppdatera och bygga om Docker-containrar:
docker compose up -d --build

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

FAQ

  • F: Vad är Perplexica?

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

  • F: Vilka är stegen för att installera och sätta upp Perplexica med Ollama?

  • S: Stegen inkluderar att installera Ollama, dra ner modellerna, och sedan installera Perplexica.

  • F: Vilka anpassningsalternativ finns i Perplexica?

  • S: Alternativ inkluderar att välja olika modeller som LLama 3.1, Mistral Nemo eller Gemma2, sätta upp lokala inbäddningsmodeller, och utforska olika sökalternativ som nyheter, akademiska artiklar, YouTube-videos och Reddit-forum.

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

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

För att se hur Ollama (Perplexica:s typiska backend) passar ihop med vLLM, Docker Model Runner, LocalAI och molnleverantörer, kolla vår LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared-guide.

Användbara länkar

Prenumerera

Få nya inlägg om system, infrastruktur och AI-ingenjörskonst.