Hostowanie Perplexica z wykorzystaniem Ollama

Czy uruchamiasz lokalnie usługę w stylu Copilot? To proste!

Page content

To jest bardzo ekscytujące! Zamiast korzystać z Copilota lub perplexity.ai i informować cały świat o swoich potrzebach, możesz teraz hostować podobną usługę na własnym komputerze lub laptopie!

Perplexica to system podobny do Copilota i Perplexity.ai.

  • Zadajesz pytanie
  • AI szuka odpowiedzi w internecie (możesz określić, gdzie ma szukać: prace naukowe, artykuły, YouTube, Reddit…)
  • Następnie AI podsumowuje znalezione informacje
  • Prezentuje wynik ze źródłami do oryginalnych stron internetowych
  • Po prawej stronie znajduje się również lista obrazów i filmów z YouTube
  • Gotowe pytania pogłębiające temat, które możesz kliknąć, jeśli chcesz zgłębić temat bardziej

Te systemy są hostowane w chmurze i należą do niektórych korporacji (na przykład Microsoft lub Meta). Perplexica to oprogramowanie Open Source, które możesz hostować na swoim PC lub potężnym laptopie.

Ten sam kod źródłowy jest teraz dystrybuowany jako Vane; Vane (Perplexica 2.0) Quickstart With Ollama and llama.cpp obejmuje aktualne obrazy Docker, SearxNG oraz ścieżki inferencji lokalnej, jeśli chcesz dostosować się do przemianowanego projektu.

Aby uzyskać szersze porównanie lokalnego Ollama z vLLM, Docker Model Runner, LocalAI i dostawcami chmury – w tym koszty i kompromisy infrastrukturalne – zobacz LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared.

perplexica response with llama3.1 8b q6 and jina embeddings Poniżej widzimy odpowiedź Perplexica z modelem czatu llama3.1 8b q6 i modelem Embedding jina – na pytanie Who is Elon Mask?

Perplexica składa się z kilku modułów:

  1. SearxNG – silnik metawyszukiwania. Wywołuje ponad 10 innych silników wyszukiwania, aby uzyskać wyniki, które Perplexica może połączyć. SearxNG jest bardzo konfigurowalny sam w sobie; możesz włączać i wyłączać poszczególne silniki oraz dodawać nowe. Ale do naszych celów domyślna konfiguracja działa dobrze.
  2. Backend i Frontend Perplexica. Technicznie są to dwa osobne moduły: jeden dostarcza API, a drugi interfejs użytkownika.
  3. Usługa Ollama – nie jest częścią projektu Perplexica, ale jeśli chcesz hostować swoje modele LLM lokalnie, Ollama jest jedynym sposobem na ich użycie.

Zatem instalacja całego systemu składa się z dwóch dużych kroków:

  1. Instalacja Ollama + pobranie modeli Ollama
  2. Instalacja Perplexica wraz z SearxNG

Instalacja Ollama

Aby rozpocząć korzystanie z Ollama, wykonaj następujące kroki:

Zainstaluj Ollama, uruchamiając skrypt:

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

Powiedz Ollama, aby pobrał Twój ulubiony model LLM. Jeśli jest to Llama3.1 8b q4 – uruchom skrypt:

ollama pull llama3.1:latest

Pobierz najnowszą wersję Nomic-Embed-Text do użycia jako model embedding (jeśli jest to Twój ulubiony) za pomocą:

ollama pull nomic-embed-text:latest

Edytuj plik usługi Ollama, uruchamiając:

sudo systemctl edit ollama.service

Dodaj następujące linie, aby udostępnić Ollama w sieci (Perplexica musi się do niego połączyć z wnętrza Dockera):

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

Załaduj ponownie demona systemd i zrestartuj usługę Ollama:

sudo systemctl daemon-reload
sudo systemctl restart ollama

Sprawdź, czy Ollama uruchomił się pomyślnie:

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

Szczegółowy opis sposobu instalacji, aktualizacji i konfiguracji Ollama znajdziesz tutaj: Install and configure Ollama

Szczegóły dotyczące używania innych modeli Ollama z Perplexica znajdziesz poniżej w sekcji ‘Instalacja innych modeli Ollama’.

Instalacja Perplexica

Zainstalowałem zdokeryzowanego Perplexica na systemie Linux, ale bardzo podobny docker-compose można użyć na systemach Windows lub Mac.

Zaczynamy!

Rozpoczęcie pracy z Dockerem (zalecane) Upewnij się, że Docker jest zainstalowany i działa na Twoim systemie.

Sklonuj repozytorium Perplexica:

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

Po sklonowaniu przejdź do katalogu zawierającego pliki projektu.

cd Perplexica

Zmień nazwę pliku sample.config.toml na config.toml. Jeśli planujesz aktualizować Perplexica później – poprzez git pull do tego repozytorium – to po prostu skopiuj plik sample.config.toml do config.toml

cp sample.config.toml config.toml

Edytuj plik konfiguracyjny:

nano config.toml

Dla konfiguracji Dockera musisz wypełnić tylko następujące pola:

OLLAMA: Twój adres URL API Ollama.

Powinieneś podać go jako http://host.docker.internal:PORT_NUMBER.

Jeśli zainstalowałeś Ollama na porcie 11434 (to jest port domyślny), użyj http://host.docker.internal:11434. Dla innych portów dostosuj odpowiednio.

Gdy nadal jesteś w katalogu Perplexica, wykonaj:

docker compose up -d

Pobierze to obrazy SearxNG i podstawowe obrazy node, zbuduje dwa obrazy Dockera dla Perplexica i uruchomi 3 kontenery. Poczekaj kilka minut, aż konfiguracja zostanie zakończona.

Możesz uzyskać dostęp do Perplexica pod adresem http://localhost:3000 w przeglądarce internetowej.

Przejdź do Ustawień. Wiesz – ikona koła zębatego w lewym dolnym rogu i wybierz swoje modele Ollama.

perplexica settings - configuring ollama models

Tutaj widzisz wybrany model czatu llama3.1:8b-instruct-q6_K (Llama 3.1 8b z kwantyzacją q6_K) oraz model Embedding nomic-embed-text:137m-v1.5-fp16.

Możesz również wybrać motyw Jasny lub Ciemny, zależnie od Twoich preferencji.

Opcje wyszukiwania Perplexica (kliknij w ikonę oka w ramce), w motywie Ciemnym: perplexica search options

Instalacja innych modeli Ollama

W sekcji “Instalacja Ollama” powyżej już zainstalowałeś modele llama3.1:latest oraz nomic-embed-text:latest.

Potrzebujesz tylko jednego modelu do czatu, ale dostępnych jest wiele modeli. Działają one nieco inaczej, warto zacząć od najpopularniejszych: Llama3.1, Gemma2, Mistral Nemo lub Qwen2.

Modele czatu

Pełna nazwa modelu czatu, który widziałeś w sekcji instalacji – llama3.1:latest to llama3.1:8b-text-q4_0. Oznacza to, że ma 8 miliardów parametrów i kwantyzację 4_0. Jest szybki i stosunkowo mały (4.8GB), ale jeśli Twoja karta graficzna ma więcej pamięci, zalecam spróbowanie:

  • llama3.1:8b-instruct-q6_K (6.7GB) – w moich testach wykazał się znacznie lepszą odpowiedzią, choć był nieco wolniejszy.
  • llama3.1:8b-instruct-q8_0 (8.5GB) – lub może ten.

Wszystkie modele z grupy llama3.1:8b są ogólnie dość szybkie.

Możesz pobrać te, które zalecam do przetestowania, za pomocą skryptu:

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

W porównaniu do Llama3.1:8b, Gemma2 generuje bardziej zwięzłe i artystyczne odpowiedzi. Spróbuj tych:

# 9.8GB
ollama pull gemma2:9b-instruct-q8_0

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

Modele Mistral Nemo generują odpowiedzi gdzieś pomiędzy Gemma2 a Llama3.1.

# domyślny, 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

Możesz również chcieć spróbować modeli Qwen2:

# domyślny, 4.4GB
ollama pull qwen2:7b-instruct-q4_0

# 8.1GB
ollama pull qwen2:7b-instruct-q8_0

Modele, które podobały mi się najbardziej, to: llama3.1:8b-instruct-q6_K i mistral-nemo:12b-instruct-2407-q8_0.

Aby sprawdzić modele, które Ollama ma w lokalnym repozytorium:

ollama list

Aby usunąć niepotrzebny model:

ollama rm qwen2:7b-instruct-q4_0 # na przykład

Modele Embedding

Możesz pominąć instalację tych, ponieważ Perplexica ma preinstalowane 3 modele embedding: BGE Small, GTE Small i Bert dwujęzyczny. Działają one niezle, ale możesz chcieć spróbować innych modeli embedding.

W sekcji instalacji Ollama powyżej zainstalowałeś model embedding nomic-embed-text:latest, to dobry model, ale zalecam również spróbowanie:

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

Najbardziej podobał mi się wynik jina/jina-embeddings-v2-base-en:latest, ale sprawdź to sam.

Instalacja Perplexica w sieci

Jeśli instalujesz go na serwerze sieciowym, to przed:

docker compose up -d

lub jeśli już uruchamiasz Perplexica i potrzebujesz zbudować obrazy ponownie:

# Zatrzymaj je i usuń wszystkie kontenery (!!! tylko jeśli tego potrzebujesz)
docker compose down --rmi all

Wpisz adres IP serwera Perplexica do pliku docker-compose.yaml: następnie przed:

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

teraz uruchom kontenery Perplexica i SearxNG:

docker compose up -d

Lub zbuduj i uruchom ponownie:

docker compose up -d --build

Aktualizacja Perplexica

Perplexica działający na Dockerze:

# Zatrzymaj i usuń wszystkie kontenery (!!! tylko jeśli tego potrzebujesz)
docker compose down --rmi all

# przejdź do folderu projektu
# gdzie sklonowałeś perplexica podczas instalacji
cd Perplexica

# pobierz aktualizacje
git pull

# Aktualizuj i zbuduj ponownie kontenery Dockera:
docker compose up -d --build

Dla instalacji niezaległych od Dockera proszę zobaczyć: https://github.com/ItzCrazyKns/Perplexica/blob/master/docs/installation/UPDATING.md

FAQ

  • P: Co to jest Perplexica?

  • O: Perplexica to darmowy, samohostowany silnik wyszukiwania AI i alternatywa dla systemów perplexity.ai i Copilot, która pozwala użytkownikom uruchomić własny silnik wyszukiwania lokalnie na swoim komputerze.

  • P: Jakie są kroki do zainstalowania i skonfigurowania Perplexica z Ollama?

  • O: Kroki obejmują instalację Ollama, pobranie modeli, a następnie instalację Perplexica.

  • P: Jakie opcje dostosowywania są dostępne w Perplexica?

  • O: Opcje obejmują wybór różnych modeli, takich jak LLama 3.1, Mistral Nemo lub Gemma2, skonfigurowanie lokalnych modeli embedding oraz eksplorację różnych opcji wyszukiwania, takich jak wiadomości, prace naukowe, filmy z YouTube i fora Reddit.

  • P: Który model Ollama użyć z Perplexica?

  • O: Najlepsze wyniki uzyskaliśmy w naszych testach, uruchamiając Perplexica z llama3.1:8b-instruct-q6_K oraz jina/jina-embeddings-v2-base-en:latest.

Aby zobaczyć, jak Ollama (typowy backend Perplexica) pasuje do vLLM, Docker Model Runner, LocalAI i dostawców chmury, sprawdź nasz przewodnik LLM Hosting: Local, Self-Hosted & Cloud Infrastructure Compared.

Przydatne linki

Subskrybuj

Otrzymuj nowe wpisy o systemach, infrastrukturze i inżynierii AI.