В этой инструкции разберём, как развернуть локальную AI-модель через Ollama и Open WebUI, подключить модель для генерации текста, настроить embeddings для базы знаний и проверить RAG на простом примере с прайс-листом серверов.

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

Что понадобится

Для установки потребуется:

Windows
Docker Desktop
WSL2
PowerShell
Ollama container
Open WebUI container

Желательно иметь видеокарту NVIDIA, но для первого теста можно запускать модели и на CPU. GPU сильно ускоряет генерацию ответов, особенно для моделей 7B и 14B.

1. Установка Docker Desktop

Сначала установите Docker Desktop for Windows.

После установки откройте Docker Desktop. В разделе Containers сначала не будет запущенных контейнеров.

Установка и первичная настройка Ollama + Open WebUI для локального AI-ассистента - Image 1

2. Создание папки проекта

Откройте PowerShell и создайте папку для локального AI-проекта:

mkdir C:\local-ai
cd C:\local-ai

Создайте файл docker-compose.yml:

notepad docker-compose.yml

Вставьте в файл конфигурацию:

services:
 ollama:
   image: ollama/ollama:latest
   container_name: ollama
   ports:
     - "127.0.0.1:11434:11434"
   volumes:
     - ollama_data:/root/.ollama
   environment:
     - OLLAMA_HOST=0.0.0.0:11434
     - OLLAMA_KEEP_ALIVE=30m
   restart: unless-stopped
 open-webui:
   image: ghcr.io/open-webui/open-webui:main
   container_name: open-webui
   depends_on:
     - ollama
   ports:
     - "3000:8080"
   environment:
     - OLLAMA_BASE_URL=http://ollama:11434
     - WEBUI_SECRET_KEY=change-this-secret-key
   volumes:
     - open_webui_data:/app/backend/data
   restart: unless-stopped

volumes:
 ollama_data:
 open_webui_data:

Если планируется использовать NVIDIA GPU, можно добавить GPU passthrough в сервис ollama, но для базового теста достаточно конфигурации выше.

3. Запуск Ollama и Open WebUI

Запустите контейнеры:

docker compose up -d

Docker скачает образы:

ollama/ollama:latest
ghcr.io/open-webui/open-webui:main

После завершения проверьте контейнеры:

docker ps

Должны быть запущены два контейнера:

ollama
open-webui

Установка и первичная настройка Ollama + Open WebUI для локального AI-ассистента - Image 2 Установка и первичная настройка Ollama + Open WebUI для локального AI-ассистента - Image 3 Установка и первичная настройка Ollama + Open WebUI для локального AI-ассистента - Image 4

4. Проверка работы Ollama

Проверьте, что Ollama отвечает локально:

curl http://127.0.0.1:11434

Ожидаемый ответ:

Ollama is running

Установка и первичная настройка Ollama + Open WebUI для локального AI-ассистента - Image 5

5. Вход в Open WebUI

Откройте в браузере:

http://localhost:3000

При первом запуске Open WebUI предложит создать администратора.

Заполните:

Name
Email
Password

и нажмите Create Admin Account.

После входа откроется основной интерфейс Open WebUI.

Установка и первичная настройка Ollama + Open WebUI для локального AI-ассистента - Image 6 Установка и первичная настройка Ollama + Open WebUI для локального AI-ассистента - Image 7

6. Загрузка основной модели

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

docker exec -it ollama ollama pull qwen2.5:7b

Если ресурсов больше, можно использовать модель крупнее:

docker exec -it ollama ollama pull qwen2.5:14b

Проверить список моделей:

docker exec -it ollama ollama list

После этого модель появится в Open WebUI в списке доступных моделей.

7. Загрузка embedding-модели для базы знаний

Для работы с документами и RAG нужна embedding-модель. Она превращает текст документов в векторное представление, чтобы система могла искать релевантные фрагменты.

Скачайте модель:

docker exec -it ollama ollama pull nomic-embed-text

Проверьте:

docker exec -it ollama ollama list

В списке должна быть модель:

nomic-embed-text

8. Настройка embeddings в Open WebUI

В Open WebUI перейдите:

Admin Settings → Documents

В разделе Embedding укажите:

Embedding Model Engine: Ollama
Base URL: http://ollama:11434
Embedding Model: nomic-embed-text

После этого нажмите Save.

Установка и первичная настройка Ollama + Open WebUI для локального AI-ассистента - Image 8

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

9. Создание базы знаний

Перейдите в раздел:

Workspace → Knowledge

Создайте новую базу знаний:

New Knowledge

Название для примера:

Server Price List

Эта база будет использоваться как тестовый RAG-источник. В неё можно загрузить прайс-лист серверов, описание услуг, FAQ или внутреннюю инструкцию.

Установка и первичная настройка Ollama + Open WebUI для локального AI-ассистента - Image 9

10. Загрузка файла в Knowledge Base

Внутри коллекции нажмите кнопку + и загрузите файл, например:

Server Price List.txt

Пример простого содержимого файла:

Server Price List

GPU Server 1
Server ID: DED-START-GPU
GPU Model: NVIDIA Tesla K80
Monthly Price: $300

GPU Server 2
Server ID: DED-BUSINESS-GPU
GPU Model: NVIDIA Tesla T4
Monthly Price: $1500

После загрузки файл должен появиться внутри коллекции.

Если внутри коллекции написано:

No content found

значит файл ещё не загружен. В таком случае RAG работать не будет.

Установка и первичная настройка Ollama + Open WebUI для локального AI-ассистента - Image 10

11. Частая ошибка: No sources found

Если в чате модель отвечает:

No sources found

это означает, что Open WebUI не нашёл подходящие фрагменты в базе знаний.

Основные причины:

– коллекция создана, но внутри нет файла;
– файл загружен, но ещё не проиндексирован;
– после смены embedding-модели не был сделан reindex;
– Knowledge Base не подключена к текущему чату;
– запрос слишком общий или документ плохо структурирован.

В нашем тесте сначала коллекция была создана, но внутри неё не было контента. Поэтому Open WebUI не мог найти источники.

12. Подключение Knowledge Base к чату

Чтобы использовать базу знаний в чате, начните сообщение с # и выберите нужную коллекцию.

Например:

#Server Price List
Use only this knowledge base.
Find all GPU servers. Show server ID, GPU model and monthly price.

Если всё работает правильно, Open WebUI покажет:

Retrieved 1 source

или:

Retrieved 2 sources

Это означает, что RAG нашёл фрагменты из базы знаний и передал их модели.

Установка и первичная настройка Ollama + Open WebUI для локального AI-ассистента - Image 11

13. Проверка RAG на примере прайс-листа

Тестовый запрос:

Use only this knowledge base.

Find all GPU servers. Show server ID, GPU model and monthly price.

Пример результата:

Server ID: DED-START-GPU
GPU Model: NVIDIA Tesla K80
Monthly Price: $300

Server ID: DED-BUSINESS-GPU
GPU Model: NVIDIA Tesla T4
Monthly Price: $1500

Если в ответе появились конкретные серверы из загруженного файла, значит RAG работает.

Установка и первичная настройка Ollama + Open WebUI для локального AI-ассистента - Image 12

14. Что делать, если RAG находит не тот фрагмент

Иногда база знаний подключена, но модель отвечает не так, как ожидается. Например, Open WebUI показывает Retrieved 1 source, но в найденном фрагменте нет нужной информации.

Это нормальная ситуация для RAG. Качество поиска зависит от структуры документа.

Чтобы улучшить результат:

– делайте понятные заголовки;
– разделяйте разные категории по отдельным файлам;
– не загружайте слишком хаотичные документы;
– используйте точные названия услуг и серверов;
– увеличьте Top K в настройках Documents;
– после изменений делайте reindex.

Например, для серверов можно разделить базу так:

gpu-servers.md
streaming-servers.md
storage-servers.md
database-servers.md
vps-servers.md

Так модели будет проще найти нужный фрагмент.

Итог

В результате мы получили локальный AI-ассистент на базе:

Docker
Ollama
Open WebUI
Qwen
nomic-embed-text
Knowledge Base

RAG

Базовая модель может отвечать на общие вопросы, но настоящая польза появляется после подключения базы знаний. RAG позволяет модели отвечать не только из общих знаний, а на основе конкретных документов компании.

Даже простой пример с прайс-листом серверов показывает, как это можно использовать на практике: загрузить ассортимент, подключить его к чату и получать ответы по конкретным позициям, характеристикам и ценам.