От RAGs к богатству: практическое руководство, как сделать вашего местного чат-бота с искусственным интеллектом умнее

Важные новости

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

Практическое занятие Если вы следили за внедрением искусственного интеллекта на предприятиях, вы, несомненно, слышали термин «RAG».

Сокращенно от слова «retreach augmented Generation». , эта технология была провозглашена всеми, от Дженсена Хуанга из Nvidia до главного спасителя Intel Пэта Гелсингера, как вещь, которая сделает модели искусственного интеллекта достаточно полезными, чтобы оправдать инвестиции в относительно дорогие графические процессоры и ускорители.

Идея RAG проста: вместо того, чтобы полагаться на модель, предварительно обученную на ограниченном объеме общедоступной информации, вы можете воспользоваться способностью LLM анализировать человеческий язык для интерпретации и преобразования информации, хранящейся во внешней базе данных. <р>Важно отметить, что эта база данных может обновляться независимо от модели, что позволяет вам улучшать или обновлять ваше приложение на основе LLM без необходимости переобучения или точной настройки модели каждый раз, когда добавляется новая информация или удаляются старые данные.

Но прежде чем мы продемонстрируем, как можно использовать RAG, чтобы сделать предварительно обученные LLM, такие как Llama3 или Mistral, более полезными и функциональными, давайте поговорим немного больше о том, как они работают.

На очень высоком уровне RAG использует модель внедрения для преобразования приглашения пользователя в числовой формат. Это так называемое встраивание затем сопоставляется с информацией, хранящейся в базе данных векторов. Эта база данных может содержать любую информацию, например, внутренние процессы, процедуры или вспомогательную документацию компании. Если совпадение обнаружено, приглашение и информация о совпадении затем передаются в модель большого языка (LLM), которая использует их для генерации ответа.

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

Очевидно, что за кулисами происходит гораздо больше, и если вам действительно интересно, мы рекомендуем посмотреть «Объятия». Обширный пост Face на эту тему. Но главный вывод заключается в том, что RAG позволяет предварительно обученным LLM генерировать ответы, выходящие за рамки их обучающих данных.

Превращение чат-бота с искусственным интеллектом в вашего приятеля по RAG

<р>Существует несколько способов расширения предварительно обученных моделей с помощью RAG в зависимости от вашего варианта использования и конечной цели. Не каждое приложение искусственного интеллекта обязательно должно быть чат-ботом. Однако в рамках этого руководства мы рассмотрим, как можно использовать RAG, чтобы превратить готовый LLM в личного помощника с искусственным интеллектом, способного просматривать нашу внутреннюю документацию поддержки и осуществлять поиск в Интернете.

Для этого мы будем использовать комбинацию программы Ollama LLM, которую мы рассматривали некоторое время назад, и проекта Open WebUI.

Как следует из названия, Open WebUI — это самостоятельный веб-интерфейс для взаимодействия с различными объектами, работающими под управлением LLM, такими как Ollama, или любым количеством API-интерфейсов, совместимых с OpenAI. Его также можно развернуть как контейнер Docker, что означает, что он должен нормально работать в любой системе, поддерживающей эту популярную среду выполнения контейнера.

Что еще более важно для наших целей, Open WebUI — одна из самых простых платформ для демонстрации RAG на LLM, такие как Mistral, Llama3 от Meta, Gemma от Google или любая другая модель, которую вы предпочитаете.

Предварительные требования

  1. Вам понадобится машина, способная запускать скромные LLM, такие как LLama3-8B, с 4-битным квантованием. Для этого мы рекомендуем совместимый графический процессор — Ollama поддерживает Nvidia и некоторые карты AMD, полный список вы можете найти здесь — с объемом видеопамяти не менее 6 ГБ, но, возможно, вам удастся обойтись меньшим объемом, перейдя на модель меньшего размера, например Gemma 2B. . Для компьютеров Apple Silicon Mac мы рекомендуем компьютер с объемом памяти не менее 16 ГБ.
  2. В этом руководстве предполагается, что Ollama уже установлена ​​и работает в совместимой системе. Если вы этого не сделаете, вы можете найти наше руководство здесь, с помощью которого вы сможете начать работу менее чем за десять минут.
  3. Мы также предполагаем, что у вас установлена ​​последняя версия Docker Engine или Рабочий стол установлен на вашем компьютере. Если вам нужна помощь в этом, мы рекомендуем ознакомиться с документацией здесь.

Развертывание открытого веб-интерфейса с помощью Docker

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

Предполагая, что в вашей системе установлен Docker Engine или Desktop — мы используем Ubuntu Linux 24.04 для нашей системы. тестирование, но Windows и macOS также должны работать — вы можете развернуть новый контейнер Open WebUI, выполнив следующую команду:

docker run -d —network=host -v open-webui:/app/backend/data -e OLLAMA_BASE_URL=http://127.0.0.1:11434 —name open-webui —restart всегда ghcr.io/open- webui/open-webui:main

В зависимости от вашей системы вам может потребоваться запустить эту команду с повышенными привилегиями. Для Linux вы можете использовать sudo docker run или, в некоторых случаях, doas docker run.

Если вы планируете использовать Open-WebUI в производственной среде, открытой для общего доступа, мы рекомендуем более подробно ознакомиться с документацией по развертыванию проекта здесь, так как вы можете захотеть развернуть как Ollama, так и Open-WebUI в качестве контейнеров. Однако для этого потребуется передать ваш графический процессор в контейнер Docker, что выходит за рамки данного руководства.

Примечание. Пользователям Windows и macOS необходимо будет включить сетевое соединение хоста в разделе «Функции в разработке». на панели настроек Docker Desktop.

От грязных денег к богатству: практическое руководство, как сделать вашего местного чат-бота с искусственным интеллектом умнее

Пользователям Mac и Windows необходимо будет включить сеть хоста в Docker Desktop перед запуском контейнера Open-WebUI (нажмите, чтобы увеличить любое изображение)

Примерно через минуту контейнер должен запуститься, и вы сможете получить доступ к панели управления. посетив http://localhost:8080. Если вы используете Open WebUI на другом компьютере или сервере, вам необходимо заменить localhost на его IP-адрес или имя хоста и убедиться, что порт 8080 открыт на его брандмауэре или иным образом доступен вашему браузеру.

< р>Если все работает правильно, вас должна приветствовать страница входа Open WebUI, где вы можете нажать кнопку регистрации, чтобы создать учетную запись. Первая созданная вами учетная запись будет автоматически повышена до администратора.

From RAGs to Riches: A Practical Guide to Making your local AI Chatbot smarter

Первый созданный вами в Open WebUI пользователь будет автоматически повышен до администратора

Подключение Open WebUI к Ollama

Open WebUI — это только внешний интерфейс, и для работы в качестве чат-бота ему необходимо подключиться через API локально к Ollama или удаленно с помощью OpenAI. Когда мы создавали наш контейнер Open WebUI, он должен был настроить себя на поиск веб-сервера Ollama по адресу http://127.0.0.1:11434. Однако, если Ollama работает на другом порту или машине, вы можете настроить это в разделе «Подключения» в меню настроек.

От грязных денег к богатству: практическое руководство по сделать вашего локального чат-бота с искусственным интеллектом умнее

Открытый веб-интерфейс должен автоматически подключаться к Ollama через порт по умолчанию, а если это не так, вы можете вручную установить его адрес API в настройках< /p>

Загрузка модели

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

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

От грязных денег к богатству: практическое руководство, как сделать вашего местного чат-бота с искусственным интеллектом умнее

Загрузка модели довольно проста. Просто введите название желаемого LLM и нажмите «тянуть».

Вы можете найти полный список моделей, доступных на веб-сайте Олламы, здесь, но для целей этого руководства мы будем использовать 4 -битная квантованная версия недавно анонсированной модели Llama3 8B от Meta. В зависимости от скорости вашего соединения и выбранной модели это может занять несколько минут.

Если у вас возникли проблемы с запуском LLama3-8B, возможно, на вашем графическом процессоре недостаточно видеопамяти. Вместо этого попробуйте использовать модель меньшего размера, например Gemma:2B.

Затем давайте зададим чат-боту случайный вопрос, чтобы убедиться, что Open WebUI и Ollama действительно общаются друг с другом.

От грязных денег к богатству: практическое руководство, как сделать вашего местного чат-бота с искусственным интеллектом умнее

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

Интеграция RAG

Теперь, когда у нас есть работающий чат-бот, мы можем начать добавлять документы в вашу векторную базу данных RAG. Для этого перейдите на вкладку «Рабочая область» и откройте «Документы». Отсюда вы можете загружать любые документы, включая PDF-файлы.

От грязных людей к богатству: практическое руководство, как сделать вашего местного чат-бота с искусственным интеллектом умнее

Вы можете загрузить свои документы на странице «Документы» на вкладке «Рабочее место».

В этом примере мы загрузили документ поддержки в формате PDF, содержащий инструкции по установке и настройке среды выполнения контейнера Podman в различных сценариях. <р>По умолчанию Open WebUI по умолчанию использует модель Sentence-Transformers/all-MiniLM-L6-v6 для преобразования ваших документов во встраивания, которые может понять Llama3 или любой другой LLM, который вы используете. В «Настройках документа» (расположенных в разделе «Настройки администратора» в последней версии Open WebUI) вы можете изменить это, чтобы вместо этого использовать одну из моделей внедрения Ollama или OpenAI. Однако в этом руководстве мы будем использовать значение по умолчанию.

От богатства к богатству: практическое руководство, как сделать вашего местного чат-бота с искусственным интеллектом умнее

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

Проверяем

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

Чтобы проверить это, мы сначала зададим чат-боту вопрос, относящийся к документ, который мы загрузили ранее. В этом случае мы спросим Llama3: «Как мне установить Podman в дистрибутив на основе RHEL, например Rocky Linux?»

От грязных денег к богатству: практическое руководство по сделать вашего местного чат-бота с искусственным интеллектом умнее

Если мы не попросим модель ссылаться на наш документ, она придумает что-нибудь самостоятельно

В этом случае , Llama3 быстро отвечает общим ответом, который по большей части выглядит точным. Это показывает, насколько широко обучен Llama3, но на самом деле он еще не использует RAG для генерации ответов.

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

От грязи к богатству: практическое руководство, как сделать вашего местного чат-бота с искусственным интеллектом умнее

Чтобы запросить документ, начните запрос с символа «#» и выберите файл из раскрывающегося списка

Теперь, когда мы задаем тот же вопрос, мы получаем гораздо более сжатую версию инструкций, которая не только более точно отражает содержание нашего документа поддержки Podman, но также включает дополнительные детали, которые мы считаем полезными, например, установку podman-compose. поэтому мы можем использовать файлы docker-compose для запуска контейнеров Podman.

От грязных людей к богатству: практическое руководство, как сделать вашего местного чат-бота с искусственным интеллектом умнее

При выборе документа ответ модели основан на доступной в нем информации.

Вы можете сказать, что модель использует RAG для генерации этого ответа, поскольку Open WebUI показывает документ, который он основывал свой ответ на этом. И если мы нажмем на нее, мы сможем просмотреть конкретные используемые встраивания.

Разметка документов

Естественно, необходимость называть конкретный файл, который вы ищете, каждый раз, когда вы задаете вопрос, не так уж и полезна, если вы еще не знаете, какой документ искать. Чтобы обойти эту проблему, мы можем сказать Open WebUI, что можем запрашивать все документы с определенным тегом, например «Podman» или «Поддержка».

Мы применяем эти теги, открывая наши «Документы». панель на вкладке «Рабочая область». Отсюда нажмите кнопку редактирования рядом с документом, который мы хотим пометить, затем добавьте тег в диалоговом окне, прежде чем нажать «Сохранить».

От грязных денег к богатству: практическое руководство по сделать вашего местного чат-бота с искусственным интеллектом умнее

Если вы хотите запросить несколько документов, вы можете пометить их общей фразой, например «поддержка».

Мы теперь можно запросить все документы с этим тегом, набрав «#», а затем тег в начале нашего приглашения. Например, поскольку мы пометили документ Podman как «Поддержка», мы начали бы наше приглашение с «#Support».

Ваше личное недоумение

Реализация RAG в Open WebUI не ограничивается загруженными документами. С помощью нескольких настроек вы можете использовать комбинацию RAG и больших языковых моделей для поиска и обобщения информации в Интернете, аналогично сервису Perplexity AI.

Perplexity работает, преобразуя вашу подсказку в поисковый запрос, а затем обобщая то, что, по ее мнению, является наиболее релевантным результатом, со сносками, ссылающимися на его источники. Мы можем сделать нечто невероятно похожее, используя Ollama и Open WebUI для поиска в Google или каком-либо другом поисковом провайдере, а также взять три лучших результата и использовать их для создания цитируемого ответа на наш запрос.

В этом уроке мы рассмотрим вы можете использовать API программируемой поисковой системы Google (PSE) для создания веб-системы RAG для запроса статей El Reg, но вы можете настроить свою систему для поиска по всей сети или на определенных сайтах. Для этого нам нужно получить ключ API PSE и идентификатор двигателя. Вы можете найти документацию Google о том, как их создать, здесь.

Далее мы возьмем ключ API PSE и идентификатор двигателя, включим веб-поиск в разделе «Веб-поиск» на странице «Настройки администратора» открытого веб-интерфейса, выберите «google_pse» в качестве поисковой системы, введите идентификаторы API и двигателя. в соответствующих формах и нажмите «Сохранить».

От грязных денег к богатству: практическое руководство, как сделать вашего местного чат-бота с искусственным интеллектом умнее

Чтобы воспользоваться преимуществами RAG на основе веб-поиска, вам необходимо получить API и идентификатор системы для вашего поставщика поисковых услуг.

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

Тестируем

После того, как мы это сделали, все, что нам нужно сделать, чтобы использовать наше личное недоумение, — это указать Open WebUI выполнить поиск в Интернете. для нас. В новом чате нажмите кнопку «+» и отметьте «Поиск в Интернете», затем введите приглашение, как обычно.

От тряпок к богатству: практическое руководство по повышению интеллекта вашего локального чат-бота на основе искусственного интеллекта

Функция веб-поиска Open WebUI по умолчанию не включена, поэтому обязательно включите ее перед вводом запроса

В этом примере мы задаем Llama3 вопрос о событии, которое произошло после обучения модели, и поэтому не будем знать о нем. Однако, поскольку модель лишь резюмирует онлайн-статью, она способна ответить.

От RAG к богатству: практическое руководство, как сделать вашего местного чат-бота с искусственным интеллектом умнее

Источники, используемые для генерации ответ модели указан внизу

Теперь важно помнить, что интерпретацией этих результатов по-прежнему занимается LLM, и поэтому он все еще может и будет совершать ошибки или потенциально галлюцинировать. В этом примере Llama3, кажется, извлекла соответствующую информацию, но, как вы можете видеть, ее поиск не исключил сообщения на форуме, которые также индексируются Google.

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

The Register призван предоставить вам больше информации об использовании LLM и других технологий искусственного интеллекта – без шумихи – скоро. Мы хотим приоткрыть занавес и показать, как все это на самом деле сочетается друг с другом. Если у вас есть острые вопросы об инфраструктуре, программном обеспечении или моделях искусственного интеллекта, мы будем рады услышать о них в разделе комментариев ниже. ®

Полное раскрытие информации: Nvidia предоставила The Register взаймы видеокарту RTX A6000 поколения Ada, чтобы мы могли использовать ее для разработки таких историй, как эта, после того, как мы выразили заинтересованность в создании освещение практических приложений ИИ. У NVIDIA не было другого мнения.

Новости сегодня

Последние новости