Guida all'incorporamento del testo per il web

L'attività Incorporamento di testo MediaPipe consente di creare una rappresentazione numerica dei dati di testo per acquisirne il significato semantico. Queste istruzioni mostrano come usare l'incorporamento di testo per app web e JavaScript.

Per ulteriori informazioni sulle funzionalità, sui modelli e sulle opzioni di configurazione di questa attività, consulta la Panoramica.

Esempio di codice

Il codice di esempio per l'incorporamento di testo fornisce un'implementazione completa di questa attività in JavaScript come riferimento. Questo codice ti consente di testare questa attività e di iniziare a creare la tua app di incorporamento del testo. Puoi visualizzare, eseguire e modificare il codice di esempio di Text Embedder utilizzando solo il tuo browser web.

Configurazione

In questa sezione vengono descritti i passaggi chiave per configurare l'ambiente di sviluppo e i progetti di codice in modo specifico per l'utilizzo di Text Embedder. Per informazioni generali sulla configurazione dell'ambiente di sviluppo per l'utilizzo delle attività di MediaPipe, inclusi i requisiti di versione della piattaforma, consulta la Guida alla configurazione per il web.

Pacchetti JavaScript

Il codice di incorporamento di testo è disponibile tramite il pacchetto @mediapipe/tasks-text. Puoi trovare e scaricare queste librerie dai link forniti nella Guida alla configurazione della piattaforma.

Puoi installare i pacchetti richiesti con il codice seguente per la gestione temporanea locale utilizzando il comando seguente:

npm install @mediapipe/tasks-text

Se vuoi eseguire il deployment su un server, puoi utilizzare un servizio di rete CDN (Content Delivery Network) come jsDelivr per aggiungere il codice direttamente alla pagina HTML, come indicato di seguito:

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

Modello

L'attività Incorporamento di testo MediaPipe richiede un modello addestrato compatibile con questa attività. Per ulteriori informazioni sui modelli addestrati disponibili per l'incorporamento di testo, consulta la sezione Modelli della panoramica dell'attività.

Seleziona e scarica un modello, quindi archivialo all'interno della directory del progetto:

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

Creare l'attività

Utilizza una delle funzioni createFrom...() di incorporamento di testo per preparare l'attività per l'esecuzione di inferenze. Puoi utilizzare la funzione createFromModelPath() con un percorso relativo o assoluto al file del modello addestrato. L'esempio di codice riportato di seguito mostra l'uso della funzione createFromOptions(). Per ulteriori informazioni sulle opzioni di configurazione disponibili, consulta Opzioni di configurazione.

Il codice seguente mostra come creare e configurare questa attività:

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

Opzioni di configurazione

Questa attività prevede le seguenti opzioni di configurazione per le applicazioni web e JavaScript:

Nome opzione Descrizione Intervallo di valori Valore predefinito
l2Normalize Indica se normalizzare il vettore di caratteristiche restituito con la norma L2. Utilizza questa opzione solo se il modello non contiene già un'operatività TFLite L2_NORMALIZATION nativa. Nella maggior parte dei casi, è già così e la normalizzazione L2 viene quindi ottenuta tramite l'inferenza TFLite senza necessità di questa opzione. Boolean False
quantize Indica se l'incorporamento restituito deve essere quantizzato in byte tramite la quantizzazione scalare. Gli incorporamenti si presume implicitamente come unità-norm, pertanto è garantito che ogni dimensione abbia un valore in [-1.0, 1.0]. In caso contrario, utilizza l'opzione l2Normalize. Boolean False

Preparazione dei dati

L'incorporamento di testo funziona con i dati di testo (string). L'attività gestisce la pre-elaborazione dell'input di dati, inclusa la tokenizzazione e la pre-elaborazione del tensore. L'intera pre-elaborazione viene gestita all'interno della funzione embed. Non è necessaria un'ulteriore pre-elaborazione del testo di input.

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

Esegui l'attività

L'incorporamento di testo utilizza la funzione embed per attivare le inferenze. Per l'incorporamento del testo, ciò significa restituire i vettori di incorporamento per il testo di input.

Il seguente codice mostra come eseguire l'elaborazione con il modello di attività.

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

Gestire e visualizzare i risultati

L'incorporamento di testo restituisce un valore TextEmbedderResult che contiene un elenco di incorporamenti (in virgola mobile o quantizzati scalare) per il testo di input.

Di seguito è riportato un esempio dei dati di output di questa attività:

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

Puoi confrontare la somiglianza semantica di due incorporamenti utilizzando la funzione TextEmbedder.cosineSimilarity. Per un esempio, vedi il codice che segue.

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

Il codice di esempio di incorporamento di testo mostra come visualizzare i risultati dell'incorporamento restituiti dall'attività. Per i dettagli, consulta l'esempio di codice.