Развертывание Perplexica самостоятельно — с использованием Ollama

Запускаете сервис в стиле Copilot локально? Легко!

Содержимое страницы

Это очень увлекательно! Вместо того чтобы вызывать Copilot или perplexity.ai и рассказывать всему миру, что вы ищете, теперь вы можете развернуть аналогичный сервис на своем собственном ПК или ноутбуке!

Perplexica — это система, похожая на Copilot и Perplexity.ai.

  • Вы задаете вопрос
  • ИИ ищет ответы в интернете (вы можете указать, где искать: академические статьи, тексты, YouTube, Reddit…)
  • Затем ИИ суммирует все найденное
  • После этого представляет результат со ссылками на исходные веб-сайты
  • Также справа отображается список изображений и видео с YouTube
  • Кроме того, предлагаются уточняющие вопросы, если вы захотите углубиться в тему

Эти системы размещены в облаке и принадлежат некоторым корпорациям (например, Microsoft или Meta). Perplexica — это программное обеспечение с открытым исходным кодом, которое вы можете развернуть на своем ПК или мощном ноутбуке.

Та же самая исходная кодовая база теперь распространяется под именем Vane; Быстрый старт с Vane (Perplexica 2.0) и Ollama и llama.cpp охватывает текущие образы Docker, SearxNG и пути локального вывода, если вы следуете переименованному проекту.

Для более широкого сравнения локального Ollama с vLLM, Docker Model Runner, LocalAI и облачными провайдерами, включая компромиссы стоимости и инфраструктуры, см. Размещение LLM: Сравнение локальной, самовыполняемой и облачной инфраструктуры.

perplexica response with llama3.1 8b q6 and jina embeddings Здесь мы видим ответ Perplexica с использованием модели чата llama3.1 8b q6 и модели эмбеддингов jina на вопрос Кто такой Илон Маск?

Perplexica состоит из нескольких модулей:

  1. SearxNG — метапоисковик. Он обращается к более чем 10 другим поисковым системам для получения результатов, чтобы Perplexica могла их объединить. SearxNG очень гибко настраивается сам по себе; вы можете включать и выключать каждую поисковую систему и добавлять новые. Но для наших целей конфигурация по умолчанию работает хорошо.
  2. Бэкенд и фронтенд Perplexica. Технически это два отдельных модуля: один предоставляет API, другой — интерфейс пользователя.
  3. Сервис Ollama — это не часть проекта Perplexica, но если вы хотите размещать свои LLM локально, Ollama — это единственный способ их использовать.

Таким образом, установка всей системы состоит из двух больших шагов:

  1. Установка Ollama + загрузка моделей Ollama
  2. Установка Perplexica вместе с SearxNG

Установка Ollama

Чтобы начать работу с Ollama, выполните следующие шаги:

Установите Ollama, запустив скрипт:

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

Попросите Ollama загрузить вашу любимую LLM. Если это Llama3.1 8b q4 — запустите скрипт:

ollama pull llama3.1:latest

Загрузите последнюю версию Nomic-Embed-Text для использования в качестве модели эмбеддингов (если она вам нравится), используя:

ollama pull nomic-embed-text:latest

Измените файл сервиса Ollama, выполнив команду:

sudo systemctl edit ollama.service

Добавьте следующие строки, чтобы сделать Ollama доступным в сети (Perplexica должна подключаться к нему изнутри Docker):

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

Перезагрузите демон systemd и перезапустите сервис Ollama:

sudo systemctl daemon-reload
sudo systemctl restart ollama

Проверьте, что Ollama запущен успешно:

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

Подробное описание того, как установить, обновить и настроить Ollama, см. здесь: Установка и настройка Ollama

Для подробностей о использовании других моделей Ollama с Perplexica см. раздел ‘Установка других моделей Ollama’ ниже.

Установка Perplexica

Я установил docker-версию Perplexica на Linux, но очень похожий docker-compose можно использовать на Windows или Mac.

Погнали!

Начало работы с Docker (Рекомендуется) Убедитесь, что Docker установлен и запущен на вашей системе.

Клонируйте репозиторий Perplexica:

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

После клонирования перейдите в директорию, содержащую файлы проекта.

cd Perplexica

Переименуйте файл sample.config.toml в config.toml. Если вы планируете обновлять Perplexica позже — выполняя git pull в этом репозитории — то просто скопируйте файл sample.config.toml в config.toml

cp sample.config.toml config.toml

Отредактируйте файл конфигурации:

nano config.toml

Для конфигураций с Docker вам нужно заполнить только следующие поля:

OLLAMA: URL вашего API Ollama.

Введите его как http://host.docker.internal:PORT_NUMBER.

Если вы установили Ollama на порт 11434 (это порт по умолчанию), используйте http://host.docker.internal:11434. Для других портов внесите соответствующие изменения.

Когда вы все еще находитесь в директории Perplexica, выполните:

docker compose up -d

Это загрузит образы SearxNG и базовые образы node, построит два образа Docker для Perplexica и запустит 3 контейнера. Подождите несколько минут, пока установка завершится.

Вы можете получить доступ к Perplexica по адресу http://localhost:3000 в вашем веб-браузере.

Перейдите в Настройки. Вы знаете — значок шестеренки внизу слева, и выберите ваши модели Ollama.

perplexica settings - configuring ollama models

Здесь вы видите выбранную модель чата llama3.1:8b-instruct-q6_K (Llama 3.1 8b с квантованием q6_K), и модель эмбеддингов nomic-embed-text:137m-v1.5-fp16.

Вы также можете выбрать светлую или темную тему, какая вам больше нравится.

Опции поиска Perplexica (Нажмите на этот значок глаза в квадрате), в темной теме: perplexica search options

Установка других моделей Ollama

Вы уже установили модели llama3.1:latest и nomic-embed-text:latest в разделе “Установка Ollama” выше.

Вам нужна только одна модель для чата, но доступно множество моделей. Они ведут себя немного по-разному, хорошо начать с самых распространенных: Llama3.1, Gemma2, Mistral Nemo или Qwen2.

Модели чата

Полное имя модели чата, которую вы видели в разделе установки — llama3.1:latest — это llama3.1:8b-text-q4_0. Это означает, что она имеет 8 миллиардов параметров и квантование 4_0. Она быстрая и относительно небольшая (4.8 ГБ), но если у вашей видеокарты есть больше памяти, я бы рекомендовал вам попробовать:

  • llama3.1:8b-instruct-q6_K (6.7 ГБ) — в моих тестах она показала гораздо лучшие ответы, хотя работала немного медленнее.
  • llama3.1:8b-instruct-q8_0 (8.5 ГБ) — или, возможно, эту.

В целом все модели из группы llama3.1:8b работают относительно быстро.

Вы можете загрузить те, которые я рекомендовал попробовать, с помощью скрипта:

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

По сравнению с Llama3.1:8b, Gemma2 дает более лаконичные и художественные ответы. Попробуйте эти:

# 9.8 ГБ
ollama pull gemma2:9b-instruct-q8_0

# 14 ГБ
ollama pull gemma2:27b-instruct-q3_K_L

Модели Mistral Nemo дают ответы где-то между gemma2 и llama3.1.

# стандартная, 7.1 ГБ
ollama pull mistral-nemo:12b-instruct-2407-q4_0

# 10 ГБ
ollama pull mistral-nemo:12b-instruct-2407-q6_K

# 13 ГБ
ollama pull mistral-nemo:12b-instruct-2407-q8_0

Вы также можете попробовать модели Qwen2:

# стандартная, 4.4 ГБ
ollama pull qwen2:7b-instruct-q4_0

# 8.1 ГБ
ollama pull qwen2:7b-instruct-q8_0

Модели, которые мне понравились больше всего: llama3.1:8b-instruct-q6_K и mistral-nemo:12b-instruct-2407-q8_0.

Чтобы проверить модели, которые есть у Ollama в локальном репозитории:

ollama list

Чтобы удалить ненужную модель:

ollama rm qwen2:7b-instruct-q4_0 # например

Модели эмбеддингов

Вы можете пропустить установку этих моделей, так как в Perplexica уже предустановлены 3 модели эмбеддингов: BGE Small, GTE Small и Bert bilingual. Они работают неплохо, но вы можете захотеть попробовать другие модели эмбеддингов.

В разделе установки Ollama выше вы установили модель эмбеддингов nomic-embed-text:latest, это хорошая модель, но я бы рекомендовал вам также попробовать:

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

Мне больше всего понравился результат jina/jina-embeddings-v2-base-en:latest, но проверьте сами.

Установка Perplexica в сети

Если вы устанавливаете его на сетевой сервер, то перед командой

docker compose up -d

или если Perplexica уже запущен, и вам нужно пересобрать образы:

# Остановите его и удалите все контейнеры (!!! только если это необходимо)
docker compose down --rmi all

Внесите IP-адрес вашего сервера Perplexica в docker-compose.yaml: тогда перед

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

теперь запустите контейнеры Perplexica и SearxNG:

docker compose up -d

Или пересоберите и запустите:

docker compose up -d --build

Обновление Perplexica

Perplexica работает в Docker:

# Остановите его и удалите все контейнеры (!!! только если это необходимо)
docker compose down --rmi all

# перейдите в папку проекта
# куда вы клонировали perplexica во время установки
cd Perplexica

# загрузите обновления
git pull

# Обновите и пересоберите контейнеры Docker:
docker compose up -d --build

Для установок без Docker см.: https://github.com/ItzCrazyKns/Perplexica/blob/master/docs/installation/UPDATING.md

FAQ

  • В: Что такое Perplexica?

  • О: Perplexica — это бесплатный самовыполняемый поисковик на базе ИИ и альтернатива системам perplexity.ai и Copilot, которая позволяет пользователям запускать свой собственный поисковик локально на своем компьютере.

  • В: Какие шаги необходимы для установки и настройки Perplexica с Ollama?

  • О: Шаги включают установку Ollama, загрузку моделей, а затем установку Perplexica.

  • В: Какие опции кастомизации доступны в Perplexica?

  • О: Опции включают выбор различных моделей, таких как LLama 3.1, Mistral Nemo или Gemma2, настройку локальных моделей эмбеддингов и исследование различных опций поиска, таких как новости, академические статьи, видео с YouTube и форумы Reddit.

  • В: Какую модель Ollama использовать с Perplexica?

  • О: Лучших результатов в наших тестах мы достигли, когда запускали Perplexica с моделями llama3.1:8b-instruct-q6_K и jina/jina-embeddings-v2-base-en:latest.

Чтобы увидеть, как Ollama (типичный бэкенд Perplexica) сочетается с vLLM, Docker Model Runner, LocalAI и облачными провайдерами, ознакомьтесь с нашим руководством Размещение LLM: Сравнение локальной, самовыполняемой и облачной инфраструктуры.

Полезные ссылки

Подписаться

Получайте новые материалы про системы, инфраструктуру и AI engineering.