Задача MediaPipe Text Embedder позволяет создавать числовое представление текстовых данных для передачи их семантического смысла. В этих инструкциях показано, как использовать Text Embedder для веб-приложений и приложений на JavaScript.
Для получения более подробной информации о возможностях, моделях и параметрах конфигурации этой задачи см. раздел «Обзор» .
Пример кода
Пример кода для Text Embedder представляет собой полную реализацию этой задачи на JavaScript для вашего ознакомления. Этот код поможет вам протестировать задачу и начать создавать собственное приложение для встраивания текста. Вы можете просматривать, запускать и редактировать пример Text Embedder, используя только веб-браузер.
Настраивать
В этом разделе описаны ключевые шаги по настройке среды разработки и проектов кода специально для использования Text Embedder. Общую информацию о настройке среды разработки для использования задач MediaPipe, включая требования к версии платформы, см. в руководстве по настройке для веб-версии .
пакеты JavaScript
Код для встраивания текста доступен через пакет @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-нормы. Используйте этот параметр только в том случае, если модель еще не содержит встроенную операцию TFLite L2_NORMALIZATION. В большинстве случаев это уже так, и 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]);
Пример кода Text Embedder демонстрирует, как отобразить результаты встраивания текста, полученные в результате выполнения задачи; подробности см. в примере .