Интегрируйте текстовые эмбеддеры.

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

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

В отличие от текстового поиска , модуль встраивания текста позволяет вычислять сходство между текстами на лету вместо поиска по заранее определенному индексу, построенному на основе корпуса.

Используйте API-интерфейс библиотеки задач TextEmbedder для развертывания собственного модуля встраивания текста в мобильные приложения.

Основные возможности API TextEmbedder

  • Обработка входного текста, включая токенизацию Wordpiece или Sentencepiece в графе или вне графа во входном тексте.

  • Встроенная служебная функция для вычисления косинусного сходства между векторами признаков.

Поддерживаемые модели встраивания текста

Следующие модели гарантированно совместимы с TextEmbedder API.

Запустить вывод на C++

// Initialization.
TextEmbedderOptions options:
options.mutable_base_options()->mutable_model_file()->set_file_name(model_path);
std::unique_ptr<TextEmbedder> text_embedder = TextEmbedder::CreateFromOptions(options).value();

// Run inference with your two inputs, `input_text1` and `input_text2`.
const EmbeddingResult result_1 = text_embedder->Embed(input_text1);
const EmbeddingResult result_2 = text_embedder->Embed(input_text2);

// Compute cosine similarity.
double similarity = TextEmbedder::CosineSimilarity(
    result_1.embeddings[0].feature_vector()
    result_2.embeddings[0].feature_vector());

Дополнительные параметры для настройки TextEmbedder см. в исходном коде .

Запустить вывод в Python

Шаг 1: Установите пакет поддержки TensorFlow Lite Pypi.

Вы можете установить пакет Pypi для поддержки TensorFlow Lite, используя следующую команду:

pip install tflite-support

Шаг 2: Использование модели

from tflite_support.task import text

# Initialization.
text_embedder = text.TextEmbedder.create_from_file(model_path)

# Run inference on two texts.
result_1 = text_embedder.embed(text_1)
result_2 = text_embedder.embed(text_2)

# Compute cosine similarity.
feature_vector_1 = result_1.embeddings[0].feature_vector
feature_vector_2 = result_2.embeddings[0].feature_vector
similarity = text_embedder.cosine_similarity(
    result_1.embeddings[0].feature_vector, result_2.embeddings[0].feature_vector)

Дополнительные параметры для настройки TextEmbedder см. в исходном коде .

Пример результатов

Косинусное сходство между нормализованными векторами признаков возвращает оценку от -1 до 1. Чем выше, тем лучше, т. е. косинусное сходство, равное 1, означает, что два вектора идентичны.

Cosine similarity: 0.954312

Попробуйте простой демонстрационный инструмент CLI для TextEmbedder с собственной моделью и тестовыми данными.

Требования к совместимости моделей

API TextEmbedder ожидает модель TFLite с обязательными метаданными модели TFLite .

Поддерживаются три основных типа моделей:

  • Модели на основе BERT (более подробную информацию см. в исходном коде ):

    • Ровно 3 входных тензора (kTfLiteString)

      • Тензор идентификаторов с именем метаданных «ids»,
      • Тензор маски с именем в метаданных «маска».
      • Тензор идентификаторов сегментов с именем метаданных «segment_ids»
    • Ровно один выходной тензор (kTfLiteUInt8/kTfLiteFloat32)

      • с компонентами N , соответствующими размерам N возвращенного вектора признаков для этого выходного слоя.
      • Либо 2, либо 4 измерения, т.е. [1 x N] или [1 x 1 x 1 x N] .
    • input_process_units для токенизатора Wordpiece/Sentencepiece

  • Модели на основе Universal Sentence Encoder (более подробную информацию см. в исходном коде ):

    • Ровно 3 входных тензора (kTfLiteString)

      • Текстовый тензор запроса с именем метаданных "inp_text".
      • Тензор контекста ответа с именем метаданных «res_context».
      • Тензор текста ответа с именем метаданных «res_text».
    • Ровно 2 выходных тензора (kTfLiteUInt8/kTfLiteFloat32)

      • Тензор кодирования запроса с именем метаданных «query_encoding».
      • Тензор кодирования ответа с именем метаданных «response_encoding».
      • Оба с N компонентами, соответствующими N измерениям возвращенного вектора признаков для этого выходного слоя.
      • Оба с 2 или 4 измерениями, то есть [1 x N] или [1 x 1 x 1 x N] .
  • Любая модель встраивания текста с:

    • Тензор входного текста (kTfLiteString)
    • По крайней мере, один выходной тензор встраивания (kTfLiteUInt8/kTfLiteFloat32)

      • с компонентами N , соответствующими размерам N возвращенного вектора признаков для этого выходного слоя.
      • Либо 2, либо 4 измерения, т.е. [1 x N] или [1 x 1 x 1 x N] .