-2.3 C
New York

Расширенная генерация с использованием LangChain, Amazon SageMaker JumpStart и семантического поиска MongoDB Atlas | DeepTech

Published:

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

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

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

Amazon SageMaker позволяет предприятиям создавать, обучать и развертывать модели машинного обучения (ML). Amazon SageMaker JumpStart предоставляет предварительно обученные модели и данные, которые помогут вам начать работу с машинным обучением. Вы можете получить доступ, настроить и развернуть предварительно обученные модели и данные через целевую страницу SageMaker JumpStart в Amazon SageMaker Studio всего за несколько кликов.

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

Обзор решения

На следующей диаграмме показана архитектура решения.

В следующих разделах мы рассмотрим шаги по реализации этого решения и его компонентов.

Настройка кластера MongoDB

Чтобы создать кластер MongoDB Atlas бесплатного уровня, следуйте инструкциям в разделе Создать кластер. Настройте базу данных доступ и сеть доступ.

Развертывание модели внедрения SageMaker

Вы можете выбрать модель встраивания (ВСЕ MiniLM L6 v2) на странице SageMaker JumpStart Модели, ноутбуки, решения страница.

SageMaker JumpStart Модели, ноутбуки, решения

Выбирать Развертывать для развертывания модели.

Убедитесь, что модель успешно развернута, и убедитесь, что конечная точка создана.

модель успешно развернута

Векторное встраивание

Векторное встраивание это процесс преобразования текста или изображения в векторное представление. С помощью следующего кода мы можем генерировать векторные внедрения с помощью SageMaker JumpStart и обновлять коллекцию созданным вектором для каждого документа:

payload = {"text_inputs": (document(field_name_to_be_vectorized))}
query_response = query_endpoint_with_json_payload(json.dumps(payload).encode('utf-8'))
embeddings = parse_response_multiple_texts(query_response)

# update the document
update = {'$set': {vector_field_name :  embeddings(0)}}
collection.update_one(query, update)

Приведенный выше код показывает, как обновить один объект в коллекции. Чтобы обновить все объекты, следуйте инструкциям инструкции.

Хранилище векторных данных MongoDB

Векторный поиск в Атласе MongoDB — это новая функция, которая позволяет хранить и искать векторные данные в MongoDB. Векторные данные — это тип данных, которые представляют точку в многомерном пространстве. Этот тип данных часто используется в приложениях машинного обучения и искусственного интеллекта. MongoDB Atlas Vector Search использует метод, называемый k-ближайшие соседи (k-NN) для поиска подобных векторов. k-NN работает путем поиска k векторов, наиболее похожих на заданный вектор. Наиболее похожими векторами являются те, которые наиболее близки к данному вектору по евклидову расстоянию.

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

Создать индекс векторного поиска

Следующим шагом будет создание Индекс векторного поиска MongoDB в векторном поле, созданном на предыдущем шаге. MongoDB использует knnVector введите для индексации векторных вложений. Векторное поле должно быть представлено как массив чисел (только типы данных BSON int32, int64 или double).

Ссылаться на Обзор ограничений типа knnVector для получения дополнительной информации об ограничениях knnVector тип.

Следующий код представляет собой пример определения индекса:

{
  "mappings": {
    "dynamic": true,
    "fields": {
      "egVector": {
        "dimensions": 384,
        "similarity": "euclidean",
        "type": "knnVector"
      }
    }
  }
}

Обратите внимание, что размер должен соответствовать размеру вашей модели внедрения.

Запрос к хранилищу векторных данных

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

Следующий код представляет собой пример определения поиска:

{
  $search: {
    "index": "<index name>", // optional, defaults to "default"
    "knnBeta": {
      "vector": (<array-of-numbers>),
      "path": "<field-to-search>",
      "filter": {<filter-specification>},
      "k": <number>,
      "score": {<options>}
    }
  }
}

Развертывание модели большого языка SageMaker

Базовые модели SageMaker JumpStart — это предварительно обученные модели большого языка (LLM), которые используются для решения различных задач обработки естественного языка (NLP), таких как суммирование текста, ответы на вопросы и вывод на естественном языке. Они доступны в различных размерах и конфигурациях. В этом решении мы используем модель Hugging Face FLAN-T5-XL.

Найдите модель FLAN-T5-XL в SageMaker JumpStart.

Найдите FLAN-T5-XL

Выбирать Развертывать для настройки модели FLAN-T5-XL.

Развертывать

Убедитесь, что модель успешно развернута и конечная точка активна.

Создайте бота Amazon Lex

Чтобы создать бота Amazon Lex, выполните следующие шаги:

  1. На консоли Amazon Lex выберите Создать бота.

Создать бота

  1. Для Имя ботавведите имя.
  2. Для Роль времени выполнениявыбирать Создайте роль с базовыми разрешениями Amazon Lex..
  3. Укажите настройки языка, затем выберите Сделанный.
  4. Добавьте образец высказывания в NewIntent Пользовательский интерфейс и выберите Сохранить намерение.
  5. Перейдите к FallbackIntent который был создан для вас по умолчанию и переключите Активный в Выполнение раздел.
    переключить активный
  6. Выбирать Строить и после успешной сборки выберите Тест.
    Сборка и тестирование
  7. Перед тестированием выберите значок шестеренки.
  8. Укажите функцию AWS Lambda, которая будет взаимодействовать с MongoDB Atlas и LLM для предоставления ответов. Чтобы создать лямбда-функцию, выполните следующие действия. эти шаги.
    9. Укажите функцию AWS Lambda.
  9. Теперь вы можете взаимодействовать с LLM.

Очистить

Чтобы очистить ресурсы, выполните следующие действия:

  1. Удалите бот Amazon Lex.
  2. Удалите функцию Лямбда.
  3. Удалите конечную точку LLM SageMaker.
  4. Удалите конечную точку модели внедрения SageMaker.
  5. Удалите кластер MongoDB Atlas.

Заключение

В статье мы показали, как создать простого бота, который использует семантический поиск MongoDB Atlas и интегрируется с моделью из SageMaker JumpStart. Этот бот позволяет быстро создавать прототипы взаимодействия пользователя с различными LLM в SageMaker Jumpstart, сопоставляя их с контекстом, происходящим из MongoDB Atlas.

Как всегда, AWS приветствует обратную связь. Пожалуйста, оставляйте свои отзывы и вопросы в разделе комментариев.


Об авторах

Игорь Алексеев является старшим партнером-архитектором решений в AWS в области данных и аналитики. На своей должности Игорь работает со стратегическими партнерами, помогая им создавать сложные архитектуры, оптимизированные для AWS. До прихода в AWS в качестве архитектора данных/решений он реализовал множество проектов в области больших данных, включая несколько озер данных в экосистеме Hadoop. В качестве инженера по обработке данных он занимался применением искусственного интеллекта и машинного обучения для обнаружения мошенничества и автоматизации делопроизводства.


Бабу Шринивасан
— старший архитектор партнерских решений в MongoDB. На своей нынешней должности он работает с AWS над созданием технической интеграции и эталонных архитектур для решений AWS и MongoDB. Он имеет более чем двадцатилетний опыт работы в области баз данных и облачных технологий. Он увлечен предоставлением технических решений клиентам, работающим с несколькими глобальными системными интеграторами (GSI) в разных регионах.

Related Articles

Recent articles