Open WebUI с веб-поиском и llama.cpp: настройка локального ИИ на Windows

Open WebUI с веб-поиском и llama.cpp: настройка локального ИИ на Windows

При попытке использовать веб-поиск в OpenWebUI результат оказался слабым. Гайдов по качественной настройке на русском и английском практически нет. В этой статье — собрана вся полезная информация, чтобы добиться приемлемого результата.

Решение не сравнится с платными проприетарными сервисами, но локальные модели имеют свои преимущества: защита данных, отсутствие оплаты, возможность использовать unrestricted-модели.

Настройка выполнена для видеокарты NVIDIA RTX 3090 (24 Гб), 32 Гб ОЗУ, Windows 10 (22H2).

Установка и запуск llama.cpp

  1. Обновите драйверы видеокарты.
  2. Скачайте llama.cpp для Windows x64 (CUDA 13) и CUDA 13.1 DLL. Распакуйте в одну папку, например: G:\llama-b8477-bin-win-cuda-13.1-x64. Альтернатива — использовать Docker-образы. Чтобы не копировать DLL при каждом обновлении, установите NVIDIA CUDA Toolkit 13.1.
  3. Скачайте модели в формате GGUF в отдельную папку, например: G:\llm.
    • Qwen3.5-27B-UD-Q4_K_XL — основная модель для ответов.
    • mmproj-BF16.gguf — переименуйте в Qwen3.5-27B-UD-Q4_K_XL-mmproj-BF16.gguf. Нужен для распознавания изображений.
    • Qwen3-Embedding-4B-f16 — для генерации эмбеддингов при веб-поиске.
    • Qwen3-Reranker-4B-f16 — для сортировки результатов поиска.
    • Qwen3.5-2B-BF16 — для мелких задач: генерация названий чатов, формулировка запросов и т.д.

В папке с моделями создайте файл start-all.ini с параметрами запуска.

Также создайте start-all.bat для запуска llama-server.

Пояснение ключевых параметров

  • no-mmap = true — модель загружается только в VRAM, без использования RAM.
  • metrics = true — метрики доступны по эндпоинту /metrics, например: http://127.0.0.1:9999/metrics?model=Qwen3.5-27B-UD-Q4_K_XL-thinking.
  • cache-ram = 0 — отключает кеш. Не нужен при разнообразных запросах одного пользователя.
  • sleep-idle-seconds = 1200 — модель выгружается из VRAM через 20 минут бездействия.
  • n-gpu-layers = all — все слои модели загружаются в видеопамять.
  • ctx-size = 65536 — размер контекста.
  • load-on-startup = false — модель не загружается при старте, только по запросу.
  • parallel = 4 — модель обрабатывает до 4 запросов параллельно. Контекст делится на количество параллельных запросов (65536 / 4 = 16384).
  • chat-template-kwargs = {"enable_thinking":false} — отключает режим «рассуждений».
  • --models-max 1 — одновременно в памяти только одна модель. Крупная модель занимает всю VRAM. Загрузка второй приведёт к тормозам. Идеально — лимит по памяти, но такой опции пока нет.

Остальные параметры можно изучить в документации llama.cpp.

Запустите start-all.bat. После запуска откройте http://127.0.0.1:9999/ — можно использовать llama.cpp напрямую. При первом запросе модель загрузится (до минуты).

Если нужен только чат — можно остановиться здесь.

Установка и запуск Open WebUI

Open WebUI запускается в Docker, поэтому нужны WSL и Docker Desktop.

Установите WSL командой: wsl --install. Если ранее удаляли WSL — используйте wsl --update. При первом запуске может потребоваться создать пользователя (логин и пароль).

Скачайте и установите Docker Desktop — установка стандартная.

Создайте файл docker-compose.yml в папке, например: G:\openwebui.

Откройте командную строку в этой папке и выполните: docker compose up -d. Дождитесь загрузки образов и запуска контейнеров.

Откройте http://localhost:3000/. Укажите почту и пароль для администратора.

В правом верхнем углу нажмите на иконку пользователя → «Панель администратора» → «Настройки» → «Подключения» → «+».

Добавьте подключение с URL: http://host.docker.internal:9999/v1, нажмите «Сохранить».

Перейдите в «Интерфейс» и установите:

  • Модель локальной задачи — Qwen3.5-2B-BF16
  • Модель внешней задачи — Qwen3.5-2B-BF16

Нажмите «Сохранить» в правом нижнем углу.

Создайте новый чат → «Arena model». Доступны модели:

  • Qwen3.5-27B-UD-Q4_K_XL-instruct — для быстрых ответов без рассуждений.
  • Qwen3.5-27B-UD-Q4_K_XL-thinking — для ответов с пошаговыми размышлениями.

При запросе дождитесь загрузки модели. У автора это занимает до минуты.

Важно: если во время генерации ответа открыта вкладка с чатом, GPU загружается на 100% (3D-раздел), а CUDA — не используется. Ответ может «зависнуть». Решение — свернуть браузер или переключиться на другую вкладку. Проблема наблюдается и в Firefox, и в Edge, и при прямом обращении к llama.cpp.

С мелкими моделями такой проблемы нет.

Настройка веб-поиска

Для качественного веб-поиска используется RAG. Стандартные настройки дают плохой результат — нужно вручную настроить компоненты.

Перейдите в «Панель администратора» → «Настройки» → «Documents» и задайте:

  • Механизм извлечения контента: Tika, URL — http://host.docker.internal:9998
  • Движок модели встраивания: URL — http://host.docker.internal:9999/v1, модель — Qwen3-Embedding-4B-f16
  • Движок реранжирования: «Внешнее», URL — http://host.docker.internal:9999/v1/rerank, модель — Qwen3-Reranker-4B-f16

Нажмите «Сохранить».

Для веб-поиска автор выбрал Brave Search — даёт $5 в месяц при привязке карты. Можно установить лимит, чтобы не превысить сумму.

Не забудьте сохранить настройки.

При запросе включите «Веб-поиск». Результат будет основан на актуальных данных.

При обычном запросе сначала загружается основная модель, затем — Qwen3.5-2B-BF16 для генерации названия чата. Не используйте «рассуждающие» модели для этой задачи — они медленные и часто не срабатывают. У автора проблема была при выборе «Текущая модель» в настройках интерфейса.

При веб-поиске дополнительно загружаются модели эмбеддингов и реранкинга. Следить за процессом можно в логах llama-server.

  • Документация: Open WebUI — множество функций.
  • Статья: как запустить большую модель, если не влезает в VRAM — Запускаем GPT-OSS-120B на 6 Гб GPU и ускоряем до 30 t/s.
  • Статья на unsloth.ai: Qwen3.5 — How to Run Locally. Также есть гайды по другим моделям.
  • Вместо Tika можно использовать Docling для сложных документов (не тестировалось).
  • Другие поисковые API (частично с бесплатными запросами): exa.ai, tavily, serper, linkup, valyu.
  • Можно использовать SearXNG в Docker. Иногда поисковики временно блокируют запросы. Есть публичные инстансы.
  • Для веб-загрузки — Playwright в Docker. Работает медленно (минуты). Настройка: запустите контейнер с WebSocket на порту 3000, укажите URL ws://playwright:3000 и таймаут 30000 мс.
  • Open WebUI поддерживает распознавание речи и генерацию изображений.
  • Можно подключать внешние сервисы: perplexity.ai, openrouter.ai, parallel.ai, firecrawl.dev, jina.ai — для моделей, эмбеддингов, реранкинга и парсинга.
  • Альтернативы Open WebUI: LibreChat.
  • Можно настроить OpenCode для работы с запущенным llama-server.
Читать оригинал