Почему ваш домашний 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_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 из красивого, но бесполезного болванчика превратится в реального помощника, который следит за новостями и не забывает обновлять курс биткоина. Только теперь за всё платите не вы, а ваш блок питания.