Настройка Open WebUI с веб-поиском и llama.cpp на Windows | AiManual
AiManual Logo Ai / Manual.
24 Апр 2026 Инструмент

Open WebUI + веб-поиск: превращаем локальную LLM в агента, который не врет про погоду

Пошаговая инструкция: как научить Open WebUI искать в интернете через SearXNG, прикрутить динамический контекст из сети и не сойти с ума. Qwen3.5-27B, llama.cpp

Почему ваш домашний AI до сих пор тупит на свежих вопросах?

Вы поставили Open WebUI, скачали Qwen3.5-27B в GGUF, развернули llama.cpp — и вроде всё блестит. Но просите: "Какой курс доллара сегодня?" — а модель тащит данные из своего слепка знаний, которому минимум полгода. Ещё хуже: она уверенно врёт, придумывая цифры. Знакомо?

Проблема не в модели — проблема в том, что она не умеет лезть в интернет. Open WebUI из коробки предлагает встроенный веб-поиск, но он сломан: требует сторонний API-ключ (Google, Bing), либо использует устаревший парсинг, который ломается на половине сайтов. А если интернет в вашей стране фильтруется — вообще беда.

Хорошая новость: это чинится за один вечер. Мы соберём связку Open WebUI + SearXNG (самохостинговый метапоисковик) + llama.cpp с актуальной версией Qwen3.5-27B. В результате ваш локальный AI-ассистент получит доступ к живому интернету, не сливая данные никуда. И никаких API-ключей.

💡 Если вы ещё не знакомы с базой — прочитайте нашу предыдущую статью "Чемодан без ручки: как я бросил ChatGPT и перетащил AI к себе на компьютер" — там про установку Open WebUI с нуля. Здесь мы идём дальше.

Архитектура: из каких кирпичей строим

Схема простая: Open WebUI → SearXNG → интернет. Когда пользователь задаёт вопрос, Open WebUI проверяет, нужен ли поиск (обычно по флагу "search" в промпте), шлёт запрос SearXNG, тот собирает результаты из Google, Bing, DuckDuckGo (и ещё кучи источников), возвращает ссылки и сниппеты. Open WebUI склеивает эту информацию с контекстом модели, и llama.cpp генерирует честный ответ со ссылками.

Звучит логично, но есть нюанс: Open WebUI не умеет напрямую дружить с SearXNG — нужен небольшой прокси-слой. В последних версиях (0.5.x, на апрель 2026) появилась возможность подключать внешние поисковые бэкенды через кастомный эндпоинт. Но мы сделаем проще — через docker-compose поднимем всё в одном стеке.

Что нам понадобится (железо и софт)

  • Windows 10/11 (можно Linux, но гайд под Windows)
  • Docker Desktop for Windows (WSL2 backend) — последняя версия
  • llama.cpp — собранный с поддержкой CUDA или Vulkan (на крайняк — CPU, но медленно)
  • Модель: Qwen3.5-27B GGUF (рекомендую Qwen3.5-27B-Q4_K_M.gguf — баланс качества и скорости на 16+ GB VRAM)
  • Эмбеддинг-модель: Qwen3-Embedding (для RAG-памяти, но это опционально)
  • SearXNG — образ для Docker
  • Open WebUI — последняя версия (можно через docker, можно нативный py install)

⚠️ Предостережение: если у вас видеокарта с менее чем 12 GB VRAM, Qwen3.5-27B в Q4 не влезет. Берите Qwen3-14B или 8B — они тоже отлично справляются с веб-поиском. Мы уже обсуждали выбор модели в статье "Локальные LLM против интернет-цензуры".

Шаг 0: готовим Docker

Установите Docker Desktop, включите WSL2. После установки убедитесь, что команда docker compose работает. Если нет — перезагрузите систему.

Шаг 1: запускаем SearXNG

Создайте папку C:\docker\searxng. Положите туда файл docker-compose.yml:

version: '3.8'

services:
  searxng:
    image: searxng/searxng:latest
    ports:
      - "8080:8080"
    environment:
      - SEARXNG_BASE_URL=http://localhost:8080/
    volumes:
      - ./settings.yml:/etc/searxng/settings.yml:ro
      - ./theme:/usr/local/searxng/searx/static/themes/simple:ro
    restart: unless-stopped

Теперь создайте файл settings.yml рядом:

use_default_settings: true

search:
  safe_search: 0 # отключаем цензуру для поиска
  formats:
    - html
    - json

server:
  secret_key: "change-me-to-random-string"
  bind_address: "0.0.0.0"
  port: 8080

outgoing:
  request_timeout: 10.0

enabled_plugins:
  - 'Basic Auth'
  - 'Hostname Replace'
  - 'Search on category'

Запустите docker compose up -d. Откройте http://localhost:8080 — должно открыться минималистичное окно поиска.

Шаг 2: настраиваем Open WebUI с поддержкой SearXNG

Open WebUI удобнее всего запустить тоже через Docker, чтобы не заморачиваться с зависимостями. Но если вы предпочитаете нативный Python — смотрите гайд по сборке мультимодального хаба.

Я рекомендую docker-compose, который поднимет и Open WebUI, и SearXNG, и, при желании, ChromaDB для RAG. Пример docker-compose.yml (в корневой папке):

version: '3.8'

services:
  searxng:
    image: searxng/searxng:latest
    ports:
      - "8080:8080"
    volumes:
      - ./searxng/settings.yml:/etc/searxng/settings.yml:ro
    restart: unless-stopped

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    ports:
      - "3000:8080"
    environment:
      - OLLAMA_BASE_URL=http://host.docker.internal:11434
      - WEBUI_SECRET_KEY=your-secret-here
      - ENABLE_WEB_SEARCH=true
      - SEARCH_ENGINE=searxng
      - SEARXNG_BASE_URL=http://searxng:8080
    volumes:
      - ./data:/app/backend/data
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: unless-stopped

Обратите внимание: SEARCH_ENGINE=searxng и SEARXNG_BASE_URL. Это заставляет Open WebUI использовать ваш локальный сервер, а не лезть в облачные API.

💡
Если Ollama у вас не установлен — не проблема. llаma.cpp может раздавать совместимый OpenAI-эндпоинт. Меняем OLLAMA_BASE_URL на OPENAI_BASE_URL=http://host.docker.internal:8081/v1 — и подключаемся к llama.cpp. Подробнее о такой связке в статье "Open Terminal в Open WebUI: полный гайд по tool calling".

Шаг 3: поднимаем llama.cpp с моделью

llama.cpp проще всего запустить из готового бинарника под Windows. Скачайте последний релиз (например, llama-b4637-bin-win-cuda-cu12.2.0-x64.zip) с официального репозитория. Распакуйте.

Модель Qwen3.5-27B Q4_K_M.gguf скачайте с Hugging Face (https://huggingface.co/Qwen/Qwen3.5-27B-GGUF). Положите в папку models.

Запустите сервер:

server.exe --model models/qwen3.5-27b-q4_k_m.gguf --port 8081 --n-gpu-layers 40 --ctx-size 8192 --rope-freq-base 10000.0 --flash-attn

Флаг --flash-attn даёт заметный прирост скорости на видеокартах с поддержкой. --ctx-size 8192 — достаточно для обработки сниппетов из сети. Если модель генерирует слишком долго — уменьшите до 4096.

Шаг 4: правим Open WebUI для веб-поиска

После того как всё запущено, зайдите в Open WebUI (http://localhost:3000). Перейдите в Admin Panel → Settings → Web Search.

Включите тумблер "Enable Web Search". Выберите "SearXNG" как движок. Поле "SearXNG Base URL" оставьте http://searxng:8080 (внутри Docker-сети). Примените.

Теперь создайте нового чата, щёлкните на значок поиска (глазик) в панели ввода — и задайте вопрос, например: "Последние новости про NVIDIA 2026". Модель должна сначала показать, что она ищет, а потом выдать ответ со ссылками.

🔥 Типичная ошибка: не работает поиск — чат просто отвечает из своей базы. Проверьте, что в настройках чата включён "Web Search" и что SearXNG доступен из контейнера Open WebUI. Лучший способ проверить — выполнить docker exec -it open-webui curl http://searxng:8080/search?q=test. Если ошибка — перепроверьте docker-compose сети.

Шаг 5: калибровка — учим модель правильно использовать поиск

Qwen3.5-27B из коробки понимает системные промпты. Я рекомендую задать такой системный промпт (в настройках модели Open WebUI):

Ты — полезный ассистент. Если у тебя есть доступ к веб-поиску, и вопрос предполагает актуальную информацию (новости, погода, курсы, события), используй поиск. Не выдумывай даты и цифры. После ответа всегда укажи источники, если использовал поиск.

Также можно включить "Auto-Web Search" — Open WebUI будет сам решать, когда включать поиск. Но я предпочитаю ручной режим: меньше шума. Если модель сама решает искать — иногда она лезет в сеть на простые вопросы вроде "сколько будет 2+2". Настройте чувствительность через параметр "Search Trigger" — он учитывает слова "последний", "новости", "сегодня".

Альтернативы SearXNG: что ещё работает

Инструмент Плюсы Минусы
SearXNG Полностью локален, без лимитов, поддерживает JSON API, легко кастомизируется Требует Docker, иногда блокируется поисковиками (Google) при частых запросах
Google Custom Search API Простота подключения, качество поиска, официальная поддержка Платный (после 100 запросов/день), требует API-ключа и привязки к Google Cloud
Bing Search API Недорогой (1000 запросов за $1), встроен в Azure Не локален, данные уходят Microsoft, может быть заблокирован в некоторых странах

SearXNG — идеальный выбор для полной приватности. Но если сайты начинают банить ваш IP — ставьте прокси (например, через Tor или резидентные прокси). У SearXNG есть плагины для этого.

Расширяем: добавляем RAG-память с Qwen3-Embedding

Веб-поиск хорош, но если вы часто спрашиваете одно и то же — каждый раз долбить интернет глупо. Настройте RAG (Retrieval Augmented Generation): сохраняйте результаты поиска в векторную базу (ChromaDB). Тогда ответы на повторяющиеся вопросы будут летать, а модель может дообучаться на вашей истории.

Open WebUI поддерживает RAG из коробки: в настройках включите "Document Retrieval" и выберите эмбеддинг-модель. Укажите эндпоинт llаma.cpp с моделью Qwen3-Embedding (запустите отдельный инстанс). Или проще: используйте встроенную поддержку Ollama с nomic-embed-text — но Qwen3-Embedding даёт лучшее качество для русскоязычных текстов. Подробнее — в статье "Как настроить полностью локальный AI-агент для программирования".

Тест-драйв: проверяем, что не глючит

Задайте вопрос: "Какая погода в Москве сегодня?". Если модель пошла в поиск и вернула реальную погоду (или хотя бы страницу с прогнозом) — всё работает. Если она сгенерировала "солнечно, +25" из своего воображения — проверьте настройки поиска.

Ещё один тест: "Что говорит последний пост на Хабре про Open WebUI?". Если модель действительно нашла статью — она даст ссылку. Если нет — скорее всего SearXNG заблокирован. Проверьте в браузере отдельно SearXNG.

Кому это вообще нужно?

Связка Open WebUI + SearXNG + llama.cc — это не игрушка. Это инструмент для тех, кто:

  • живёт в стране с фильтрацией интернета (локальный AI не боится блокировок)
  • не хочет платить за ChatGPT Pro и API
  • работает с конфиденциальными данными и не может их отправлять на облачные сервера
  • просто хочет иметь своего неподцензурного ассистента, который не навязывает политику американской корпорации

Как вы помните из статьи "Как убрать политику приватности..." — локальные решения дают полный контроль. И веб-поиск для них — решающий апгрейд.

Как НЕ надо делать: типичные грабли

  • Не ставьте Open WebUI без Docker — на Windows native Python часто ломается из-за зависимостей. Лучше Docker, как мы сделали.
  • Не забывайте монтировать volume с моделями — иначе при перезапуске всё слетит.
  • Не используйте модель меньше 7B для веб-поиска — они выдают бессвязные ответы. Qwen3.5-27B — минимум.
  • Не отключайте flash-attn при запуске llаma.cpp — скорость просядет вдвое на больших контекстах.

На что ещё обратить внимание

Open WebUI умеет не только веб-поиск, но и функции (tool calling). Например, можно научить его создавать заметки, отправлять почту, управлять умным домом. Мы разбирали это в статье "Ваш компьютер на автопилоте: как заставить локальную LLM управлять ПК через Show UI Aloha". Веб-поиск — ещё один инструмент в копилке.

И последнее: не гонитесь за самой большой моделью. Qwen3.5-27B — отличный выбор на апрель 2026 года, но если ваш GPU упирается в VRAM — берите 14B. Веб-поиск компенсирует меньшую базу знаний: модель может подсмотреть ответ в интернете, а не вспоминать его из весов. Это резко повышает качество ответов даже у маленьких моделей.

Попробуйте — и ваш локальный AI из красивого, но бесполезного болванчика превратится в реального помощника, который следит за новостями и не забывает обновлять курс биткоина. Только теперь за всё платите не вы, а ваш блок питания.

Подписаться на канал