Приведите свою базу знаний в OpenAI’s GPT с помощью MyScale

Расширьте свои знания с помощью MyScale в OpenAI's GPT-3

6 ноября 2023 года OpenAI объявила о выпуске GPTs. На этой платформе без кода вы, как профессиональный (или любительский) разработчик, можете создавать настраиваемые GPTs или чат-боты, используя свои инструменты и подсказки, эффективно изменяя свое взаимодействие с GPT OpenAI. Предыдущие взаимодействия требовали использования динамической подсказки для получения ответов от GPT с помощью LangChain (открывается в новом окне) или LlamaIndex (открывается в новом окне). Теперь GPT OpenAI обрабатывает вашу динамическую подсказку, вызывая внешние API или инструменты.

Это также меняет то, как мы (в MyScale) создаем системы RAG, от создания подсказок с контекстами на стороне сервера до внедрения этих контекстов в модель GPTs.

MyScale упрощает внедрение контекстов в ваши GPTs. Например, метод OpenAI заключается в загрузке файлов на платформу GPT через веб-интерфейс. В свою очередь, MyScale позволяет вам смешивать фильтрацию структурированных данных и семантический поиск с использованием SQL-запроса WHERE (открывается в новом окне), обрабатывать и хранить гораздо большую базу знаний по более низкой стоимости, а также использовать одну базу знаний для нескольких GPTs.

Попробуйте MyScaleGPT прямо сейчас в GPT Store или интегрируйте базу знаний MyScale с вашим приложением уже сегодня с помощью нашего API, размещенного на Hugging Face.

BYOK: Используйте свои собственные знания

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

Мы добавили LLM в нашу цепочку (или стек), когда создавали RAG с использованием MyScale. На этот раз нам нужно добавить базу данных MyScale на платформу GPTs. К сожалению, прямое установление связей между GPTs и MyScale в настоящее время невозможно. Поэтому мы настроили интерфейс запросов и выделили его в виде REST API.

Благодаря нашему предыдущему успеху с вызовом функции OpenAI (открывается в новом окне), мы можем теперь разработать аналогичный интерфейс, где GPT может выполнять запросы с помощью векторного поиска со строками фильтрации, подобными SQL. Параметры записываются в формате OpenAPI (открывается в новом окне) следующим образом:

Предоставление записей запроса для различных таблиц

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

Особенно стоит отметить, что ранее введенные методы, такие как поиск самостоятельно соединяемых модулей (открывается в новом окне) и векторный SQL (открывается в новом окне), требуют динамического или полудинамического включения подсказок для описания структуры таблиц. Вместо этого GPTs функционируют подобно конверсационным агентам в LangChain (открывается в новом окне), где агенты используют разные инструменты для запросов к таблицам.

Например, записи API можно написать в OpenAPI 3.0 следующим образом:

После настройки функций GPT Actions для извлечения базы знаний, мы просто заполняем инструкции Instructions и указываем GPT, как запрашивать базы знаний и затем отвечать на вопросы пользователя:

Примечание: Сделайте все возможное для ответа на вопросы. Вы можете свободно использовать любые доступные инструменты для поиска соответствующей информации. Пожалуйста, сохраняйте все детали запроса при вызове функций поиска. При использовании баз знаний MyScale для массива строк, используйте код has(column, value to match). Для даты публикации используйте parseDateTime32BestEffort() для преобразования значений метки времени из строкового формата в объекты даты и времени. Никогда не конвертируйте столбцы с типом дата-время с помощью этой функции. Всегда добавляйте ссылки на документы, которые вы использовали.

Хостинг вашей базы данных в формате OpenAPI

GPTs адаптируют API в соответствии со стандартом OpenAI 3.0. Некоторые приложения, такие как базы данных, не имеют интерфейса OpenAPI. Поэтому нам необходимо использовать промежуточное программное обеспечение для интеграции GPT с MyScale.

Мы разместили базу данных с совместимыми интерфейсами OpenAI на Hugging Face (открывается в новом окне). Мы использовали flask-restx (открывается в новом окне), чтобы упростить и автоматизировать реализацию, так что код является компактным, чистым и легкочитаемым: app.py(открывается в новом окне), funcs.py (открывает новое окно).

Хорошо в том, что как сама проба, так и функции составлены вместе. Поэтому вам не нужно слишком много думать о сочетании запросов, функциональности и расширяемости; просто напишите это в удобочитаемом формате, и все готово. GPT будет читать эту документацию из файла JSON OpenAI.

Примечание: flask-restx генерирует только API в формате Swagger 2.0. Вы должны преобразовать их в формат OpenAPI 3.0 с помощью Swagger Editor (открывается в новом окне) сначала. Вы можете использовать наш JSON API на Hugging Face (открывается в новом окне) в качестве примера.

GPT, использующий контексты из API

С правильными инструкциями GPT будет использовать особые функции для тщательной обработки различных типов данных. Примеры таких типов данных включают функции SQL ClickHouse, такие как has(column, value) для столбцов массивов и parseDateTime32BestEffort(value) для столбцов с отметками времени.

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

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

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