Руководство по встраиванию текста для Интернета

Задача 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 демонстрирует, как отобразить результаты встраивания текста, полученные в результате выполнения задачи; подробности см. в примере .