Guia de incorporação de texto para Web

A tarefa MediaPipe Text Embedder permite criar uma representação numérica de dados de texto para capturar o significado semântico. Estas instruções mostram como usar o Text Embedder para apps da Web e JavaScript.

Para mais informações sobre os recursos, modelos e opções de configuração dessa tarefa, consulte a Visão geral.

Exemplo de código

O exemplo de código do Text Embedder oferece uma implementação completa dessa tarefa em JavaScript para sua referência. Esse código ajuda você a testar essa tarefa e começar a criar seu próprio app de embedding de texto. Você pode ver, executar e editar o exemplo do Text Embedder usando apenas seu navegador da Web.

Configuração

Esta seção descreve as principais etapas para configurar seu ambiente de desenvolvimento e projetos de código especificamente para usar o Text Embedder. Para informações gerais sobre como configurar seu ambiente de desenvolvimento para usar as tarefas do MediaPipe, incluindo requisitos de versão da plataforma, consulte o Guia de configuração para a Web.

Pacotes JavaScript

O código do Text Embedder está disponível no pacote @mediapipe/tasks-text. Você pode encontrar e baixar essas bibliotecas nos links fornecidos no guia de configuração da plataforma.

É possível instalar os pacotes necessários com o seguinte código para teste local usando este comando:

npm install @mediapipe/tasks-text

Se você quiser implantar em um servidor, use um serviço de rede de fornecimento de conteúdo (CDN), como o jsDelivr, para adicionar código diretamente à sua página HTML, da seguinte maneira:

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

Modelo

A tarefa MediaPipe Text Embedder exige um modelo treinado compatível com essa tarefa. Para mais informações sobre os modelos treinados disponíveis para o Text Embedder, consulte a seção Modelos na visão geral da tarefa.

Selecione e faça o download de um modelo e armazene-o no diretório do projeto:

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

Criar a tarefa

Use uma das funções createFrom...() do Text Embedder para preparar a tarefa para executar inferências. É possível usar a função createFromModelPath() com um caminho relativo ou absoluto para o arquivo modelo treinado. O exemplo de código abaixo demonstra o uso da função createFromOptions(). Para mais informações sobre as opções de configuração disponíveis, consulte Opções de configuração.

O código a seguir demonstra como criar e configurar essa tarefa:

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

Opções de configuração

Essa tarefa tem as seguintes opções de configuração para aplicativos da Web e JavaScript:

Nome da opção Descrição Intervalo de valor Valor padrão
l2Normalize Se o vetor de recursos retornado será normalizado com a norma L2. Use essa opção somente se o modelo ainda não tiver uma operação nativa L2_NORMALIZATION do TFLite. Na maioria dos casos, isso já acontece e a normalização L2 é alcançada por inferência do TFLite sem necessidade dessa opção. Boolean False
quantize Indica se o embedding retornado precisa ser quantizado em bytes usando quantização escalar. Os embeddings são implicitamente considerados de norma unitária. Portanto, qualquer dimensão tem um valor em [-1,0, 1,0]. Use a opção "l2Normalize" se não for esse o caso. Boolean False

Preparar dados

O Text Embedder funciona com dados de texto (string). A tarefa processa o pré-processamento de entrada de dados, incluindo tokenização e pré-processamento de tensores. Todo o pré-processamento é feito na função embed. Não é necessário fazer um pré-processamento adicional do texto de entrada.

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

Executar a tarefa

O Text Embedder usa a função embed para acionar inferências. Para o embedding de texto, isso significa retornar os vetores de embedding para o texto de entrada.

O código a seguir demonstra como executar o processamento com o modelo de tarefa.

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

Processar e mostrar resultados

O Text Embedder gera um TextEmbedderResult que contém uma lista de embeddings (de ponto flutuante ou quantizados por escalar) para o texto de entrada.

Confira abaixo um exemplo dos dados de saída dessa tarefa:

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

É possível comparar a similaridade semântica de dois embeddings usando a função TextEmbedder.cosineSimilarity. Confira o exemplo de código a seguir.

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

O exemplo de código do Text Embedder mostra como exibir os resultados do embedder retornados da tarefa. Consulte o exemplo para mais detalhes.