Задача MediaPipe Text Embedder позволяет создавать числовое представление текстовых данных для отражения их семантического значения. В этих инструкциях показано, как использовать Text Embedder для веб-приложений и приложений JavaScript.
Дополнительные сведения о возможностях, моделях и параметрах конфигурации этой задачи см. в разделе Обзор .
Пример кода
В примере кода Text Embedder представлена полная реализация этой задачи на языке JavaScript. Этот код поможет вам протестировать эту задачу и приступить к созданию собственного приложения для встраивания текста. Вы можете просматривать, запускать и редактировать пример кода Text Embedder, используя только веб-браузер.
Настраивать
В этом разделе описаны ключевые шаги по настройке среды разработки и проектов кода специально для использования Text Embedder. Общие сведения о настройке среды разработки для использования задач MediaPipe, включая требования к версии платформы, см. в руководстве по настройке для Web .
JavaScript-пакеты
Код Text Embedder доступен через пакет @mediapipe/tasks-text
. Вы можете найти и загрузить эти библиотеки по ссылкам, приведенным в руководстве по установке платформы.
Вы можете установить необходимые пакеты с помощью следующего кода для локальной установки, используя следующую команду:
npm install @mediapipe/tasks-text
Если вы хотите выполнить развертывание на сервере, вы можете использовать службу сети доставки контента (CDN), например jsDelivr , для добавления кода непосредственно на вашу HTML-страницу следующим образом:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
crossorigin="anonymous"></script>
</head>
Модель
Для задачи MediaPipe Text Embedder требуется обученная модель, совместимая с этой задачей. Дополнительную информацию о доступных обученных моделях для Text Embedder см. в разделе «Модели » обзора задач.
Выберите и загрузите модель, а затем сохраните ее в каталоге проекта:
<dev-project-root>/app/shared/models
Создать задачу
Используйте одну из функций Text Embedder createFrom...()
чтобы подготовить задачу к выполнению логических выводов. Вы можете использовать функцию createFromModelPath()
с относительным или абсолютным путем к файлу обученной модели. В приведенном ниже примере кода показано использование функции createFromOptions()
. Дополнительные сведения о доступных параметрах конфигурации см. в разделе Параметры конфигурации .
Следующий код демонстрирует, как построить и настроить эту задачу:
async function createEmbedder() {
const textFiles = await FilesetResolver.forTextTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/wasm/");
textEmbedder = await TextEmbedder.createFromOptions(
textFiles,
{
baseOptions: {
modelAssetPath: `https://storage.googleapis.com/mediapipe-tasks/text_embedder/universal_sentence_encoder.tflite`
},
quantize: true
}
);
}
createEmbedder();
Варианты конфигурации
Эта задача имеет следующие параметры конфигурации для веб-приложений и приложений JavaScript:
Название опции | Описание | Диапазон значений | Значение по умолчанию |
---|---|---|---|
l2Normalize | Нормализовать ли возвращенный вектор признаков по норме L2. Используйте эту опцию, только если модель еще не содержит встроенный L2_NORMALIZATION TFLite Op. В большинстве случаев это уже так, и нормализация L2, таким образом, достигается посредством вывода TFLite без необходимости использования этой опции. | Boolean | False |
quantize | Следует ли квантовать возвращенное внедрение в байты посредством скалярного квантования. Неявно предполагается, что вложения имеют единичную норму, и поэтому любое измерение гарантированно имеет значение в [-1.0, 1.0]. Если это не так, используйте опцию l2Normalize. | Boolean | False |
Подготовьте данные
Text Embedder работает с текстовыми ( string
) данными. Задача выполняет предварительную обработку входных данных, включая токенизацию и предварительную обработку тензоров. Вся предварительная обработка выполняется внутри функции embed
. Предварительная дополнительная обработка входного текста не требуется.
const inputText = "The input text to be embedded.";
Запустить задачу
Text Embedder использует функцию embed
для запуска логических выводов. Для внедрения текста это означает возврат векторов внедрения для входного текста.
Следующий код демонстрирует, как выполнить обработку с помощью модели задачи.
// Wait to run the function until inner text is set
const embeddingResult = textEmbedder.embed(
inputText
);
Обработка и отображение результатов
Text Embedder выводит TextEmbedderResult
, который содержит список внедрений (с плавающей запятой или скалярно-квантованной) для входного текста.
Ниже показан пример выходных данных этой задачи:
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
Вы можете сравнить семантическое сходство двух вложений, используя функцию TextEmbedder.cosineSimilarity
. См. следующий код для примера.
// Compute cosine similarity.
const similarity = TextEmbedder.cosineSimilarity(
embeddingResult.embeddings[0],
otherEmbeddingResult.embeddings[0]);
Пример кода для внедрения текста демонстрирует, как отображать результаты внедрения, возвращенные из задачи. Подробности см. в примере кода .