OpenAI добавил в сервис функцию «памяти», а мы в Upgraide.me сделали это раньше. Рассказываем, как

А в конце статьи — промокод на скидку, чтобы вы могли протестить эту фичу и составить о ней мнение самостоятельно :)

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

OpenAI добавил в сервис функцию «памяти», а мы в Upgraide.me сделали это раньше. Рассказываем, как

Как работает MEMORY?

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

Те, кто пользуется нейронками, скоро понимают, что это отнимает немало времени и сил: ведь ты снова и снова прописываешь в промпте детали, чтобы нейронка понимала, чего от нее хотят и как лучше это сделать (вот почему мы в Upgraide сделали библиотеку промптов: сохраняешь нужные и вставляешь парой кликов в чат).

Также: 12 промптов для маркетолога. Как с помощью нейросетей создать рекламную кампанию «от и до»?

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

Например, в демонстрационном видеоролике ChatGPT сохраняет в памяти, что пользователь «живет с золотистым ретривером по имени Элли и котом мейн-куном по имени Тедди», а также другие личные факты, включая то, что пользователь едет в июле на отдых в Канаду, у него есть двухлетняя дочь по имени Лина.

ChatGPT может использовать эту информацию в качестве контекста при генерации будущего связанного ответа.

Сейчас функция доступна всем подписчикам ChatGPT Plus, за исключением тех, кто находится в Европе или Южной Корее. Компания сообщила, что функция появится в Team, Enterprise и GPT, но не уточняла сроки.

OpenAI добавил в сервис функцию «памяти», а мы в Upgraide.me сделали это раньше. Рассказываем, как

Зачем же мы придумали и реализовали функцию памяти сами?

Если вы еще не знаете, как работает арена из нейросетей (хотя мы больше любим слово команда), то расскажем. Мы подключаем их в сервис через API ключ, который на разных условиях предоставляют производители. А дальше начинается волшебство: мы кастомизируем сервис так, как это было бы удобно сначала нам, а уже потом выкатываем это в прод.

Так вот: любое обновление мы закачиваем, как только появляется API для него. Поставить функцию памяти на GPT, конечно, классно, но что делать с остальными «ребятами»? Cohere, Anthropic, Mistral?

Тем более, что понятие «команда» мы используем не просто так: вы можете в одном чате общаться сразу со всеми моделями. Получается, только одна из них запомнит контекст, а остальные будут слепыми котятами? Нет, поэтому мы и спроектировали внутри сервиса векторные базы данных в чатах, которые и решают проблему "общей" памяти для всех моделей.

Трудные времена создают сильных котят
Трудные времена создают сильных котят

Как работает векторная база данных?

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

Работая над Upgraide мы сначала использовали второй подход. Контекстное окно состоит из анализа ограниченной последовательности последних сообщений пользователя с целью сохранения контекста разговора и обеспечения более точного и естественного взаимодействия с искусственным интеллектом.

Основной недостаток этого подхода – генерируемых сообщений обычно много и, получается, что у модели достаточно короткая память. В этом мы и проигрывали оригинальному OpenAI.

OpenAI добавил в сервис функцию «памяти», а мы в Upgraide.me сделали это раньше. Рассказываем, как

Подумав над этой проблемой (или задачей), мы пришли к идее векторной базы данных. Суть метода - данные анализируемых сообщений преобразуются в векторы, что позволяет определять семантическую близость запросов и подбирать наиболее соответствующие ответы из базы данных со знаниями.

Объясню еще проще: есть такое понятие, как обучение больших языковых моделей. То есть все, что мы сейчас используем, кто-то на каких-то данных обучал. Модель имеет набор данных, можно сказать, задачи и ответы к ним. И при решении она сравнивает ответ с тем, который должен был получиться. А она сравнивает их за счет какой-то функции. И полученное число — это вектор расхождения. Соль в том, что полученный вектор помогает модели понять или вспомнить контекст. А еще глубже можно почитать про это здесь.

Как это реализовать на практике?

В реализации нам помогут две вещи – уже знакомая векторная база данных и функционал эмбенддинг (от англ. embedding – вложение). Суть эмбенддинга в том, что некоторые языковые сущности (слово, предложение, параграф и др) преобразуются комбинацией методов в числовой вектор. Именно он позволяет анализировать схожие тексты.

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

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

OpenAI добавил в сервис функцию «памяти», а мы в Upgraide.me сделали это раньше. Рассказываем, как

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

Собранный контекст из сообщений мы отправляем вместе с текущим запросом пользователя в модель, которую он выбрал для запросов. Важно отметить, что сформированный контекст и сообщение может отправляться в любую модель, однако, само получение вектора должно использовать только одно API (в нашем случае это API Openai), чтобы избежать разных показателей векторов для одинаковых сообщений от разных моделей.

После получения ответа от модели, сам ответ также отправляется в embeddings, после чего его векторное представление сохраняется в таблице.

В чем польза?

То, что было доступно, только в одном конкретном виде — теперь доступно для всех моделей в сервисе. Тот же эффективный Claude 3 Opus, но он еще и помнит о вас. Вы постепенно упрощаете свой диалог с нейросетью, создаете из него не просто инструмент, а личного помощника.

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

OpenAI добавил в сервис функцию «памяти», а мы в Upgraide.me сделали это раньше. Рассказываем, как

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

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

А где попробовать?

Все в том же Upgraide.me. Из приятных и последних обновлений: добавили модель GPT-4o в каждый тариф, даже бесплатный. В нем же можно попробовать и Claude 3 Haiku.

OpenAI добавил в сервис функцию «памяти», а мы в Upgraide.me сделали это раньше. Рассказываем, как

Если оплачивать подписку на каждую модель отдельно — вы заплатите примерно 130 долларов. Немного жирно, да? Стоимость подписки на Upgraide.me значительно ниже. А с промокодом вы сможете научиться промптированию, увидеть разницу между моделями своими глазами с приятной скидкой.

Регистрация по ссылке.

При регистрации в окне «Промокод» введите:

MEMORY

Важно: не забудьте подтвердить аккаунт на почте после регистрации!

Будем рады вашей обратной связи: можно здесь, в личку или в специальном месте. Спасибо!

88
Начать дискуссию