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.