A tarefa MediaPipe Text Embedder permite criar uma representação numérica dos dados de texto para capturar seu significado semântico. Estas instruções mostram como usar o Embedder de texto para apps da Web e JavaScript.
Para mais informações sobre recursos, modelos e opções de configuração, desta tarefa, consulte a Visão geral.
Exemplo de código
O código de exemplo para o incorporador de texto fornece uma implementação completa em JavaScript para sua referência. Esse código ajuda a testar a tarefa e comece a criar seu próprio app de incorporação de texto. Você pode conferir, executar e edite o Exemplo de código do incorporador de texto 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 incorporador de texto. Para informações gerais a configuração do seu ambiente de desenvolvimento para usar tarefas do MediaPipe, incluindo requisitos de versão da plataforma, consulte Guia de configuração para a Web.
Pacotes JavaScript
O código do incorporador de texto está disponível por meio da
@mediapipe/tasks-text
. Essas bibliotecas podem ser encontradas e baixadas nos links fornecidos na
plataforma
Guia de configuração.
É possível instalar os pacotes necessários com o seguinte código para preparo local usando o seguinte comando:
npm install @mediapipe/tasks-text
Se você quiser implantar em um servidor, use uma API de envio de conteúdo de rede (CDN), como jsDelivr, para adicionar o código diretamente à página HTML, da seguinte forma:
<head>
<script src="https://cdn.jsdelivr.net/npm/@mediapipe/tasks-text@latest/index.js"
crossorigin="anonymous"></script>
</head>
Modelo
A tarefa MediaPipe Text Embedder requer um modelo treinado que seja compatível com esse tarefa. Para mais informações sobre modelos treinados disponíveis para o incorporador de texto, consulte na seção de visão geral da tarefa Modelos.
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 incorporador de texto para
preparar a tarefa para executar inferências. Você pode usar o createFromModelPath()
função com um caminho relativo ou absoluto para o arquivo de modelo treinado. O código
exemplo abaixo demonstra o uso do createFromOptions()
função. Para mais informações sobre as opções de configuração disponíveis, consulte
Opções de configuração.
O código abaixo 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
Esta tarefa tem as seguintes opções de configuração para Web e JavaScript aplicativos:
Nome da opção | Descrição | Intervalo de valor | Valor padrão |
---|---|---|---|
l2Normalize |
Define se o vetor de atributo retornado deve ser normalizado com a norma L2. Use essa opção somente se o modelo ainda não tiver um L2_NORMALIZATION Op. do TFLite. Na maioria dos casos, esse já é o caso e Assim, a normalização L2 é alcançada por meio da inferência do TFLite sem a necessidade para essa opção. | Boolean |
False |
quantize |
Se o embedding retornado deve ser quantizado em bytes por meio de com a quantização escalar. Os embeddings são implicitamente definidos como unidade-norma e portanto, qualquer dimensão terá um valor em [-1.0, 1.0]. Usar a opção "l2Normalize", se esse não for o caso. | Boolean |
False |
Preparar dados
O incorporador de texto funciona com dados de texto (string
). A tarefa lida com o
Pré-processamento de entrada de dados, incluindo tokenização e pré-processamento de tensor. Todos
o pré-processamento é feito na função embed
. Não é necessário
para pré-processamento adicional do texto de entrada.
const inputText = "The input text to be embedded.";
Executar a tarefa
O incorporador de texto usa a função embed
para acionar inferências. Para texto
embedding, 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
);
Gerenciar e exibir resultados
O incorporador de texto gera uma TextEmbedderResult
que contém uma lista de
embeddings (de ponto flutuante ou quantificado por escalar) para o texto de entrada.
Confira abaixo um exemplo dos dados de saída desta tarefa:
TextEmbedderResult:
Embedding #0 (sole embedding head):
float_embedding: {0.2345f, 0.1234f, ..., 0.6789f}
head_index: 0
É possível comparar a semelhança semântica de dois embeddings usando o
função TextEmbedder.cosineSimilarity
. Confira o código a seguir
exemplo.
// Compute cosine similarity.
const similarity = TextEmbedder.cosineSimilarity(
embeddingResult.embeddings[0],
otherEmbeddingResult.embeddings[0]);
O código de exemplo do incorporador de texto demonstra como exibir o incorporador resultados retornados da tarefa, consulte a exemplo de código para mais detalhes.