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.

Funciones clave de la API de TextEmbedder

  • Procesamiento de texto de entrada, incluidas las 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 de coseno entre vectores de características.

Modelos de incrustación de texto admitidos

Se garantiza que los siguientes modelos son compatibles con la API de 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 TensorFlow Lite Support Pypi.

Puede instalar el paquete TensorFlow Lite Support Pypi con el siguiente comando:

pip install tflite-support

Paso 2: Usando 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 arroja 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 de modelos

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

Se admiten tres tipos principales de modelos:

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

    • Exactamente 3 tensores de entrada (kTfLiteString)

      • Tensor de ID, con el nombre de metadatos "ids",
      • Tensor de máscara, con el nombre de metadatos "máscara".
      • Tensor de ID de segmento, con el 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 el nombre de metadatos "inp_text".
      • Tensor de contexto de respuesta, con el nombre de metadatos "res_context".
      • Tensor de texto de respuesta, con el nombre de metadatos "res_text".
    • Exactamente 2 tensores de salida (kTfLiteUInt8/kTfLiteFloat32)

      • Tensor de codificación de consultas, con el nombre de metadatos "query_encoding".
      • Tensor de codificación de respuesta, con el 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 incrustador 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] .