Integra incorporaciones de texto.

Los modelos de incorporación de texto permiten incorporar texto en un vector de atributos de alta dimensión que representa su significado semántico, que luego se puede comparar con el vector de atributos de otros textos para evaluar su similitud semántica.

A diferencia de la búsqueda de texto, el generador de incorporaciones de texto permite calcular la similitud entre textos de forma instantánea en lugar de buscar en un índice predefinido creado a partir de un corpus.

Usa la API de la biblioteca de tareas TextEmbedder para implementar tu modelo de lenguaje personalizado en tus apps para dispositivos móviles.

Funciones clave de la API de TextEmbedder

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

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

Modelos de incorporación de texto admitidos

Se garantiza que los siguientes modelos son compatibles con la API de TextEmbedder.

Ejecuta la 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());

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

Ejecuta la inferencia en Python

Paso 1: Instala el paquete Pypi de compatibilidad con TensorFlow Lite.

Puedes instalar el paquete de Pypi de TensorFlow Lite Support con el siguiente comando:

pip install tflite-support

Paso 2: Cómo 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)

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

Resultados de ejemplo

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

Cosine similarity: 0.954312

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

Requisitos de compatibilidad del modelo

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

Se admiten tres tipos principales de modelos:

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

    • Exactamente 3 tensores de entrada (kTfLiteString)

    • Tensor de IDs, con el nombre de metadatos "ids".

    • Tensor de máscara, con el nombre de metadatos "mask".

    • Tensor de IDs de segmentos, con el nombre de metadatos "segment_ids"

    • Exactamente un tensor de salida (kTfLiteUInt8/kTfLiteFloat32)

    • con componentes N que corresponden a las dimensiones N 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]

    • Es un input_process_units para el tokenizador de Wordpiece/Sentencepiece.

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

    • Exactamente 3 tensores de entrada (kTfLiteString)

    • Tensor de texto de la búsqueda, 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 metadato "res_text".

    • Exactamente 2 tensores de salida (kTfLiteUInt8/kTfLiteFloat32)

    • Tensor de codificación de la búsqueda, con el nombre de metadatos "query_encoding".

    • Tensor de codificación de la respuesta, con el nombre de metadatos "response_encoding".

    • Ambos con componentes N que corresponden a las dimensiones N del vector de atributos 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 incorporación de texto con las siguientes características:

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

    • con componentes N que corresponden a las dimensiones N 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]