Перейти к содержанию

AI-чат-бот на собственном сервере

В этой статье

Информация

AI-чат-бот на собственном сервере представляет собой локальное решение, объединяющее несколько компонентов с открытым исходным кодом. Ядром является Ollama - фреймворк для запуска и управления крупными языковыми моделями (LLM) на локальных вычислительных ресурсах. Он обеспечивает загрузку и развертывание выбранной LLM. Для удобного взаимодействия с развернутой моделью используется Open Web UI - веб-приложение с графическим интерфейсом, позволяющее отправлять текстовые запросы и получать сгенерированные LLM ответы. Объединение этих компонентов создает полностью локальное, автономное решение для развертывания современных языковых моделей с открытым исходным кодом при сохранении полного контроля над данными и производительностью.

Основные возможности

  • Веб-интерфейс: Open Web UI представляет собой интуитивно понятный веб-интерфейс, обеспечивающий централизованное управление и расширенные возможности взаимодействия с локальными моделями ИИ из репозитория Ollama, значительно упрощая процесс использования моделей для пользователей различных уровней подготовки.
  • Интеграция с множеством языковых моделей: Ollama предоставляет доступ к множеству свободных языковых моделей, обеспечивая доступ к их усовершенствованным возможностям обработки естественного языка. Вы также можете подключить свои модели.
  • Задачи: с помощью LLM пользователи могут вести беседы, получать ответы на вопросы, анализировать данные, выполнять переводы, а также создавать свои чат-боты и приложения с использованием ИИ.
  • Открытый исходный код: Ollama является проектом с открытым исходным кодом, что позволяет пользователям настраивать и модифицировать платформу в соответствии со своими потребностями.
  • Веб-скрапер и поиск по собственным документам (RAG): Через OpenWebUI вы можете выполнять поиск по различным видам документации: текстовым файлам, PDF-документам, презентациям в формате ppt/pptx, веб-сайтам и видео на YouTube.

Примечание

Подробная информация по основным настройкам Ollama и Open WebUI содержится в документации разработчиков Ollama и в документации разработчиков Open WebUI.

Особенности сборки

ID Совместимые ОС VPS BM VGPU GPU Мин. ЦПУ (Ядер) Мин. ОЗУ (Гб) Мин. HDD/SDD (Гб) Доступно
117 Ubuntu 22.04 - - + + 4 16 - Да
  • Время на установку 15-30 минут вместе с OS.
  • Сервер Ollama загружает и запускает LLM в памяти.
  • Open WebUI развертывается как веб-приложение, подключенное к серверу Ollama.
  • Пользователи взаимодействуют с LLM через веб-интерфейс Open WebUI, отправляя запросы и получая ответы.
  • Все вычисления и обработка данных происходят локально на сервере. Администраторы могут настраивать LLM для специфических задач через инструменты OpenWebUI.
  • Системные требования: не менее 16 ГБ оперативной памяти.

После установки необходимо пройти по ссылке: https://ollama<Server_ID_from_Invapi>.hostkey.in.

Примечание

Если не указано иное, по умолчанию мы устанавливаем последнюю релиз версию программного обеспечения с сайта разработчика или репозиториев операционной системы.

Начало работы после развертывания AI-чат-бота

После оплаты заказа на указанную при регистрации электронную почту придет уведомление о готовности сервера к работе. В нем будет указан IP-адрес VPS, а также логин и пароль для подключения. Управление оборудованием клиенты нашей компании осуществляют в панели управления серверами и APIInvapi.

После перехода по ссылке из тега webpanel будет открыто окно авторизации.

Данные для авторизации, которые можно найти или во вкладке Информация >> Тэги панели управления сервером или в присланном e-mail:

  • Ссылка для доступа к панели управления Ollama c Open WebUI с веб-интерфейсом: в теге webpanel. Точная ссылка вида https:ollama<Server_ID_from_Invapi>.hostkey.in приходит в письме, отправляемом при сдаче сервера.

После перехода по ссылке необходимо создать идентификатор пользователя и пароль в Open WebUI:

Внимание

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

Стартовый экран OpenWebUI

На стартовом экране представлен интерфейс чата, а также приведены несколько примеров входных запросов (промтов) для того, чтобы продемонстрировать возможности системы. Чтобы начать взаимодействие с чат-ботом, пользователю необходимо выбрать предпочтительную языковую модель из доступных вариантов. В данном случае предлагается использовать модель Llama 3, которая обладает обширными знаниями и возможностями для генерации ответов на различные запросы.

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

Настройка рабочего пространства OpenWebUI

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

  • Models - в этом разделе можно выполнить файн-тюнинг модели для своих нужд на основе существующей модели: задать системный промт, параметры, подключить документы или базу знаний, задать инструменты, фильтры или действия.
  • Knowledge - в этом разделе настраивается база знаний (RAG) на основе ваших документов
  • Prompts - в этом разделе создавать, редактировать и управлять собственными промптами (входными запросами) для более эффективного взаимодействия с чат-ботом.
  • Tools - здесь можно подключить специальные скрипты на Python, которые предоставляются LLM во время запроса. Инструменты позволяют LLM выполнять действия и получать дополнительный контекст в результате. Готовые инструменты от сообщества можно посмотреть на сайте.
  • Functions - здесь можно подключить модульные операции, которые позволяют пользователям расширять возможности ИИ, встраивая конкретную логику или действия непосредственно в рабочие процессы. В отличие от инструментов, которые работают как внешние утилиты, функции выполняются встроенно в среду OpenWebUI и обрабатывают такие задачи, как обработка данных, визуализация и интерактивное общение. Готовые примеры функций можно посмотреть на сайте.

Добавление и удаление моделей

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

Установка модели через интерфейс OpenWebUI

Для установки моделей через веб-интерфейс выполните следующие шаги:

  1. Выберите нужную модель из списка доступных для Ollama и перейдите на ее страницу, нажав на название. Выберите тип и размер модели (при необходимости). По умолчанию будет предложена наиболее подходящая "размерность". Далее нажав на значок с двумя квадратами слева от команды вида ollama run <имя_модели> скопируйте строку установки в буфер обмена.

  2. Нажмите на название модели в левом верхнем углу окна чат-бота OpenWebUI и в поле Search a model вставьте cкопированую ранее команду.

  3. Нажмите на строку Pull "ollama run имя_модели" from Ollama.com.

  4. После успешного скачивания и установки модель появится в выпадающем списке и будет доступна для выбора.

Установка модели через командную строку

Для установки новых моделей необходимо подключиться к серверу по SSH и выполнить соответствующую команду.

Удаление модели

Для удаления моделей из интерфейса OpenWebUI вам необходимо зайти в настройки веб-интерфейса Значок пользователя в правом верхнем углу >> Settings >> Admin Panel >> Model и в выпадающем списке Delete a model выбрать удаляемую модель и нажать на значок рядом с ней:

Для удаления из командно строки, выполните следующую команду (от root):

ollama rm <имя_модели>

Добавление документов в базу знаний (RAG)

Опция Knowledge позволяет создавать базы знаний (RAG) и загружать в них документы различных форматов, такие как PDF, текстовые файлы, документы Word, презентации PowerPoint и другие, для их последующего анализа и обсуждения с помощью чат-бота. Это особенно полезно для изучения и понимания сложных документов, подготовки к презентациям или встречам, анализа данных и отчетов, проверки письменных работ на грамматические ошибки, стиль и логику, работы с юридическими, финансовыми документами, а также исследовательской деятельности в различных областях. Чат-бот может помочь разобраться в содержании документа, сформулировать резюме, выделить ключевые моменты, ответить на вопросы, предоставить дополнительную информацию и рекомендации.

Для работы с документами вам необходимо создать хотя бы одну базу знаний. Для этого необходимо зайти в раздел Workspace >> Knowledge и нажать на в правом верхнем углу. Заполните информацию по имени и содержании базы знаний и создайте ее кнопкой Create Knowledge.

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

Также, нажав на кнопку рядом со строкой поиска Search Collection можно:

  • Загрузить файлы в базу знаний (Upload files)
  • Загрузить директорию с файлами целиком (Upload directory)
  • Синхронизировать файлы и их содержимое между базой знаний и директорией (Sync directory). Этот пункт позволяет актуализировать базу знаний.
  • Добавить содержимое в базу знаний через встроенный редактор Open WebUI (Add text content)

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

Внимание

В зависимости от выбранной модели и мощности GPU на сервере создания эмбендингов в настройках работы с документами создание базы знаний может занимать от десятков секунд до десятков минут.

Для управления настройками работы с документами необходимо перейти в раздел Имя пользователя >> Setting >> Admin Settings >> Documents.

Здесь вы можете настроить:

  1. Embedding Model Engine - Движок для создания эмбендингов. По умолчанию используется SentenceTransformers, но вы можете загрузить и использовать для этого эмебединг модели из Ollama;
  2. Hybrid Search - Гибридный поиск. При его включении качество поиска по базе знаний и документам возрастет, но скорость работы может упасть в разы.
  3. Embeding Models - модель для эмбединга. Рекомендуем сразу же поставить в это поле улучшенную модель sentence-transformers/all-MiniLM-L12-v2 и нажать на кнопку загрузки справа от него.
  4. Engine - движок экстрактора контента. Используйте значение по умолчанию.
  5. Query Params: здесь настраиваются параметры, влияющие на запросы к загруженным документам и способ получения ответов от чат-бота.
    • Top K - эта настройка определяет количество лучших результатов поиска, которые будут отображаться. Например, если задать Top K = 5, то в ответе будут показаны 5 наиболее релевантных документов или фрагментов текста.
    • RAG Template - RAG (Retrieval Augmented Generation) - это метод, при котором система сначала извлекает релевантные части текста из набора документов, а затем использует их для генерации ответа с помощью языковой модели. RAG Template задает шаблон для формирования запроса к языковой модели при использовании этого метода. Возможность настраивать RAG Template позволяет адаптировать формат запроса к языковой модели для получения более качественных ответов в определенных сценариях использования.
  6. Chunk Params - данный раздел позволяет настроить параметры разбиения (чанкинга) загруженных документов. Чанкинг - это разделение больших документов на более мелкие части для удобства обработки. Здесь можно задать максимальный размер чанка в символах: Chunk Size и число символов, на которые части могут перекрывать друг-друга: Chunk Overlap. Рекомендуемые значения 1500 и 100 соответственно.

    В этом разделе также можно включить опцию PDF Extract Images (OCR) - это технология распознавания текста на изображениях. При включении этой опции система будет извлекать изображения из PDF-файлов и применять OCR для распознавания любого текста, содержащегося на этих изображениях.

  7. Files - здесь вы можете задать максимальный размер загружаемого файла и их общее число.

Расположенные ниже кнопки Reset Upload Directory и Reset Vector Storage/Knowledge очищают директорию загруженных файлов документов и сбрасывают сохраненную базу векторного хранилища баз знаний (всех). Используйте их только при крайней необходимости и удаляйте файлы и базы знаний через Workspace.

После загрузки документов можно работать с ними в режиме чата. Для этого необходимо в строке чата начать сообщение со знака # и выбрать нужный документ или базу знаний из выпадающего списка. После чего ответ на запрос будет сформирован на основе данных из выбранного документа. Эта функция позволяет получать контекстные ответы, основанные на загруженной информации, и может быть полезна для различных задач, таких как поиск информации, анализ данных и принятие решений на основе документов:

Примечание

С помощью знака # вы можете добавлять в запрос веб-сайты или видео YouTube, чтобы LLM искала по ним также.

Советы по работе с RAG в OpenWebUI

  • Любые манипуляции с Embedding Model потребуют удаления и загрузки документов в векторную базу заново. Изменение параметров RAG этого не требует.
  • При добавлении или удалении документов обязательно зайдите в кастомную модель (если она есть) и обновите коллекцию документов, иначе поиск по ним может работать неправильно.
  • OpenWebUI распознает форматы pdf, csv, rst, xml, md, epub, doc, docx, xls, xlsx, ppt, pptx, txt, но рекомендуется загружать документы в plain text.
  • Использование гибридного поиска улучшает результаты, но потребляет много ресурсов, и ожидание ответа может затянуться на 20–40 секунд даже на мощном GPU.

Обновление чат-бота

При появлении новых моделей, а также для исправления ошибок и увеличения функционала AI-чат-бота вам необходимо обновить два его компонента - Ollama и Open WebUI.

Обновление Ollama

  1. Для обновления Ollama зайдите по SSH на сервер и запустите от root следующую команду:

    curl -fsSL https://ollama.com/install.sh | sh
    
  2. Откройте браузер и проверьте доступность ollama через API, введя адрес <ip-адрес сервера>:11434.

    Вы должны получить сообщение Ollama is running.

  3. Если доступа к API нет, то возможно необходимо добавить в файл сервиса /etc/system.d/system/ollama.service следующие строки в секцию [Service]:

    Environment="OLLAMA_HOST=0.0.0.0" 
    Environment="OLLAMA_ORIGINS=*"
    

    и перезапустить сервис командами:

    systemctl daemon-reload
    service ollama restart
    

Обновление Open WebUI

Для обновления Open WebUI зайдите по SSH на сервер и запустите от root следующую команду:

docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once open-webui

Если обновление через watchtower не сработает, то выполните следующие команды:

docker stop open-webui
docker rm open-webui
docker run -d -p 8080:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda

Внимание

Если вы хотите получить доступ к встроенной API документации по endpoint Open WebUI, то вам необходимо запустить контейнер с установленным значением переменной ENV=dev:

docker run -p 8080:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui -e ENV='dev' --restart always ghcr.io/open-webui/open-webui:cuda

Практические статьи и советы

Вы можете получить больше полезной информации из статей в нашем блоге:

Заказ сервера с AI-чат-бот с помощью API

Для установки данного ПО с использованием API следуйте этой инструкции.