-2.3 C
New York

Начало работы с встраиванием текста в Amazon Titan | DeepTech

Published:

Встраивания играют ключевую роль в обработке естественного языка (NLP) и машинном обучении (ML). Встраивание текста относится к процессу преобразования текста в числовые представления, которые находятся в многомерном векторном пространстве. Этот метод достигается за счет использования алгоритмов машинного обучения, которые позволяют понимать значение и контекст данных (семантические отношения) и изучать сложные отношения и шаблоны внутри данных (синтаксические отношения). Полученные векторные представления можно использовать для широкого спектра приложений, таких как поиск информации, классификация текста, обработка естественного языка и многие другие.

Amazon Titan Text Embeddings — это модель встраивания текста, которая преобразует текст на естественном языке, состоящий из отдельных слов, фраз или даже больших документов, в числовые представления, которые можно использовать для реализации таких сценариев использования, как поиск, персонализация и кластеризация на основе семантического сходства. .

В этом посте мы обсуждаем модель Amazon Titan Text Embeddings, ее особенности и примеры использования.

Некоторые ключевые концепции включают в себя:

  • Числовое представление текста (векторы) отражает семантику и отношения между словами.
  • Богатые вложения можно использовать для сравнения сходства текста.
  • Многоязычные встраивания текста могут идентифицировать значение на разных языках.

Как фрагмент текста преобразуется в вектор?

Существует несколько методов преобразования предложения в вектор. Один из популярных методов — использование алгоритмов встраивания слов, таких как Word2Vec, GloVe или FastText, а затем агрегирование встраивания слов для формирования векторного представления на уровне предложения.

Другой распространенный подход — использование больших языковых моделей (LLM), таких как BERT или GPT, которые могут обеспечивать контекстуализированное встраивание для целых предложений. Эти модели основаны на архитектурах глубокого обучения, таких как Transformers, которые могут более эффективно улавливать контекстную информацию и отношения между словами в предложении.

Зачем нам нужна модель встраивания?

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

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

Модель Amazon Titan Text Embeddings оптимизирована для извлечения текста, что позволяет использовать RAG. Он позволяет вам сначала преобразовать текстовые данные в числовые представления или векторы, а затем использовать эти векторы для точного поиска соответствующих отрывков из базы данных векторов, что позволяет вам максимально эффективно использовать свои собственные данные в сочетании с другими базовыми моделями.

Поскольку Amazon Titan Text Embeddings представляет собой управляемую модель Amazon Bedrock, она предлагается как полностью бессерверная. Вы можете использовать его через REST API Amazon Bedrock или AWS SDK. Обязательными параметрами являются текст, для которого вы хотите сгенерировать вложения, и modelID параметр, который представляет имя модели Amazon Titan Text Embeddings. Следующий код представляет собой пример использования AWS SDK для Python (Boto3):

import boto3
import json
 
#Create the connection to Bedrock
bedrock = boto3.client(
    service_name="bedrock",
    region_name="us-west-2", 
    
)
 
bedrock_runtime = boto3.client(
    service_name="bedrock-runtime",
    region_name="us-west-2", 
    
)
 
# Let's see all available Amazon Models
available_models = bedrock.list_foundation_models()
 
for model in available_models('modelSummaries'):
  if 'amazon' in model('modelId'):
    print(model)
 
# Define prompt and model parameters
prompt_data = """Write me a poem about apples"""
 
body = json.dumps({
    "inputText": prompt_data,
})
 
model_id = 'amazon.titan-embed-text-v1' #look for embeddings in the modelID
accept="application/json" 
content_type="application/json"
 
# Invoke model 
response = bedrock_runtime.invoke_model(
    body=body, 
    modelId=model_id, 
    accept=accept, 
    contentType=content_type
)
 
# Print response
response_body = json.loads(response('body').read())
embedding = response_body.get('embedding')
 
#Print the Embedding
 
print(embedding)

Вывод будет выглядеть примерно так:

(-0.057861328, -0.15039062, -0.4296875, 0.31054688, ..., -0.15625)

Ссылаться на Настройка Amazon Bedrock boto3 для получения более подробной информации о том, как установить необходимые пакеты, подключиться к Amazon Bedrock и вызвать модели.

Особенности встраивания текста Amazon Titan

С помощью Amazon Titan Text Embeddings вы можете вводить до 8000 токенов, что делает его хорошо подходящим для работы с отдельными словами, фразами или целыми документами в зависимости от вашего варианта использования. Amazon Titan возвращает выходные векторы размером 1536, что обеспечивает высокую степень точности, а также оптимизирует получение экономически эффективных результатов с малой задержкой.

Amazon Titan Text Embeddings поддерживает создание и запрос встраивания текста на более чем 25 различных языках. Это означает, что вы можете применять модель к своим вариантам использования без необходимости создавать и поддерживать отдельные модели для каждого языка, который вы хотите поддерживать.

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

  • Более широкий охват – Благодаря встроенной поддержке более 25 языков вы можете расширить охват своих приложений для пользователей и контента на многих международных рынках.
  • Стабильная производительность – Благодаря единой модели, охватывающей несколько языков, вы получаете согласованные результаты для разных языков вместо оптимизации для каждого языка отдельно. Модель обучается комплексно, поэтому вы получаете преимущество на разных языках.
  • Поддержка многоязычных запросов – Amazon Titan Text Embeddings позволяет запрашивать встраивание текста на любом из поддерживаемых языков. Это обеспечивает гибкость для получения семантически схожего контента на разных языках без привязки к одному языку. Вы можете создавать приложения, которые запрашивают и анализируют многоязычные данные, используя одно и то же единое пространство внедрения.

На момент написания этой статьи поддерживаются следующие языки:

  • арабский
  • Китайский упрощенный)
  • Китайский традиционный)
  • Чешский
  • Голландский
  • Английский
  • Французский
  • Немецкий
  • иврит
  • хинди
  • итальянский
  • Японский
  • Каннада
  • Корейский
  • малаялам
  • маратхи
  • Польский
  • португальский
  • Русский
  • испанский
  • Шведский
  • Филиппинский Тагальский
  • тамильский
  • телугу
  • турецкий

Использование встраивания текста Amazon Titan с LangChain

Лангчейн — это популярная платформа с открытым исходным кодом для работы с генеративными моделями искусственного интеллекта и поддерживающими технологиями. Он включает в себя Клиент BedrockEmbeddings который удобно оборачивает Boto3 SDK слоем абстракции. BedrockEmbeddings client позволяет работать с текстом и встраиваниями напрямую, не зная деталей структуры запроса или ответа JSON. Ниже приведен простой пример:

from langchain.embeddings import BedrockEmbeddings

#create an Amazon Titan Text Embeddings client
embeddings_client = BedrockEmbeddings() 

#Define the text from which to create embeddings
text = "Can you please tell me how to get to the bakery?"

#Invoke the model
embedding = embeddings_client.embed_query(text)

#Print response
print(embedding)

Вы также можете использовать LangChain BedrockEmbeddings вместе с клиентом Amazon Bedrock LLM для упрощения реализации RAG, семантического поиска и других шаблонов, связанных с внедрением.

Варианты использования для встраивания

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

  • Вопрос и ответ – Вложения могут помочь поддерживать интерфейсы вопросов и ответов с помощью шаблона RAG. Генерация вложений в сочетании с векторной базой данных позволяет находить близкие совпадения между вопросами и содержимым в хранилище знаний.
  • Персонализированные рекомендации – Подобно вопросам и ответам, вы можете использовать встраивания для поиска мест отдыха, колледжей, транспортных средств или других продуктов на основе критериев, предоставленных пользователем. Это может быть простой список совпадений, или вы можете затем использовать LLM для обработки каждой рекомендации и объяснения того, насколько она соответствует критериям пользователя. Вы также можете использовать этот подход для создания индивидуальных «10 лучших» статей для пользователя с учетом его конкретных потребностей.
  • Управление данными – Если у вас есть источники данных, которые не сопоставляются друг с другом четко, но есть текстовое содержимое, описывающее запись данных, вы можете использовать внедрения для выявления потенциальных дубликатов записей. Например, вы можете использовать внедрения для идентификации повторяющихся кандидатов, которые могут использовать другое форматирование, сокращения или даже иметь переведенные имена.
  • Рационализация портфеля приложений – При попытке согласовать портфели приложений материнской компании и приобретаемой компании не всегда очевидно, с чего начать поиск потенциального совпадения. Качество данных управления конфигурацией может быть ограничивающим фактором, и может быть сложно координировать работу команд для понимания ландшафта приложений. Используя семантическое сопоставление с встраиваниями, мы можем провести быстрый анализ портфелей приложений, чтобы определить приложения-кандидаты с высоким потенциалом для рационализации.
  • Группировка контента – Вы можете использовать встраивания, чтобы упростить группировку похожего контента по категориям, о которых вы, возможно, не знаете заранее. Например, предположим, что у вас есть коллекция электронных писем от клиентов или онлайн-обзоры продуктов. Вы можете создать внедрения для каждого элемента, а затем запустить эти внедрения через кластеризацию k-средних, чтобы определить логические группы проблем клиентов, похвал или жалоб на продукт или других тем. Затем вы можете создавать целенаправленные сводки на основе контента этих групп с помощью LLM.

Пример семантического поиска

В нашем пример на GitHubмы демонстрируем простое приложение для поиска вложений с помощью Amazon Titan Text Embeddings, LangChain и Streamlit.

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

Для простоты мы используем in-memory ФАИСС база данных для хранения и поиска векторов вложений. В реальном масштабном сценарии вам, скорее всего, захочется использовать постоянное хранилище данных, такое как векторный движок для Amazon OpenSearch Serverless или pgvector расширение для PostgreSQL.

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

  • Как я могу контролировать свое использование?
  • Как я могу настроить модели?
  • Какие языки программирования я могу использовать?
  • Прокомментируйте, что вы знаете, sont-elles sécurisées ?
  • 私のデータはどのように保護されていますか?
  • Какие модели моделей доступны для меня в Bedrock?
  • В каком регионе есть Amazon Bedrock verfügbar?
  • 有哪些级别的支持?

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

Заключение

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

Следующие шаги

Дополнительные примеры встраивания в виде блокнотов или демонстрационных приложений вы можете найти в следующих мастер-классах:


Об авторах

Джейсон Стел — старший архитектор решений в AWS, расположенном в Новой Англии. Он работает с клиентами, чтобы согласовать возможности AWS с их самыми серьезными бизнес-задачами. В свободное от работы время он занимается сборкой вещей и просмотром фильмов по комиксам со своей семьей.

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

Радж Патхак является главным архитектором решений и техническим консультантом крупных компаний из списка Fortune 50 и средних финансовых учреждений (FSI) в Канаде и США. Он специализируется на приложениях машинного обучения, таких как генеративный искусственный интеллект, обработка естественного языка, интеллектуальная обработка документов и MLOps.

Мани Хануджа — технический руководитель отдела генеративного искусственного интеллекта, автор книги «Прикладное машинное обучение и высокопроизводительные вычисления на AWS», а также член совета директоров Фонда образования женщин в производстве. Она возглавляет проекты машинного обучения (ML) в различных областях, таких как компьютерное зрение, обработка естественного языка и генеративный искусственный интеллект. Она помогает клиентам создавать, обучать и развертывать большие модели машинного обучения в любом масштабе. Она выступает на внутренних и внешних конференциях, таких как re:Invent, Women in Manufacturing West, вебинарах YouTube и GHC 23. В свободное время она любит совершать длительные пробежки по пляжу.

Марк Рой — главный архитектор машинного обучения в AWS, помогающий клиентам проектировать и создавать решения AI/ML. Работа Марка охватывает широкий спектр вариантов использования машинного обучения, при этом основной интерес он уделяет компьютерному зрению, глубокому обучению и масштабированию машинного обучения в масштабах всего предприятия. Он помогал компаниям во многих отраслях, включая страхование, финансовые услуги, средства массовой информации и развлечения, здравоохранение, коммунальные услуги и производство. Марк имеет шесть сертификатов AWS, включая сертификат по специальности ML. До прихода в AWS Марк более 25 лет был архитектором, разработчиком и технологическим лидером, в том числе 19 лет в сфере финансовых услуг.

Related Articles

Recent articles