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

Представьте, что вы разрабатываете бота, который может предоставлять уникальные находки из популярного документального фильма на YouTube, а также знания из классических произведений литературы и современных блогов. Просто введите соответствующие ссылки, и как по волшебству, ваш многофункциональный бот готов к работе.
Введение
Вы, вероятно, сталкивались с бесчисленными статьями, в которых обсуждается создание интеллектуальных чат-ботов, которые обрабатывают данные, документы и ссылки с использованием популярных векторных баз данных. Среди них Langchain и LlamaIndex часто являются предпочтительными решениями для извлечения знаний, умело индексируя и обращаясь с базами данных.
Итак, у меня есть значительный опыт в этой области, так как я принял участие в курсе по Langchain и векторным базам данных для производства. В этой статье я планирую поделиться пониманием, полученным при работе с этими фреймворками и инструментами и особенностями, с которыми приходилось сталкиваться.
Среди наиболее распространенных вопросов были следующие:
Как разделить данные? Какой размер блока является осмысленным? Как создать вложения для каждого блока? Какую модель вложений следует использовать? Как хранить блоки в векторной базе данных? Какую векторную базу данных следует использовать? Следует ли хранить метаданные вместе с вложениями? Как найти похожие документы для запроса? Какую модель ранжирования следует использовать?
- Роль векторных баз данных в современных приложениях общей искусственного интеллекта
- Познакомьтесь с Мистралем Трисмегистом 7В Обучающий набор данных по Эзотерике, Духовности, Оккультизму, Традициям Мудрости…
- «GPT-4 может решать математические задачи, но не на всех языках»
Несколько месяцев назад я наткнулся на 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, на самом деле довольно просто.
Я настоятельно рекомендую ознакомиться с различными примерами в сообществе раздела выставочного отдела. Вы вероятно найдете их вдохновляющими и можете получить новые идеи, вдохновленные тем, что видите 😎