Быстрый старт с Vane (Perplexica 2.0), Ollama и llama.cpp

Самохостинг AI-поиска с локальными LLM

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

Vane — это один из наиболее прагматичных проектов в пространстве «поиска с использованием ИИ и цитированием»: самохостинговое средство ответов, которое сочетает в себе живой поиск в вебе с локальными или облачными LLM, сохраняя при этом полный контроль над всем стеком технологий.

Проект изначально был известен как Perplexica, и переименование в Vane носит не косметический характер: оно отражает как обновление бренда, так и устойчивый переход от восприятия как «клона» к позиционированию в качестве универсального движка для ответов.

laptop-llama-server

Поскольку полезной частью стека является не только интерфейс, но и места размещения инференса и данных, это сравнение хостинга LLM в 2026 году объединяет локальные, самохостинговые и облачные решения, позволяя сопоставить Vane с другими средами выполнения и вариантами развертывания.

В этой статье основное внимание уделяется тому, что действительно важно для технических читателей: как работает система, минимальный быстрый старт с Docker и как запустить её с локальным инференсом через Ollama и llama.cpp (напрямую или через LM Studio). По ходу чтения каждый вопрос из раздела FAQ рассматривается в контексте, а не откладывается на конец статьи.

Что такое Vane и как работают поисковые движки на базе ИИ

На высоком уровне Vane представляет собой приложение на Next.js, объединяющее чат-интерфейс с поиском и цитированием. Основные архитектурные компоненты также соответствуют тому, что можно ожидать от современного поискового движка на базе ИИ: API-маршруты для чата и поиска, оркестрация, определяющая, когда необходим поиск, и генератор ответов, учитывающий цитирование.

Когда вы отправляете запрос через интерфейс, Vane вызывает POST /api/chat. Внутренняя структура рабочего процесса намеренно организована следующим образом:

  • Сначала классифицируется вопрос, чтобы решить, нужен ли поиск и какие вспомогательные инструменты следует запустить.
  • Поиск и виджеты выполняются параллельно.
  • Генерируется финальный ответ с включением цитат.

Этот ярлык «поисковый движок на базе ИИ» имеет значение, потому что это не просто фронтенд для чата. Ключевое отличие заключается в генерации с дополнением извлечения (RAG): вместо того чтобы полагаться исключительно на параметры LLM, Vane получает внешний контекст (результаты из веба и, опционально, загруженные пользователем файлы) и использует этот материал в качестве основы для финального ответа. В документации явно указано, что поиск в вебе и «поиск по загруженным файлам пользователя» являются частью исследовательского процесса, при этом для семантического поиска по загруженным файлам используются эмбеддинги.

Цитирование — это не второстепенная деталь. Vane подталкивает модель ссылаться на использованные источники, а затем интерфейс отображает эти цитаты рядом с ответом. На практике именно это отличает «полезный» поиск с ИИ от уверенного генератора галлюцинаций, который просто имеет кнопку поиска.

В большинстве конфигураций под слоем веб-извлечения находится SearxNG. SearxNG — это бесплатный метапоисковик, агрегирующий результаты от множества поисковых сервисов и, по замыслу, не отслеживающий и не профилирующий пользователей. Это принципиально иная философия по сравнению с платными поисковыми API, которые обычно предоставляют индекс одного вендора и коммерческий договор об использовании данных.

История перехода от Perplexica к Vane и переименование

Perplexica начинался как открытый самохостинговый движок для ответов, вдохновленный Perplexity AI. Несколько публичных руководств до сих пор описывают проект как «ранее известный как Perplexica» и рассматривают Vane как продолжение, а не как враждебный форк.

Переименование было реализовано непосредственно в репозитории upstream. В истории коммитов ветки master появляется коммит с заголовком feat(app): rename to 'vane' от 9 марта 2026 года (SHA 39c0f19).

«Как» здесь интереснее, чем сам заголовок. Этот коммит с переименованием — это не просто правка README: он обновляет имена Docker-образов с itzcrazykns1337/perplexica на itzcrazykns1337/vane, корректирует пути в файловой системе контейнера с /home/perplexica на /home/vane и обновляет соответствующим образом тексты и ресурсы проекта.

Если вы задаетесь вопросом, почему проекты открытого ИИ получают новые имена, Vane является учебным примером типичных драйверов:

  • Близость названия к коммерческому бренду создает путаницу (и иногда юридические риски).
  • Объем проекта расширяется за рамки первоначальной концепции (от «клона» к «движку для ответов»).
  • Артефакты распространения нуждаются в последовательной идентичности (образы Docker, документация, метки интерфейса).

Кроме того, экосистема не меняет названия в одночасье. На Docker Hub до сих пор отображаются оба репозитория под аккаунтом разработчика, включая itzcrazykns1337/vane и itzcrazykns1337/perplexica. Поэтому вы все еще будете видеть более старые блог-посты, файлы compose и ссылки на реестры, использующие название Perplexica, даже после ребрендинга репозитория.

Быстрый старт с Docker и базовая конфигурация

Официальный README Vane поражает своей прямотой: запустите один контейнер, и вы получите Vane с встроенным поисковым бэкендом SearxNG. Минимальный быстрый старт с Docker выглядит следующим образом.

docker run -d -p 3000:3000 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:latest

Этот образ позиционируется как путь «просто работает», поскольку он уже включает SearxNG, поэтому для тестирования интерфейса вам не нужен внешний поисковый бэкенд. Настройка происходит на экране настройки после открытия веб-интерфейса по адресу http://localhost:3000.

Если вы уже запускаете SearxNG (что часто встречается в домашних лабораториях), «slim» образ Vane предполагает, что вы укажете ему внешний экземпляр SearxNG, используя переменную SEARXNG_API_URL. В README также указаны два практических ожидания относительно настроек SearxNG: включенный JSON-вывод и включенный движок Wolfram Alpha.

docker run -d -p 3000:3000 \
  -e SEARXNG_API_URL=http://your-searxng-url:8080 \
  -v vane-data:/home/vane/data \
  --name vane \
  itzcrazykns1337/vane:slim-latest

Обновление Vane также задокументировано в репозитории. Официальный процесс обновления заключается в получении последнего образа и перезапуске с тем же томом, что сохраняет настройки.

docker pull itzcrazykns1337/vane:latest
docker stop vane
docker rm vane
docker run -d -p 3000:3000 -v vane-data:/home/vane/data --name vane itzcrazykns1337/vane:latest

После запуска Vane можно использовать как сокращение для поиска в браузере, указав кастомный движок на адрес http://localhost:3000/?q=%s. Это небольшая функция, но она имеет огромное значение, если вы хотите, чтобы «поиск с ИИ» ощущался как поиск, а не как приложение, которое нужно посетить.

Для автоматизации и интеграции Vane предоставляет API. В документации описаны GET /api/providers для обнаружения настроенных провайдеров и моделей, а также POST /api/search для выполнения поиска с выбранной моделью чата, моделью эмбеддингов, источниками и optimizationMode (скорость, баланс, качество).

Настройка локальных LLM с Ollama

Vane поддерживает локальные LLM через Ollama и облачные провайдеры в одном интерфейсе, что является правильной абстракцией, если вы думаете в терминах «соединений» и «моделей», а не «вендоров».

Самая распространенная проблема заключается не в выборе модели, а в сетевых настройках. Когда Vane работает в Docker, а Ollama — на хост-машине, «localhost» внутри контейнера означает не то, что вы думаете. Vane документирует специфичные для ОС базовые URL-адреса для подключения к Ollama из контейнера.

Подводные камни подключения с Docker

Раздел устранения неполадок Vane явно рекомендует следующее:

  • Windows и macOS: http://host.docker.internal:11434
  • Linux: http://<private_ip_of_host>:11434

Для Linux Vane также отмечает, что Ollama по умолчанию может быть связан с 127.0.0.1 и требует экспортирования. В README рекомендуется установить OLLAMA_HOST=0.0.0.0:11434 в службе systemd и перезапустить службу.

Это согласуется со своими переменными окружения serve в Ollama, где OLLAMA_HOST управляет адресом привязки сервера и по умолчанию равен 127.0.0.1:11434.

Держите модели «теплыми» и выбирайте модели

Если вы запускаете локальный инференс, вы столкнетесь с холодными запусками. У Ollama есть два связанных механизма для удержания моделей в памяти:

  • OLLAMA_KEEP_ALIVE как настройка сервера.
  • keep_alive как параметр для каждого запроса для /api/generate и /api/chat, который переопределяет настройку сервера по умолчанию.

Vane добавил свою собственную поддержку keep_alive для моделей Ollama (чтобы приложение могло влиять на то, как долго модель остается в памяти). Эта функция появилась в примечаниях к выпуску Vane v1.10.0.

Выбор модели — это та часть, которая в интернете часто усложняется. Для работы в стиле Vane самое практическое разделение:

  • Модель чата, настроенная для инструкций (для суммирования и синтеза).
  • Модель эмбеддингов для поиска по сходству среди загруженных и извлеченных текстов. В документации API Vane показано, что запрос поиска явно выбирает как модель чата, так и модель эмбеддингов.

Сам Ollama поддерживает рабочие процессы с эмбеддингами, и даже документация CLI включает пример использования nomic-embed-text для эмбеддингов.

Это также ответ на вопрос FAQ о запуске поиска с ИИ локально без облачных API: с Vane в Docker, локальным SearxNG и Ollama на вашем оборудовании вы можете удерживать как поисковые запросы, так и загрузки частных документов внутри своей сетевой границы. (Если вы решите подключиться к облачному провайдеру вместо этого, путь передачи данных, очевидно, изменится.)

Настройка локальных LLM с llama.cpp

Существует два реалистичных способа сочетать Vane с llama.cpp:

  • Использовать LM Studio как серверный слой (и позволить Vane общаться с ним).
  • Запустить собственный HTTP-сервер llama.cpp (llama-server) и подключиться через совместимый с OpenAI конечную точку.

Vane явно поддерживает «Локальные серверы, совместимые с API OpenAI» и указывает типичные требования: привязаться к 0.0.0.0 вместо 127.0.0.1, использовать правильный порт, установить имя модели, которая существует на сервере, и не оставлять поле API-ключа пустым, даже если сервер не требует аутентификации.

LM Studio актуален здесь, потому что он работает поверх локальных бэкендов (часто llama.cpp), предоставляя API, совместимый с OpenAI. Vane v1.12.1 конкретно отмечает добавление провайдера LM Studio.

В документации LM Studio перечислены поддерживаемые конечные точки, совместимые с OpenAI, и показан пример базового URL с использованием http://localhost:1234/v1 (при условии порта 1234). Это имеет значение, потому что с точки зрения Vane это «просто еще один сервер в стиле OpenAI».

Если вы предпочитаете запускать llama.cpp напрямую, официальный HTTP-сервер llama.cpp поддерживает совместимые с API OpenAI маршруты для чата, ответов и эмбеддингов, а также длинный список функций сервера (пакетная обработка, мониторинг, использование инструментов).

Даже если вы не запоминаете флаги, важны следующие моменты:

  • Сервер существует и активно документируется.
  • Поверхность API достаточно совместима, чтобы клиенты в стиле OpenAI могли с ним общаться, что именно нужно Vane для его паттерна подключения «совместимого с OpenAI».

Что выпущено недавно и что меняется сейчас

Если вы хотите понять, во что превратился Vane за последний год, следуйте примечаниям к выпускам и истории ветки master, а не хайпу.

По состоянию на 10 апреля 2026 года (Австралия/Мельбурн) последним помеченным релизом на GitHub, видимым на странице релизов, является v1.12.1 (31 декабря 2025 года). Этот релиз включает добавление провайдера LM Studio и исправления, связанные с вызовом функций у провайдеров, совместимых с OpenAI, и парсингом JSON.

Предыдущие релизы описывают более крупные сдвиги:

  • v1.11.0 (21 октября 2025 года) представил новый мастер настройки и переработанную систему конфигурации, а также расширенную поддержку провайдеров и путь установки Docker одной командой. Также упоминается динамическое получение моделей и различные улучшения пользовательского интерфейса и опыта разработчиков.
  • v1.12.0 (27 декабря 2025 года) — это архитектурный сброс: он удаляет LangChain в пользу собственной реализации для потоковой передачи, генерации и поведения, специфичного для провайдеров. Он также переименовывает «провайдеров» в «соединения», добавляет улучшения рендеринга UI и кода и переносит больше возможностей в собственные абстракции проекта (включая улучшенный вызов функций по сравнению с предыдущими подходами к парсингу).
  • Ранее, v1.10.0 (20 марта 2025 года) добавил загрузку файлов (PDF, TXT, DOCX), добавил параметр keep_alive для Ollama, добавил класс агента мета-поиска для улучшения поддерживаемости и создания режима фокусировки, а также добавил функцию автоматического поиска изображений и видео.

С точки зрения брендинга, переименование в Vane произошло 9 марта 2026 года в ветке master (feat(app): rename to 'vane'), обновив как названия в кодовой базе, так и артефакты Docker.

Проект не перестал развиваться после выпуска в декабре 2025 года. Коммиты в ветке master от 8–9 апреля 2026 года включают работу, описанную как «обновленный режим глубокого исследования, управление контекстом» и новые изменения, связанные с выполнением поиска и скрапингом. Иными словами, часть «поискового движка на базе ИИ» все еще активно итерируется, а не заморожена за тегами релизов.

Некоторые ссылки