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 capturar su significado semántico. En estas instrucciones, se muestra cómo usar la incorporación de texto en apps web y de JavaScript.

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

Ejemplo de código

El código de ejemplo de Text Embedder proporciona una implementación completa de esta tarea en JavaScript para tu referencia. Este código te ayuda a probar esta tarea y comenzar a compilar tu propia app de incorporación de texto. Puedes ver, ejecutar y editar el código de ejemplo de la incorporación de texto solo con tu navegador web.

Configuración

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

Paquetes de JavaScript

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

Puedes instalar los paquetes necesarios 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 servicio de red de distribución de contenidos (CDN), como jsDelivr, para agregar código directamente a tu página HTML, como sigue:

<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 esta tarea. Si deseas obtener más información sobre los modelos entrenados disponibles para Text Embedder, consulta la descripción general de la tarea en la sección Modelos.

Selecciona y descarga un modelo, y almacénalo en el directorio del proyecto:

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

Crea la tarea

Usa una de las funciones createFrom...() de Text Embedder para preparar la tarea para ejecutar inferencias. Puedes usar la función createFromModelPath() con una ruta relativa o absoluta al archivo del modelo entrenado. En el siguiente ejemplo de código, se demuestra el uso de la función 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 aplicaciones web y JavaScript:

Nombre de la opción Descripción Rango de valores Valor predeterminado
l2Normalize Indica si se debe normalizar el vector de atributos mostrados con la norma L2. Usa esta opción solo si el modelo todavía no contiene una operación nativa de TFLite L2_NORMALIZATION. En la mayoría de los casos, este ya es el caso y, por lo tanto, la normalización L2 se logra a través de inferencia de TFLite sin necesidad de esta opción. Boolean False
quantize Indica si la incorporación que se muestra debe cuantizarse en bytes a través de la cuantización escalar. Se supone implícitamente que las incorporaciones son la norma unitaria y, por lo tanto, se garantiza que cualquier dimensión tenga un valor en [-1.0, 1.0]. Si este no es el caso, usa la opción l2Normalize. Boolean False

Preparar los datos

Text Embedder funciona con datos de texto (string). La tarea maneja el 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 realizar un procesamiento previo adicional del texto de entrada con anticipación.

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

Ejecuta la tarea

Text Embedder usa la función embed para activar inferencias. Para la incorporación de texto, esto 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 los resultados

La incorporación de texto genera una TextEmbedderResult que contiene una lista de incorporaciones (de punto flotante o escalar cuantizada) 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 la 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]);

En el código de ejemplo de la incorporación de texto, se demuestra cómo mostrar los resultados de la incorporación que muestra la tarea. Consulta el ejemplo de código para obtener más información.