Autonomiczne hostowanie Perplexica – z użyciem Ollama

Uruchamianie lokalnego usługi w stylu Copilot? Łatwe!

Page content

To bardzo ekscytujące! Zamiast wołać copilot lub perplexity.ai i opowiadać światu, czego szukasz, teraz możesz uruchomić podobną usługę na własnym komputerze lub laptopie!

Co to jest

Perplexica to system podobny do Copilot i Perplexity.ai.

  • Zadajesz pytanie
  • AI wyszukuje internet w poszukiwaniu odpowiedzi (możesz określić, gdzie wyszukiwać: artykuły naukowe, pisanie, YouTube, Reddit…)
  • Następnie AI podsumowuje wszystko, co znaleziono
  • Następnie prezentuje wynik z odnośnikami do oryginalnych stron internetowych
  • Również lista obrazów i filmów YouTube po prawej stronie
  • Również gotowe pytania dodatkowe do kliknięcia, jeśli chcesz trochę bardziej zbadać temat

Te systemy są hostowane w chmurze i należą do niektórych korporacji (np. Microsoft lub Meta). Perplexica to oprogramowanie Open Source, które możesz uruchomić na własnym komputerze lub potężnej laptopie. Aby uzyskać szersze porównanie lokalnego Ollama z vLLM, Docker Model Runner, LocalAI i dostawcami w chmurze — w tym analizę kosztów i infrastruktury — zobacz Hostowanie LLM: Lokalne, samodzielne i infrastruktura w chmurze.

odpowiedź perplexica z modelem llama3.1 8b q6 i jina embeddings Oto odpowiedź Perplexica z modelem chatu llama3.1 8b q6 i modelem embeddingu jina — na pytanie Kto jest Elon Mask?

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

  1. SearxNG — silnik metawyszukiwania. Wywoła on 10+ innych silników wyszukiwania, aby uzyskać wyniki, więc Perplexica może je połączyć. SearxNG jest bardzo konfigurowalny sam w sobie, możesz włączać i wyłączać każdy silnik oraz dodawać nowe. Ale dla naszych celów domyślna konfiguracja działa dobrze.
  2. Backend i frontend Perplexica. Technicznie są to dwa oddzielne moduły, jeden dostarcza API, drugi interfejs użytkownika.
  3. Usługa Ollama — nie jest częścią projektu Perplexica, ale jeśli chcesz, aby modele LLM były hostowane lokalnie, Ollama to jedyny sposób, aby je używać.

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

  1. Zainstaluj Ollama + pobierz modele Ollama
  2. Zainstaluj Perplexica wraz z SearxNG

Instalacja Ollama

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

Zainstaluj Ollama uruchamiając skrypt:

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

Poinformuj Ollama, aby pobrał ulubiony model LLM. Jeśli to Llama3.1 8b q4 — uruchom skrypt:

ollama pull llama3.1:latest

Pobierz najnowszą wersję Nomic-Embed-Text do użycia jako modelu embeddingu (jeśli 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ąc następujące linie, aby uwidocznić Ollama w sieci (Perplexica musi do niego połączyć się z wewnątrz kontenera docker)

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

Przeładuj demon systemd i uruchom ponownie 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, jak zainstalować, zaktualizować i skonfigurować Ollama, zobacz: Instalacja i konfiguracja Ollama

Aby uzyskać szczegółowe informacje na temat użycia innych modeli Ollama z Perplexica, zobacz sekcję „Instalacja innych modeli Ollama” poniżej.

Instalacja Perplexica

Zainstalowałem dockerizowaną wersję Perplexica na systemie Linux, ale bardzo podobny docker-compose można użyć na Windows lub Mac.

Zacznijmy!

Rozpoczęcie pracy z Dockerem (Zalecane) Upewnij się, że Docker jest zainstalowany i uruchomiony 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 zamierzasz później aktualizować Perplexica — poprzez git pull w tym 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 Docker, musisz wypełnić tylko następujące pola:

OLLAMA: URL API Twojego Ollama.

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

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

Kiedy wciąż jesteś w katalogu Perplexica, uruchom:

docker compose up -d

Pobierze on SearxNG i podstawowe obrazy docker, zbuduje dwa obrazy Perplexica i uruchomi 3 kontenery. Poczekaj kilka minut, aż ukończy się konfiguracja.

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

Przejdź do Ustawień. Znasz to — ikonka Cog po lewej stronie, i wybierz swoje modele Ollama

ustawienia perplexica - konfigurowanie modeli ollama

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

Możesz także wybrać styl jasny lub ciemny, w zależności od tego, który Cię bardziej interesuje.

Opcje wyszukiwania Perplexica (Kliknij na ten oko w ikonie pudełka), w stylu ciemnym: opcje wyszukiwania perplexica

Instalacja innych modeli Ollama

Już wcześniej zainstalowałeś modele llama3.1:latest i nomic-embed-text:latest w sekcji „Instalacja Ollama”.

Potrzebujesz tylko jednego modelu do rozmowy, ale jest wiele modeli dostępnych. Są one lekko różne, dobrze jest zacząć od najbardziej popularnych: Llama3.1, Gemma2, Mistral Nemo lub Qwen2.

Modele rozmowy

Pełna nazwa modelu rozmowy, który widziałeś w sekcji instalacji — llama3.1:latest to llama3.1:8b-text-q4_0. To oznacza, że ma 8 miliardów parametrów i kwantyzację 4_0. Jest szybki i stosunkowo mały (4,8 GB), ale jeśli Twoja karta graficzna ma więcej pamięci, polecam Ci spróbować

  • llama3.1:8b-instruct-q6_K (6,7 GB) — w moich testach pokazał znacznie lepsze odpowiedzi, choć był trochę wolniejszy.
  • llama3.1:8b-instruct-q8_0 (8,5 GB) — albo ten.

Wszystkie modele z grupy llama3.1:8b są stosunkowo szybkie.

możesz pobrać te, które polecam spróbować, za pomocą skryptu:

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

Porównując do Llama3.1:8b, Gemma2 generuje bardziej zwięzłe i artystyczne odpowiedzi. Spróbuj tych:

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

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

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

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

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

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

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

Modele najbardziej mi podobali się 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ąć niektóre niepotrzebne modele:

ollama rm qwen2:7b-instruct-q4_0 # np.

Modele embeddingu

Możesz pominąć instalację tych, Perplexica ma zainstalowane 3 modele embeddingu: BGE Small, GTE Small i Bert bilingual. Działają niezłe, ale możesz spróbować innych modeli embeddingu.

W sekcji instalacji Ollama powyżej zainstalowałeś model nomic-embed-text:latest embeddingu, to dobry model, ale polecam Ci również spróbować:

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

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

Instalacja sieciowa Perplexica

Jeśli instalujesz ją na serwerze sieciowym, to przed

docker compose up -d

lub jeśli już uruchamiasz Perplexica, a potrzebujesz ponownie zbudować obrazy

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

Wstaw adres IP swojego serwera perplexica do 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 ponownie zbuduj i uruchom:

docker compose up -d --build

Aktualizacja Perplexica

Perplexica działający w Dockerze:

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

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

# pobierz aktualizacje
git pull

# Aktualizacja i ponowne zbudowanie kontenerów Docker:
docker compose up -d --build

Dla instalacji bez Docker’a zobacz: https://github.com/ItzCrazyKns/Perplexica/blob/master/docs/installation/UPDATING.md

FAQ

  • Q: Co to jest Perplexica?

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

  • Q: Jakie są kroki instalacji i konfiguracji Perplexica z Ollama?

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

  • Q: Jakie opcje dostosowania są dostępne w Perplexica?

  • A: Opcje obejmują wybór różnych modeli, takich jak LLama 3.1, Mistral Nemo lub Gemma2, ustawienie lokalnych modeli embeddingu, oraz eksplorowanie różnych opcji wyszukiwania, takich jak wiadomości, artykuły naukowe, filmy YouTube i fora Reddit.

  • Q: Który model Ollama używać z Perplexica?

  • A: Najlepsze wyniki uzyskaliśmy w naszych testach, gdy uruchamialiśmy Perplexica z modelem llama3.1:8b-instruct-q6_K i modelem embeddingu jina/jina-embeddings-v2-base-en:latest.

Aby zobaczyć, jak Ollama (typowy backend Perplexica) pasuje do vLLM, Docker Model Runner, LocalAI i dostawców w chmurze, sprawdź nasz Hostowanie LLM: Lokalne, samodzielne i infrastruktura w chmurze.

Przydatne linki