Zelf-hosten van Perplexica - met Ollama

Een copilot-stijl service lokaal uitvoeren? Eenvoudig!

Inhoud

Dat is erg opwindend!
In plaats van copilot of perplexity.ai aan te roepen en aan de hele wereld te vertellen wat je zoekt,
kan je nu een soortgelijk dienst op je eigen PC of laptop hosten!

Wat het is

Perplexica is een systeem dat vergelijkbaar is met Copilot en Perplexity.ai.

  • Je stelt een vraag
  • AI zoekt op het internet naar antwoorden (je kunt opgeven waar je moet zoeken: wetenschappelijke artikelen, schrijven, YouTube, Reddit…)
  • Vervolgens samenvat AI alles wat hij heeft gevonden
  • Vervolgens presenteert hij het resultaat met verwijzingen naar de oorspronkelijke websites
  • Ook een lijst met afbeeldingen en YouTube-video’s aan de rechterkant
  • Ook volgvrages klaar voor je om te klikken, als je de onderwerpen een beetje verder wilt verkennen

Die systemen zijn in de cloud gehost en behoren tot enige bedrijven (bijvoorbeeld, Microsoft of Meta).
Perplexica is een Open Source software die je op je PC of krachtige laptop kunt hosten.
Voor een breder vergelijk van lokale Ollama met vLLM, Docker Model Runner, LocalAI en cloudproviders—met inbegrip van kosten en infrastructuurtrade-offs—zie LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared.

perplexica response met llama3.1 8b q6 en jina embeddings Hier zien we het antwoord van Perplexica met Chatmodel llama3.1 8b q6 en jina Embeddingmodel - op de vraag Wie is Elon Mask?

Perplexica bestaat uit verschillende modules

  1. SearxNG - Metasearch engine. Het zal 10+ andere zoekmachines aanroepen om de resultaten te krijgen, zodat perplexica ze kan combineren. SearxNG is zeer aanpasbaar, je kunt elk engine aan- of uitschakelen en nieuwe toevoegen. Maar voor onze doeleinden werkt de standaardconfiguratie goed.
  2. Perplexica Backend en Frontend. Technisch gezien zijn dit twee aparte modules, één biedt een API aan, de andere is de UI
  3. Ollama Service - dat geen onderdeel is van de perplexica project, maar als je je LLMs lokaal wilt hosten, is Ollama de enige manier om ze te gebruiken.

Dus de installatie van het hele systeem bestaat uit twee grote stappen:

  1. Installeer Ollama + download Ollama modellen
  2. Installeer Perplexica samen met SearxNG

Ollama installeren

Om te beginnen met Ollama, volg dan deze stappen:

Installeer Ollama door het script uit te voeren:

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

Laat Ollama weten dat je je favoriete LLM wilt downloaden. Als het Llama3.1 8b q4 is - voer het script uit:

ollama pull llama3.1:latest

Haal de nieuwste versie van Nomic-Embed-Text op om te gebruiken als embegging model (als het je favoriete is) met:

ollama pull nomic-embed-text:latest

Bewerk het Ollama servicebestand door uit te voeren

sudo systemctl edit ollama.service

Voeg de volgende regels toe om Ollama te blootstellen aan het netwerk (Perplexica moet er vanaf binnen docker verbinding mee maken)

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

Herlaad de systemd daemon en herstart de Ollama service:

sudo systemctl daemon-reload
sudo systemctl restart ollama

Controleer of Ollama succesvol is gestart

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

Voor een gedetailleerde beschrijving van hoe je Ollama installeert, bijwerkt en configureert zie: Installeer en configureer Ollama

Voor de details over het gebruik van andere Ollama modellen met Perplexica zie de sectie ‘Installeren van andere Ollama modellen’ hieronder.

Perplexica installeren

Ik heb een dockerisatie van Perplexica geïnstalleerd op Linux, maar een zeer vergelijkbare docker-compose kan worden gebruikt op Windows of Mac.

Laten we beginnen!

Aan de slag met Docker (Aanbevolen) Zorg dat Docker is geïnstalleerd en draait op je systeem.

Kloon de Perplexica repository:

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

Na het klonen, navigeer naar de map die de projectbestanden bevat.

cd Perplexica

Hernoem het bestand sample.config.toml naar config.toml. Als je later Perplexica wilt bijwerken - via git pull in deze repository - dan kopieer gewoon het sample.config.toml bestand naar config.toml

cp sample.config.toml config.toml

Bewerk het configbestand

nano config.toml

Voor Dockerconfiguraties moet je alleen de volgende velden invullen:

OLLAMA: De URL van je Ollama API.

Je moet het invoeren als http://host.docker.internal:PORT_NUMMER.

Als je Ollama op poort 11434 hebt geïnstalleerd (dat is de standaard), gebruik dan http://host.docker.internal:11434. Voor andere poorten, pas dit aan.

Als je nog steeds in de Perplexica map bent, voer je uit:

docker compose up -d

Het zal SearxNG en basisnode dockerbeelden ophalen, twee Perplexica dockerbeelden bouwen en drie containers starten. Wacht een paar minuten totdat de installatie voltooid is.

Je kunt Perplexica openen via http://localhost:3000 in je webbrowser.

Ga naar Instellingen. Je weet - het tandwielicoon links onderaan, en kies je Ollama modellen

perplexica instellingen - configureren van ollama modellen

Hier zie je het geselecteerde Chatmodel llama3.1:8b-instruct-q6_K (Llama 3.1 8b met kwantificatie q6_K), en Embeddingmodel nomic-embed-text:137m-v1.5-fp16.

Je kunt ook het lichte of donkere thema kiezen, afhankelijk van wat je meer leuk vindt.

Perplexica zoekopties (Klik op dit oog in het vakicoon), in donker thema: perplexica zoekopties

Installeren van andere Ollama modellen

Je hebt al de modellen llama3.1:latest en nomic-embed-text:latest geïnstalleerd in de sectie “Installeren van Ollama” hierboven.

Je hebt slechts één model nodig voor chatten, maar er zijn veel modellen beschikbaar. Ze gedragen zich iets anders, het is goed om te beginnen met de meest gebruikte: Llama3.1, Gemma2, Mistral Nemo of Qwen2.

Chatmodellen

Volledige naam van het chatmodel dat je in de installatiesectie zag - llama3.1:latest is llama3.1:8b-text-q4_0. Dat betekent dat het 8 miljard parameters heeft en kwantificatie 4_0. Het is snel en relatief klein (4,8 GB), maar als je GPU wat meer geheugen heeft, zou ik aanbevelen om te proberen

  • llama3.1:8b-instruct-q6_K (6,7 GB) - in mijn tests toonde het veel betere antwoord, maar was iets trager.
  • llama3.1:8b-instruct-q8_0 (8,5 GB) - of misschien deze.

Over het algemeen zijn alle modellen uit de llama3.1:8b groep relatief snel.

Je kunt die die ik aanbevolen heb met het script proberen:

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

In vergelijking met Llama3.1:8b produceert Gemma2 conciezer en artistieker antwoorden. Probeer deze:

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

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

De Mistral Nemo modellen produceren antwoorden ergens tussen gemma2 en llama3.1.

# de standaard, 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

Je zou ook de Qwen2 modellen kunnen proberen

# de standaard, 4,4 GB
ollama pull qwen2:7b-instruct-q4_0

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

De modellen die ik het meest heb gemogen zijn: llama3.1:8b-instruct-q6_K en mistral-nemo:12b-instruct-2407-q8_0.

Om te controleren welke modellen Ollama lokaal heeft:

ollama list

Om een ongebruikt model te verwijderen:

ollama rm qwen2:7b-instruct-q4_0 # bijvoorbeeld

Embeddingmodellen

Je kunt deze overslaan, Perplexica heeft 3 embeddingmodellen vooraf geïnstalleerd: BGE Small, GTE Small en Bert bilingual. Ze werken niet slecht, maar je zou andere embeddingmodellen kunnen proberen.

In de Ollama installatiesectie hierboven heb je de nomic-embed-text:latest embeddingmodel geïnstalleerd, het is een goed model, maar ik zou ook aanbevelen om te proberen:

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

Ik heb het resultaat van jina/jina-embeddings-v2-base-en:latest het meest gemogen, maar zie het zelf.

Perplexica netwerkinstallatie

Als je het op een netwerkserver installeert, dan voordat de

docker compose up -d

of als je Perplexica al draait en de beelden opnieuw moet bouwen

# Stop het en verwijder alle containers (!!! als je het alleen nodig hebt)
docker compose down --rmi all

Zet de IP-adres van je perplexica-server in docker-compose.yaml: dan voordat

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

nu start Perplexica en SearxNG containers:

docker compose up -d

Of opnieuw bouw en start:

docker compose up -d --build

Perplexica bijwerken

Perplexica draait op Docker:

# Stop het en verwijder alle containers (!!! als je het alleen nodig hebt)
docker compose down --rmi all

# Navigeer naar de projectmap
# waar je perplexica tijdens de installatie gekloond hebt
cd Perplexica

# Haal de updates op
git pull

# Bijwerken en opnieuw bouwen van Dockercontainers:
docker compose up -d --build

Voor niet-Docker installaties zie: https://github.com/ItzCrazyKns/Perplexica/blob/master/docs/installation/UPDATING.md

FAQ

  • V: Wat is Perplexica?

  • A: Perplexica is een gratis zelfgehoste AI zoekmachine en alternatief voor perplexity.ai en Copilot-systemen dat gebruikers in staat stelt hun eigen zoekmachine lokaal op hun computer te draaien.

  • V: Wat zijn de stappen om Perplexica met Ollama te installeren en in te stellen?

  • A: Stappen omvatten het installeren van Ollama, het ophalen van modellen en het installeren van Perplexica.

  • V: Welke aanpasopties zijn beschikbaar in Perplexica?

  • A: Opties omvatten het kiezen van verschillende modellen zoals LLama 3.1, Mistral Nemo of Gemma2, het instellen van lokale embeddingmodellen en het verkennen van verschillende zoekopties zoals nieuws, wetenschappelijke artikelen, YouTube-video’s en Reddit-forums.

  • V: Welk Ollama-model moet ik met Perplexica gebruiken?

  • A: De beste resultaten die we in onze tests kregen, waren wanneer we Perplexica draaiden met llama3.1:8b-instruct-q6_K en jina/jina-embeddings-v2-base-en:latest.

Om te zien hoe Ollama (de typische backend van Perplexica) past bij vLLM, Docker Model Runner, LocalAI en cloudproviders, zie onze LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared-gids.