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 Text Embedder para 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 a comenzar a compilar tu propia app de embeddings de texto. Puedes ver, ejecutar y editar el ejemplo de Text Embedder con solo tu 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. Si deseas obtener información general para configurar tu entorno de desarrollo para usar las tareas de MediaPipe, incluidos los requisitos de versión de la plataforma, consulta la guía de configuración para la Web.

Paquetes de JavaScript

El código de Text Embedder 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 requeridos con el siguiente código para la organización local con el siguiente comando:

npm install @mediapipe/tasks-text

Si deseas realizar la implementación en un servidor, puedes usar un servicio de red de distribución de contenido (CDN), como jsDelivr, para agregar 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 ella. Para obtener más información sobre los modelos entrenados disponibles para Text Embedder, consulta la sección Modelos del resumen de la tarea.

Selecciona y descarga un modelo, y, luego, almacénalo 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 preparar la tarea para ejecutar inferencias. Puedes usar la función createFromModelPath() con una ruta de acceso relativa o absoluta al archivo del modelo entrenado. En el siguiente ejemplo de código, se muestra 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 de JavaScript:

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

Preparar los datos

El incorporador de texto funciona con datos de texto (string). La tarea controla el procesamiento previo de la entrada de datos, incluido el procesamiento previo de tensores y la tokenización. Todo el preprocesamiento se controla dentro de la función embed. No es necesario realizar un procesamiento previo adicional del texto de entrada.

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

Ejecuta la tarea

El Text Embedder usa la función embed para activar las inferencias. En el caso del embedding de texto, esto significa devolver los vectores de embedding 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

El Text Embedder genera un TextEmbedderResult que contiene una lista de incorporaciones (cuantificadas con números de punto flotante o escalares) para el texto de entrada.

A continuación, se muestra un ejemplo de los datos de resultado 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 embeddings 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]);

El código de ejemplo de Text Embedder muestra cómo visualizar los resultados del modelo de lenguaje integrado que devuelve la tarea. Consulta el ejemplo para obtener más detalles.