Self-hosten van Perplexica - met Ollama

Een copilot-stijl service lokaal uitvoeren? Eenvoudig!

Inhoud

Dat is zeer opwindend! In plaats van copilot of perplexity.ai aan te roepen en aan het hele wereldje 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
  • De AI zoekt op het internet naar antwoorden (je kunt aangeven waar je wilt zoeken: wetenschappelijke artikelen, schrijven, YouTube, Reddit…)
  • Vervolgens samenvat de AI alles wat hij heeft gevonden
  • Vervolgens presenteert 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 iets verder wilt verkennen

Die systemen worden in de cloud gehost en behoren tot enige bedrijven (bijvoorbeeld, Microsoft of Meta). Perplexica is open source software die je op je PC of krachtige laptop kunt hosten.

perplexica response with llama3.1 8b q6 and jina embeddings Hier zien we het antwoord van Perplexica met Chat model llama3.1 8b q6 en jina Embedding model - 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 op zichzelf, je kunt elke 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 afzonderlijke modules, één die de API biedt, de ander is de UI
  3. Ollama Service - dat geen onderdeel is van het perplexica project, maar als je je LLMs lokaal wilt hosten, is Ollama de enige manier om ze te gebruiken.

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 dat 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 beschikbaar te maken op het netwerk (Perplexica moet er vanuit docker op aansluiten)

[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 ‘Andere Ollama modellen installeren’ hieronder.

Perplexica installeren

Ik heb de docker-gebaseerde 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

Herschrijf het bestand sample.config.toml naar config.toml. Als je later Perplexica wilt bijwerken - door git pull in deze repository uit te voeren - dan kopieer gewoon het bestand sample.config.toml naar config.toml

cp sample.config.toml config.toml

Bewerk het configbestand

nano config.toml

Voor Docker-instellingen, moet je alleen de volgende velden invullen:

OLLAMA: Je Ollama API URL.

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

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

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

docker compose up -d

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

Je kunt Perplexica bereiken 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 het embeddingmodel nomic-embed-text:137m-v1.5-fp16.

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

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

Andere Ollama modellen installeren

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

Je hebt slechts één model nodig voor het 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

Het 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 langzamer.
  • 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

Vergelijkend met Llama3.1:8b, produceert Gemma2 meer concieze en artistieke 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.

# het standaardmodel, 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

# het standaardmodel, 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 de modellen te controleren die Ollama lokaal heeft in de repository:

ollama list

Om een onnodig 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 hierboven genoemde sectie Ollama installatie heb je het 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 probeer het zelf maar.

Perplexica netwerkinstallatie

Als je het op een netwerkserver installeert, dan voordat de

docker compose up -d

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

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

Voeg de IP-adres van je perplexica-server toe 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 (!!! alleen als je dat nodig hebt)
docker compose down --rmi all

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

# Haal de updates op
git pull

# Werk en bouw de Docker-containers opnieuw:
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 een alternatief voor perplexity.ai en Copilot-systemen dat gebruikers toelaat om 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 dan het installeren van Perplexica.

  • V: Wat zijn de aanpasopties 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.