Embedchain в действии.

Embedchain в действии красота и мода в одном месте.

изображение, созданное с помощью Midjourney

Введение

Вы, вероятно, сталкивались с бесчисленными статьями, в которых обсуждается создание интеллектуальных чат-ботов, которые обрабатывают данные, документы и ссылки с использованием популярных векторных баз данных. Среди них Langchain и LlamaIndex часто являются предпочтительными решениями для извлечения знаний, умело индексируя и обращаясь с базами данных.

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

Среди наиболее распространенных вопросов были следующие:

Как разделить данные? Какой размер блока является осмысленным? Как создать вложения для каждого блока? Какую модель вложений следует использовать? Как хранить блоки в векторной базе данных? Какую векторную базу данных следует использовать? Следует ли хранить метаданные вместе с вложениями? Как найти похожие документы для запроса? Какую модель ранжирования следует использовать?

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

Итак, что делает Embedchain революционером в создании приложений и чат-ботов?

Давайте разберем слои Embedchain, чтобы понять его методичный подход к созданию чат-ботов, способных обрабатывать любой набор данных.

Строительный блок создания бота

Обнаружение данных и их загрузка: Embedchain гибок при работе с различными типами данных. Будь то видеоролик с YouTube, цифровая книга в формате PDF, познавательная блог-статья, любая веб-ссылка или данные, хранящиеся локально, он распознает и обрабатывает их с легкостью. Это исключает необходимость в управлении загрузчиками данных или выборе соответствующего формата. Простая команда .add позволяет интегрировать данные в чат-бот или приложение для запросов.

Разделение данных на блоки: После загрузки данные разбиваются на осмысленные сегменты. Эта стратегия разделения значительно увеличивает потенциал последующих этапов для создания более интеллектуальных и отзывчивых чат-ботов.

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

Создание вложений: Каждый сегментированный элемент проходит преобразование. Блоки преобразуются в вложения – переводя сырые данные в векторы, готовые для машинного анализа, хранения и извлечения.

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

изображение от автора

Для тех, кто может экономить или экспериментировать, есть возможность использовать “sentence transformer” или даже собственные модели, доступные через Huggingface, которые не требуют затрат. Эта гибкость означает, что при правильных настройках и выборе можно эффективно запускать всё приложение чат-бота, не понеся при этом никаких расходов.

Хранение: Наконец, эти векторы, понятные для машин, воплощающие суть исходных данных, находят свое место в векторной базе данных, ожидая своего вызова для будущих запросов. Embedchain использует векторную базу данных Chroma – в моем опыте это отличный выбор, и бонусом является то, что она доступна без затрат.

Функциональность: Embedchain предлагает функциональность, разработанную для интуитивного взаимодействия. Есть Интерфейс Запроса, который работает как бот для ответов на вопросы. Используя функцию .query(), он дает прямые ответы, не сохраняя контекст предыдущих разговоров.

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

Существует возможность Тестового Прогона для проверки запросов без отправки их в LLM. А для получения ответа в реальном времени, удобна возможность Потокового Отклика.

Пример приложения

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

Как это работает: Я собрал и загрузил источники данных. Затем они автоматически были разделены на фрагменты, внедрены и сохранены в базе данных, позволяя мне быстро запрашивать их. Вот подробный код, объясняющий, как я это сделал:

Во-первых, предполагая, что вы установили OpenAI и Embedchain с помощью pip, вы можете импортировать ключ API OpenAI. Убедитесь, что вы храните этот ключ в отдельном файле, чтобы избежать его публичного разглашения:

Вы можете назвать своего бота и присвоить это имя функции App(). Затем вы начнете процесс загрузки данных. В моем случае, мне понадобилась информация, доступная на веб-сайте. Embedchain предоставляет возможность включения целого веб-сайта, но мне были нужны только конкретные страницы для моего расследования:

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

'80cd3a55397a9406be28c5d752c0f41b'

Затем я искал данные с YouTube, которые дали бы мне представление о базовых показателях и дополнительных деталях о компании:

За этим подходом стоит модель, которая обрабатывает транскрипты, вместе с ‘yt_loader’, который получает ссылки и включает их в бота. Бот как губка – чем больше вы кидаете в него, тем сочнее он становится. Поэтому я добавил статью ArXiv о базовых показателях для приправления всего этого.

В этом фрагменте кода я включил данные из Notion, Google Docs и GitHub. Ведь зачем ограничивать мировую мудрость вашего бота, верно?

Чтобы получить ответы от моего бота, мне достаточно просто завести неформальный разговор. Он ищет по своей базе данных, находит актуальные полезности и возвращает компетентный ответ:

Вывод:

Чтобы отправить показатели на платформу DataPerf, участники могут использовать онлайн-платформу под названием Dynabench. Они могут отправить свои решения на оценку, следуя рекомендациям, предоставленным на платформе. Платформа Dynabench представляет показатели DataPerf, инструменты оценки, рейтинги и документацию. Участники могут отправлять, оценивать и сравнивать свои решения для всех показателей данных, определенных в наборе DataPerf. Платформа также поддерживает широкий спектр представления работ, таких как подмножества для обучения, приоритеты/упорядочивание и стратегии покупки. Если вам нужны более конкретные инструкции о том, как отправить показатели, рекомендуется обратиться к документации или рекомендациям, предоставленным на платформе Dynabench.

Я просто могу поболтать с ним, и он просматривает свою базу данных как библиотекарь на кофеине, предоставляя ответы, сгенерированные из всего этого сохраненного знания 🙂

Эксперимент №2

Вот добавленное значение: я предлагаю небольшой эксперимент с Discord-ботом. Замечательно то, что я предпринял это без предварительного опыта разработки Discord-ботов. Это демонстрирует, насколько легко исследовать новые области с использованием Embedchain.

Документация

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

Discord бот за 5 минут

Для настройки бота, начните с помещения вашего ключа API OpenAI в отдельный файл .env. Затем посетите сайт разработчика Discord, чтобы создать новое приложение бота.

Там, с помощью документации, вы заполните данные о боте и настроите несколько параметров, например, включив все три варианта в разделе «Привилегированные Gateway Intents». Не забудьте сохранить это.

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

Затем вы сгенерируете URL, который позволит вам добавить своего бота на сервер Discord. Скопируйте этот URL, вставьте его в веб-браузер, выберите сервер, в котором вы хотите видеть своего бота, и одобрите запрос.

Вот небольшой совет от профессионала:

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

Установите необходимые пакеты:

discord==2.3.1embedchain==0.0.58python-dotenv==1.0.0

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

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

Экспериментируя с кодом, вы вероятно откроете множество способов изменить стиль бота согласно вашим предпочтениям. Кроме того, это идеальное место для обучения.

подпись автора

Чтобы добавить источники данных боту, используйте слэш-команду:

/add <тип_данных> <url_или_текст>/query <вопрос>/chat <вопрос>
подпись автора

Вуаля! Запустите активационный код, и ваш бот оживет, мгновенно появляясь онлайн.

Заключение

Таким образом, как показано в приведенных выше примерах, создание полностью функционального бота, способного мгновенно получать информацию в различных форматах – будь то текст, видео на YouTube, PDF, веб-страницы, карты сайтов, Docx, Google Docs, Notion, CSV, MDX или пары Q&A, на самом деле довольно просто.

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