Escolha um tipo de tarefa de incorporações

Os modelos de incorporações da Vertex AI podem gerar incorporações otimizadas para vários tipos de tarefas, como obtenção de documentos, perguntas e respostas e verificação de factos. Os tipos de tarefas são etiquetas que otimizam as incorporações que o modelo gera com base no seu exemplo de utilização pretendido. Este documento descreve como escolher o tipo de tarefa ideal para as suas incorporações.

Modelos suportados

Os tipos de tarefas são suportados pelos seguintes modelos:

  • text-embedding-005
  • text-multilingual-embedding-002
  • gemini-embedding-001

Vantagens dos tipos de tarefas

Os tipos de tarefas podem melhorar a qualidade das incorporações geradas por um modelo de incorporações.

As perguntas e as respetivas respostas não são semanticamente semelhantes
Figura 1. As perguntas e as respetivas respostas não são semanticamente semelhantes, o que significa que as incorporações não mostram automaticamente a respetiva relação.

Por exemplo, ao criar sistemas de geração aumentada de obtenção (RAG), um design comum é usar incorporações de texto e a pesquisa vetorial para realizar uma pesquisa de semelhanças. Em alguns casos, isto pode levar a uma qualidade de pesquisa degradada, porque as perguntas e as respetivas respostas não são semanticamente semelhantes. Por exemplo, uma pergunta como "Porque é que o céu é azul?" e a respetiva resposta "A dispersão da luz solar causa a cor azul" têm significados distintamente diferentes como declarações, o que significa que um sistema RAG não reconhece automaticamente a respetiva relação, conforme demonstrado na figura 1. Sem tipos de tarefas, um programador de RAG teria de preparar o respetivo modelo para aprender a relação entre consultas e respostas, o que requer competências e experiência avançadas em ciência de dados, ou usar a expansão de consultas baseada em LLM ou o HyDE, que podem introduzir uma latência e custos elevados.

O tipo de tarefa aproxima as perguntas e as respostas no espaço de incorporações
Figura 2. Os tipos de tarefas otimizam as incorporações para tarefas específicas. Neste caso, as perguntas e as respostas são aproximadas no espaço de incorporações.

Os tipos de tarefas permitem-lhe gerar incorporações otimizadas para tarefas específicas, o que lhe poupa o tempo e o custo necessários para desenvolver as suas próprias incorporações específicas de tarefas. A incorporação gerada para uma consulta "Porque é que o céu é azul?" e a respetiva resposta "A dispersão da luz solar causa a cor azul" estariam no espaço de incorporação partilhado que representa a relação entre elas, conforme demonstrado na figura 2. Neste exemplo de RAG, as incorporações otimizadas resultariam em pesquisas de similaridade melhoradas.

Além do exemplo de utilização de consultas e respostas, os tipos de tarefas também oferecem um espaço de incorporações otimizado para tarefas como classificação, agrupamento e verificação de factos.

Tipos de tarefas suportados

Os modelos de incorporações que usam tipos de tarefas suportam os seguintes tipos de tarefas:

Tipo de tarefa Descrição
CLASSIFICATION Usado para gerar incorporações otimizadas para classificar textos de acordo com etiquetas predefinidas
CLUSTERING Usado para gerar incorporações otimizadas para agrupar textos com base nas respetivas semelhanças
RETRIEVAL_DOCUMENT, RETRIEVAL_QUERY, QUESTION_ANSWERING e FACT_VERIFICATION Usado para gerar incorporações otimizadas para a pesquisa de documentos ou a obtenção de informações
CODE_RETRIEVAL_QUERY Usado para obter um bloco de código com base numa consulta de linguagem natural, como ordenar uma matriz ou inverter uma lista ligada. As incorporações dos blocos de código são calculadas através do RETRIEVAL_DOCUMENT.
SEMANTIC_SIMILARITY Usado para gerar incorporações otimizadas para avaliar a semelhança de texto. Não se destina a exemplos de utilização de obtenção.

O melhor tipo de tarefa para o seu trabalho de incorporações depende do exemplo de utilização que tem para as incorporações. Antes de selecionar um tipo de tarefa, determine o seu exemplo de utilização de incorporações.

Determine o seu exemplo de utilização de incorporações

Normalmente, os exemplos de utilização de incorporações enquadram-se numa de quatro categorias: avaliar a semelhança de texto, classificar textos, agrupar textos ou obter informações de textos. Se o seu exemplo de utilização não se enquadrar numa das categorias anteriores, use o tipo de tarefa RETRIEVAL_QUERY por predefinição.

Existem 2 tipos de formatação de instruções de tarefas: formato assimétrico e formato simétrico. Tem de usar o correto com base no seu exemplo de utilização.

Exemplos de utilização de obtenção
(formato assimétrico)
Tipo de tarefa de consulta Tipo de tarefa de documento
Consulta de pesquisa RETRIEVAL_QUERY RETRIEVAL_DOCUMENT
Respostas a perguntas QUESTION_ANSWERING
Verificação de factos FACT_VERIFICATION
Obtenção de código CODE_RETRIEVAL_QUERY



Exemplos de utilização de entrada única
(formato simétrico)
Tipo de tarefa de entrada
Classificação CLASSIFICAÇÃO
Clustering AGRUPAMENTO
Semelhança semântica
(Não use para exemplos de utilização de obtenção;
destinada a STS)
SEMANTIC_SIMILARITY

Classifique textos

Se quiser usar incorporações para classificar textos de acordo com etiquetas predefinidas, use o tipo de tarefa CLASSIFICATION. Este tipo de tarefa gera incorporações num espaço de incorporações otimizado para classificação.

Por exemplo, suponhamos que quer gerar incorporações para publicações nas redes sociais que pode usar para classificar o respetivo sentimento como positivo, negativo ou neutro. Quando as incorporações de uma publicação nas redes sociais que diz "Não gosto de viajar de avião" são classificadas, o sentimento é classificado como negativo.

Agrupe textos

Se quiser usar incorporações para agrupar textos com base nas respetivas semelhanças, use o tipo de tarefa CLUSTERING. Este tipo de tarefa gera incorporações otimizadas para serem agrupadas com base nas respetivas semelhanças.

Por exemplo, suponhamos que quer gerar incorporações para artigos de notícias para poder mostrar aos utilizadores artigos relacionados com os que leram anteriormente. Depois de os encaixes serem gerados e agrupados, pode sugerir artigos adicionais relacionados com desporto aos utilizadores que leem muito sobre desporto.

Seguem-se alguns exemplos de utilização adicionais para a clustering:

  • Segmentação de clientes: agrupe clientes com incorporações semelhantes geradas a partir dos respetivos perfis ou atividades para marketing segmentado e experiências personalizadas.
  • Segmentação de produtos: o agrupamento de incorporações de produtos com base no respetivo título e descrição, imagens dos produtos ou críticas dos clientes pode ajudar as empresas a fazer a análise de segmentos dos seus produtos.
  • Pesquisa de mercado: a agrupamento de respostas a inquéritos de consumidores ou incorporações de dados de redes sociais pode revelar padrões e tendências ocultos nas opiniões, preferências e comportamentos dos consumidores, ajudando nos esforços de pesquisa de mercado e informando as estratégias de desenvolvimento de produtos.
  • Cuidados de saúde: o agrupamento de incorporações de pacientes derivadas de dados médicos pode ajudar a identificar grupos com condições ou respostas ao tratamento semelhantes, o que leva a planos de cuidados de saúde mais personalizados e terapias direcionadas.
  • Tendências do feedback dos clientes: agrupar o feedback dos clientes de vários canais (inquéritos, redes sociais, pedidos de apoio técnico) pode ajudar a identificar pontos problemáticos comuns, pedidos de funcionalidades e áreas de melhoria do produto.

Obtenha informações a partir de mensagens de texto

Quando cria um sistema de pesquisa ou obtenção, trabalha com dois tipos de texto:

  • Corpus: a coleção de documentos na qual quer pesquisar.
  • Consulta: o texto que um utilizador fornece para pesquisar informações no conjunto de dados.

Para conseguir o melhor desempenho, tem de usar diferentes tipos de tarefas para gerar incorporações para o seu corpus e consultas.

Primeiro, gere incorporações para toda a sua coleção de documentos. Este é o conteúdo que vai ser obtido pelas consultas dos utilizadores. Quando incorporar estes documentos, use o tipo de tarefa RETRIEVAL_DOCUMENT. Normalmente, executa este passo uma vez para indexar todo o seu conjunto de dados e, em seguida, armazena as incorporações resultantes numa base de dados vetorial.

Em seguida, quando um utilizador envia uma pesquisa, gera uma incorporação para o texto da consulta em tempo real. Para tal, deve usar um tipo de tarefa que corresponda à intenção do utilizador. Em seguida, o seu sistema usa esta incorporação de consulta para encontrar as incorporações de documentos mais semelhantes na sua base de dados vetorial.

Os seguintes tipos de tarefas são usados para consultas:

  • RETRIEVAL_QUERY: use isto para uma consulta de pesquisa padrão em que quer encontrar documentos relevantes. O modelo procura incorporações de documentos que sejam semanticamente próximas da incorporação da consulta.
  • QUESTION_ANSWERING: use esta opção quando se espera que todas as consultas sejam perguntas adequadas, como "Porque é que o céu é azul?" ou "Como é que aperto os atacadores?".
  • FACT_VERIFICATION: use esta opção quando quiser obter um documento do seu corpus que prove ou refute uma declaração. Por exemplo, a consulta "as maçãs crescem debaixo da terra" pode devolver um artigo sobre maçãs que, em última análise, refutaria a afirmação.

Considere o seguinte cenário do mundo real em que as consultas de obtenção seriam úteis:

  • Para uma plataforma de comércio eletrónico, quer usar incorporações para permitir que os utilizadores pesquisem produtos usando consultas de texto e imagens, oferecendo uma experiência de compras mais intuitiva e envolvente.
  • Para uma plataforma educativa, quer criar um sistema de respostas a perguntas que possa responder às perguntas dos alunos com base no conteúdo dos manuais escolares ou nos recursos educativos, oferecendo experiências de aprendizagem personalizadas e ajudando os alunos a compreender conceitos complexos.

Obtenção de código

O text-embedding-005 suporta um novo tipo de tarefa CODE_RETRIEVAL_QUERY, que pode ser usado para obter blocos de código relevantes através de consultas de texto simples. Para usar esta funcionalidade, os blocos de código devem ser incorporados através do RETRIEVAL_DOCUMENT tipo de tarefa, enquanto as consultas de texto são incorporadas através de CODE_RETRIEVAL_QUERY.

Para explorar todos os tipos de tarefas, consulte a referência do modelo.

Vejamos um exemplo:

REST

PROJECT_ID=PROJECT_ID

curl \
-X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-embedding-005:predict -d \
$'{ 
  "instances": [
    {
      "task_type": "CODE_RETRIEVAL_QUERY",
      "content": "Function to add two numbers"
    }
  ],
}'

Python

Para saber como instalar ou atualizar o SDK Vertex AI para Python, consulte o artigo Instale o SDK Vertex AI para Python. Para mais informações, consulte a Python documentação de referência da API.

from vertexai.language_models import TextEmbeddingInput, TextEmbeddingModel

MODEL_NAME = "gemini-embedding-001"
DIMENSIONALITY = 3072


def embed_text(
    texts: list[str] = ["Retrieve a function that adds two numbers"],
    task: str = "CODE_RETRIEVAL_QUERY",
    model_name: str = "gemini-embedding-001",
    dimensionality: int | None = 3072,
) -> list[list[float]]:
    """Embeds texts with a pre-trained, foundational model."""
    model = TextEmbeddingModel.from_pretrained(model_name)
    kwargs = dict(output_dimensionality=dimensionality) if dimensionality else {}

    embeddings = []
    # gemini-embedding-001 takes one input at a time
    for text in texts:
        text_input = TextEmbeddingInput(text, task)
        embedding = model.get_embeddings([text_input], **kwargs)
        print(embedding)
        # Example response:
        # [[0.006135190837085247, -0.01462465338408947, 0.004978656303137541, ...]]
        embeddings.append(embedding[0].values)

    return embeddings


if __name__ == "__main__":
    # Embeds code block with a pre-trained, foundational model.
    # Using this function to calculate the embedding for corpus.
    texts = ["Retrieve a function that adds two numbers"]
    task = "CODE_RETRIEVAL_QUERY"
    code_block_embeddings = embed_text(
        texts=texts, task=task, model_name=MODEL_NAME, dimensionality=DIMENSIONALITY
    )

    # Embeds code retrieval with a pre-trained, foundational model.
    # Using this function to calculate the embedding for query.
    texts = [
        "def func(a, b): return a + b",
        "def func(a, b): return a - b",
        "def func(a, b): return (a ** 2 + b ** 2) ** 0.5",
    ]
    task = "RETRIEVAL_DOCUMENT"
    code_query_embeddings = embed_text(
        texts=texts, task=task, model_name=MODEL_NAME, dimensionality=DIMENSIONALITY
    )

Avalie a semelhança entre textos

Se quiser usar incorporações para avaliar a semelhança de texto, use o tipo de tarefa SEMANTIC_SIMILARITY. Este tipo de tarefa gera incorporações otimizadas para gerar pontuações de semelhança.

Por exemplo, suponhamos que quer gerar incorporações para usar na comparação da semelhança dos seguintes textos:

  • O gato está a dormir
  • O felino está a sestar

Quando as incorporações são usadas para criar uma pontuação de semelhança, a pontuação de semelhança é elevada, porque ambos os textos têm praticamente o mesmo significado.

Considere os seguintes cenários reais em que a avaliação da semelhança da entrada seria útil:

  • Para um sistema de recomendações, quer identificar itens (por exemplo, produtos, artigos, filmes) semanticamente semelhantes aos itens preferidos de um utilizador, oferecendo recomendações personalizadas e melhorando a satisfação do utilizador.

As seguintes limitações aplicam-se quando usa estes modelos:

  • Não use estes modelos de pré-visualização em sistemas de produção ou de missão crítica.
  • Estes modelos só estão disponíveis em us-central1.
  • As previsões em lote não são suportadas.
  • A personalização não é suportada.

O que se segue?