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

Задача 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]);

Пример кода для внедрения текста демонстрирует, как отображать результаты внедрения, возвращенные из задачи. Подробности см. в примере кода .