Guide sur l'intégration de texte pour le Web

La tâche d'intégration de texte MediaPipe vous permet de créer une représentation numérique des données textuelles afin de capturer leur signification sémantique. Ces instructions vous expliquent comment utiliser l'outil d'intégration de texte pour les applications Web et JavaScript.

Pour en savoir plus sur les fonctionnalités, les modèles et les options de configuration de cette tâche, consultez la présentation.

Exemple de code

L'exemple de code pour Text Embedder fournit une implémentation complète de cette tâche en JavaScript à titre de référence. Ce code vous aide à tester cette tâche et à créer votre propre application de représentation vectorielle continue de texte. Vous pouvez afficher, exécuter et modifier l'exemple de code de l'outil d'intégration de texte à l'aide de votre navigateur Web.

Préparation

Cette section décrit les étapes clés de la configuration de votre environnement de développement et de vos projets de code spécifiquement pour l'utilisation de l'outil d'intégration de texte. Pour obtenir des informations générales sur la configuration de votre environnement de développement pour l'utilisation des tâches MediaPipe, y compris sur les exigences de version de la plate-forme, consultez le guide de configuration pour le Web.

Packages JavaScript

Le code de l'outil d'intégration de texte est disponible via le package @mediapipe/tasks-text. Vous pouvez trouver et télécharger ces bibliothèques à partir des liens fournis dans le guide de configuration de la plate-forme.

Vous pouvez installer les packages requis avec le code suivant pour la préproduction locale à l'aide de la commande suivante:

npm install @mediapipe/tasks-text

Si vous souhaitez effectuer un déploiement sur un serveur, vous pouvez utiliser un service de réseau de diffusion de contenu (CDN, Content Delivery Network) tel que jsDelivr pour ajouter du code directement à votre page HTML, comme suit:

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

Modèle

La tâche d'intégration de texte MediaPipe nécessite un modèle entraîné compatible avec cette tâche. Pour en savoir plus sur les modèles entraînés disponibles pour l'outil d'intégration de texte, consultez la section Modèles de la présentation des tâches.

Sélectionnez et téléchargez un modèle, puis stockez-le dans le répertoire de votre projet:

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

Créer la tâche

Utilisez l'une des fonctions createFrom...() de l'outil d'intégration de texte pour préparer la tâche à l'exécution des inférences. Vous pouvez utiliser la fonction createFromModelPath() avec un chemin d'accès relatif ou absolu au fichier du modèle entraîné. L'exemple de code ci-dessous illustre l'utilisation de la fonction createFromOptions(). Pour en savoir plus sur les options de configuration disponibles, consultez la section Options de configuration.

Le code suivant montre comment compiler et configurer cette tâche:

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

Options de configuration

Cette tâche dispose des options de configuration suivantes pour les applications Web et JavaScript:

Nom de l'option Description Plage de valeurs Valeur par défaut
l2Normalize Indique s'il faut normaliser le vecteur de caractéristiques renvoyé avec la norme L2. N'utilisez cette option que si le modèle ne contient pas encore d'opération TFLite L2_NORMALIZATION native. Dans la plupart des cas, c'est déjà le cas et la normalisation L2 est donc obtenue via l'inférence TFLite sans utiliser cette option. Boolean False
quantize Indique si la représentation vectorielle continue renvoyée doit être quantifiée en octets via une quantification scalaire. Les représentations vectorielles continues sont implicitement considérées comme de norme unitaire. Par conséquent, la valeur de toute dimension est forcément comprise dans [-1.0, 1.0]. Si ce n'est pas le cas, utilisez l'option l2Normalize. Boolean False

Préparation des données

L'outil d'intégration de texte fonctionne avec les données de texte (string). La tâche gère le prétraitement de l'entrée des données, y compris la tokenisation et le prétraitement du Tensor. L'ensemble du prétraitement est géré dans la fonction embed. Aucun prétraitement supplémentaire du texte d'entrée n'est nécessaire au préalable.

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

Exécuter la tâche

L'outil d'intégration de texte utilise la fonction embed pour déclencher des inférences. Pour la représentation vectorielle continue de texte, cela signifie renvoyer les vecteurs de représentation vectorielle continue du texte d'entrée.

Le code suivant montre comment exécuter le traitement avec le modèle de tâche.

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

Gérer et afficher les résultats

L'outil d'intégration de texte génère un TextEmbedderResult qui contient une liste de représentations vectorielles continues (à virgule flottante ou à quantification scalaire) pour le texte d'entrée.

Voici un exemple des données de sortie de cette tâche:

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

Vous pouvez comparer la similarité sémantique de deux représentations vectorielles continues à l'aide de la fonction TextEmbedder.cosineSimilarity. Consultez le code suivant pour obtenir un exemple.

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

L'exemple de code de l'outil d'intégration de texte montre comment afficher les résultats de l'outil d'intégration de texte renvoyés par la tâche. Pour en savoir plus, consultez cet exemple de code.