Guía para la incorporación de texto en la Web

La tarea MediaPipe Text Embedder te permite crear una representación numérica de los datos de texto para captan su significado semántico. Estas instrucciones te muestran cómo usar la Incorporador de texto para apps web y de JavaScript.

Para obtener más información sobre las capacidades, los modelos y las opciones de configuración para completar esta tarea, consulta la Descripción general.

Ejemplo de código

El ejemplo de código para el Incorporador de texto proporciona una implementación completa de este en JavaScript para tu referencia. Este código te ayuda a probar la tarea y comienza a compilar tu propia app de incorporación de texto. Puedes ver, ejecutar y edita el Código de ejemplo de la incorporación de texto usando solo el navegador web.

Configuración

En esta sección, se describen los pasos clave para configurar tu entorno de desarrollo y proyectos de código específicamente para usar Text Embedder. Para obtener información general configurar tu entorno de desarrollo para usar tareas de MediaPipe, como de la versión de la plataforma, consulta la Guía de configuración para la Web.

Paquetes de JavaScript

El código de la incorporación de texto está disponible a través de la @mediapipe/tasks-text . Puedes encontrar y descargar estas bibliotecas en los vínculos que se proporcionan en la plataforma Guía de configuración.

Puedes instalar los paquetes obligatorios con el siguiente código para la etapa de pruebas local con el siguiente comando:

npm install @mediapipe/tasks-text

Si quieres realizar la implementación en un servidor, puedes usar un modelo de red de VPC (CDN), como jsDelivr, al agrega el código directamente a tu página HTML de la siguiente manera:

<head>
  <script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
    crossorigin="anonymous"></script>
</head>

Modelo

La tarea MediaPipe Text Embedder requiere un modelo entrenado que sea compatible con tarea. Para obtener más información sobre los modelos entrenados disponibles para Text Embedder, consulta la sección Modelos de la descripción general de la tarea.

Selecciona y descarga un modelo y, luego, guárdalo en el directorio de tu proyecto:

<dev-project-root>/app/shared/models

Crea la tarea

Usa una de las funciones createFrom...() de Text Embedder para hacer lo siguiente: preparan la tarea para ejecutar inferencias. Puedes usar el createFromModelPath() con una ruta de acceso absoluta o relativa al archivo de modelo entrenado. El código en el siguiente ejemplo se demuestra el uso de createFromOptions() . Para obtener más información sobre las opciones de configuración disponibles, consulta Opciones de configuración.

En el siguiente código, se muestra cómo compilar y configurar esta tarea:

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

Opciones de configuración

Esta tarea tiene las siguientes opciones de configuración para la Web y JavaScript aplicaciones:

Nombre de la opción Descripción Rango de valores Valor predeterminado
l2Normalize Indica si se debe normalizar el vector de atributos mostrado con la norma L2. Usa esta opción solo si el modelo no contiene un código nativo L2_NORMALIZATION TFLite Op. En la mayoría de los casos, esto ya es así y Así, la normalización de L2 se logra mediante la inferencia de TFLite sin necesidad para esta opción. Boolean False
quantize Si la incorporación devuelta se debe cuantificar a bytes mediante la cuantización escalar. Se supone implícitamente que las incorporaciones son norma de unidad y por lo que se garantiza que cualquier dimensión tendrá un valor en [-1.0, 1.0]. Usa la opción l2Normalizar si no es así. Boolean False

Preparar los datos

El Incorporador de texto funciona con datos de texto (string). La tarea controla Procesamiento previo de la entrada de datos, incluida la asignación de token y el procesamiento previo del tensor Todo el procesamiento previo se controla dentro de la función embed. No es necesario para un procesamiento previo adicional del texto de entrada.

const inputText = "The input text to be embedded.";

Ejecuta la tarea

La incorporación de texto usa la función embed para activar inferencias. Para texto significa mostrar los vectores de incorporación para el texto de entrada.

En el siguiente código, se muestra cómo ejecutar el procesamiento con el modelo de tareas.

// Wait to run the function until inner text is set
const embeddingResult = textEmbedder.embed(
  inputText
);

Cómo controlar y mostrar resultados

El Incorporador de texto genera un TextEmbedderResult que contiene una lista de de entrada (ya sea de punto flotante o escalar cuantizadas) para el texto de entrada.

A continuación, se muestra un ejemplo de los datos de salida de esta tarea:

TextEmbedderResult:
  Embedding #0 (sole embedding head):
    float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
    head_index: 0

Puedes comparar la similitud semántica de dos incorporaciones con el función TextEmbedder.cosineSimilarity. Consulta el siguiente código para ver un ejemplo.

// Compute cosine similarity.
const similarity = TextEmbedder.cosineSimilarity(
  embeddingResult.embeddings[0],
  otherEmbeddingResult.embeddings[0]);

El código de ejemplo de la incorporación de texto muestra cómo mostrar la incorporación. resultados que devolvió la tarea, consulta la ejemplo de código para conocer los detalles.