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 przeszukuje internet w poszukiwaniu odpowiedzi (możesz określić, gdzie przeszukiwać: artykuły naukowe, pisanie, YouTube, Reddit…)
  • Następnie AI podsumowuje wszystko, co znaleziono
  • Następnie prezentuje wynik wraz z odnośnikami do oryginalnych stron internetowych
  • Również lista obrazów i filmów YouTube po prawej stronie
  • Również gotowe pytania dodatkowe, gotowe do kliknięcia, jeśli chcesz zgłębić temat nieco więcej

Te systemy są hostowane w chmurze i należą do pewnych korporacji (np. Miscrosoft lub Meta). Perplexica to oprogramowanie Open Source, które możesz uruchomić na swoim komputerze lub potężnym laptopie.

odpowiedź perplexica z llama3.1 8b q6 i jina embeddings Oto odpowiedź Perplexica z modelem chat llama3.1 8b q6 i modelem embedding jina - na pytanie Kto jest Elon Mask?

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

  1. SearxNG - silnik metaprzeszukiwania. Wywoła on 10+ innych silników przeszukiwania, 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. Perplexica Backend i Frontend. Technicznie są to dwa oddzielne moduły, jeden dostarcza API, drugi interfejs użytkownika
  3. Usługa Ollama - która nie jest częścią projektu perplexica, ale jeśli chcesz, aby Twoje 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 zacząć 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 model embedding (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 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 proszę zobaczyć: Instalacja i konfiguracja Ollama

Aby uzyskać szczegółowe informacje na temat użycia innych modeli Ollama z Perplexica proszę zobaczyć sekcję ‘Instalacja innych modeli Ollama’ poniżej.

Instalacja Perplexica

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

Zaczynamy!

Rozpoczęcie pracy z Docker (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 zamierzasz aktualizować Perplexica później - wykonując 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: Twój adres URL API 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 nadal jesteś w katalogu Perplexica, wykonaj:

docker compose up -d

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

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

Przejdź do Ustawień. Wiesz - ikonka Cog w lewym dolnym rogu, i wybierz swoje modele Ollama

ustawienia perplexica - konfigurowanie modeli ollama

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

Możesz również wybrać styl jasny lub ciemny, w zależności od tego, co bardziej lubisz.

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

Instalacja innych modeli Ollama

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

Potrzebujesz tylko jednego modelu do rozmowy, ale dostępnych jest wiele modeli. 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 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 skrótowe 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 także 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 podobają 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 # na przykład

Modele embedding

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

W sekcji instalacji Ollama powyżej zainstalowałeś model embedding nomic-embed-text:latest, to dobry model, ale polecam 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 modelu jina/jina-embeddings-v2-base-en:latest, ale sprawdź sam.

Instalacja sieciowa Perplexica

Jeśli zainstalujesz 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 (!!! tylko jeśli to konieczne)
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 zbuduj i uruchom ponownie:

docker compose up -d --build

Aktualizacja Perplexica

Perplexica uruchomiona w dockerze:

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

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

# pobierz aktualizacje
git pull

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

Dla instalacji bez docker proszę zobaczyć: https://github.com/ItzCrazyKns/Perplexica/blob/master/docs/installation/UPDATING.md

FAQ

  • Q: Co to jest Perplexica?

  • A: Perplexica to darmowy, samozhostowany 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, konfigurację lokalnych modeli embedding, oraz eksplorację 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 embedding jina/jina-embeddings-v2-base-en:latest.

Przydatne linki