Integra incrustadores de texto.

Los incrustadores de texto permiten incrustar texto en un vector de características de alta dimensión que representa su significado semántico, que luego se puede comparar con el vector de características de otros textos para evaluar su similitud semántica.

A diferencia de la búsqueda de texto , el incrustador de texto permite calcular la similitud entre textos sobre la marcha en lugar de buscar a través de un índice predefinido creado a partir de un corpus.

Utilice la API TextEmbedder de la biblioteca de tareas para implementar su incrustador de texto personalizado en sus aplicaciones móviles.

Características clave de la API TextEmbedder

  • Procesamiento de texto de entrada, incluidas tokenizaciones de Wordpiece o Sentencepiece dentro o fuera del gráfico en el texto de entrada.

  • Función de utilidad incorporada para calcular la similitud del coseno entre vectores de características.

Modelos de incrustación de texto compatibles

Se garantiza que los siguientes modelos serán compatibles con la API TextEmbedder .

Ejecutar inferencia en 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());

Consulte el código fuente para obtener más opciones para configurar TextEmbedder .

Ejecutar inferencia en Python

Paso 1: Instale el paquete Pypi de soporte de TensorFlow Lite.

Puede instalar el paquete Pypi de soporte de TensorFlow Lite usando el siguiente comando:

pip install tflite-support

Paso 2: usar el modelo

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)

Consulte el código fuente para obtener más opciones para configurar TextEmbedder .

Resultados de ejemplo

La similitud de coseno entre vectores de características normalizados devuelve una puntuación entre -1 y 1. Cuanto más alto, mejor, es decir, una similitud de coseno de 1 significa que los dos vectores son idénticos.

Cosine similarity: 0.954312

Pruebe la sencilla herramienta de demostración CLI para TextEmbedder con su propio modelo y datos de prueba.

Requisitos de compatibilidad del modelo

La API TextEmbedder espera un modelo TFLite con metadatos del modelo TFLite obligatorios.

Se admiten tres tipos principales de modelos:

  • Modelos basados ​​en BERT (consulte el código fuente para más detalles):

    • Exactamente 3 tensores de entrada (kTfLiteString)

      • Tensor de ID, con nombre de metadatos "ids",
      • Tensor de máscara, con nombre de metadatos "máscara".
      • Tensor de ID de segmento, con nombre de metadatos "segment_ids"
    • Exactamente un tensor de salida (kTfLiteUInt8/kTfLiteFloat32)

      • con N componentes correspondientes a las N dimensiones del vector de características devuelto para esta capa de salida.
      • 2 o 4 dimensiones, es decir [1 x N] o [1 x 1 x 1 x N] .
    • Un input_process_units para Wordpiece/Sentencepiece Tokenizer

  • Modelos basados ​​en Universal Sentence Encoder (consulte el código fuente para obtener más detalles):

    • Exactamente 3 tensores de entrada (kTfLiteString)

      • Tensor de texto de consulta, con nombre de metadatos "inp_text".
      • Tensor de contexto de respuesta, con nombre de metadatos "res_context".
      • Tensor de texto de respuesta, con nombre de metadatos "res_text".
    • Exactamente 2 tensores de salida (kTfLiteUInt8/kTfLiteFloat32)

      • Tensor de codificación de consulta, con nombre de metadatos "query_encoding".
      • Tensor de codificación de respuesta, con nombre de metadatos "response_encoding".
      • Ambos con N componentes correspondientes a las N dimensiones del vector de características devuelto para esta capa de salida.
      • Ambos con 2 o 4 dimensiones, es decir, [1 x N] o [1 x 1 x 1 x N] .
  • Cualquier modelo de incrustación de texto con:

    • Un tensor de texto de entrada (kTfLiteString)
    • Al menos un tensor de incrustación de salida (kTfLiteUInt8/kTfLiteFloat32)

      • con N componentes correspondientes a las N dimensiones del vector de características devuelto para esta capa de salida.
      • 2 o 4 dimensiones, es decir [1 x N] o [1 x 1 x 1 x N] .