A API Text-embeddings da Vertex AI permite criar um embedding de texto usando a IA generativa na Vertex AI. Os embeddings de texto são representações numéricas de texto que capturam as relações entre palavras e frases. Os modelos de machine learning, especialmente os de IA generativa, são adequados para criar esses embeddings identificando padrões em grandes conjuntos de dados de texto. O aplicativo pode usar embeddings de texto para processar e produzir linguagem, reconhecendo significados complexos e relações semânticas específicas do conteúdo. Você interage com embeddings de texto sempre que faz uma pesquisa no Google ou recebe recomendações de streaming de música.
Alguns casos de uso comuns para incorporações de texto incluem:
- Pesquisa semântica: texto de pesquisa classificado por semelhança semântica.
- Classificação: retorna a classe de itens com atributos de texto semelhantes ao texto fornecido.
- Clustering: itens de cluster com atributos de texto semelhantes ao texto fornecido.
- Detecção de outlier: retorna itens em que os atributos de texto estão menos relacionados ao texto fornecido.
- Interface de conversa: agrupa grupos de frases que podem levar a respostas semelhantes, como em um espaço de incorporação no nível da conversa.
Os embeddings de texto funcionam convertendo texto em matrizes de números de ponto flutuante, chamadas de vetores. Esses vetores são projetados para capturar o significado do texto. O comprimento da matriz de embedding é chamado de dimensionalidade do vetor. Por exemplo, uma passagem de texto pode ser representada por um vetor com centenas de dimensões. Em seguida, ao calcular a distância numérica entre as representações vetoriais de duas partes de texto, um aplicativo pode determinar a semelhança entre os objetos.
A API Text embeddings da Vertex AI usa representações vetoriais densas: text-embedding-gecko, por exemplo, usa vetores de 768 dimensões. Os modelos de embedding de vetores densos usam métodos de aprendizado profundo semelhantes aos usados por modelos de linguagem grandes. Ao contrário dos vetores esparsos, que tendem a mapear diretamente as palavras para números, os vetores densos são projetados para representar melhor o significado de um texto. O benefício de usar embeddings de vetores densos na IA generativa é que, em vez de pesquisar correspondências de palavra direta ou sintaxe, é possível pesquisar melhor trechos que se alinhem ao significado da consulta, mesmo que os trechos não usam o mesmo idioma.
- Para saber mais sobre embeddings, consulte Multiferramenta de IA do Meet: embeddings de vetor.
- Para fazer um curso básico de ML sobre embeddings, consulte Embeddings.
- Para saber mais sobre como armazenar embeddings vetoriais em um banco de dados, consulte a página Descobrir e a Visão geral da pesquisa de vetores
Pré-requisitos
Há pré-requisitos específicos para criar uma incorporação. Para começar, consulte o guia de início rápido: Testar embeddings de texto.
Use o Colab para chamar os modelos de incorporação de texto recém-lançados (
Notebook Jupyter: chame os modelos de embedding de texto usando o Colab ou um notebook Jupyter. |
Exemplo de caso de uso: desenvolver um chatbot de recomendação de livros
Se você quiser desenvolver um chatbot de recomendação de livros, a primeira coisa a fazer é usar uma rede neural profunda (DNN, na sigla em inglês) para converter cada livro em um vetor de embedding, em que um vetor de embedding representa um livro. É possível alimentar, como entrada da DNN, apenas o título do livro ou apenas o conteúdo do texto. Ou podemos usar ambos juntos, junto com outros metadados que descrevem o livro, como o gênero.
Os embeddings neste exemplo podem ser compostos por milhares de títulos de livros com resumos e gênero, e podem ter representações de livros como Wuthering Heights de Emily Brontë e Persuasion por Jane Austen que são semelhantes entre si (pequena distância entre a representação numérica). Já a representação numérica do livro Os Grandes Gatsby, de F. Scott Fitzgerald seria mais, porque o período, o gênero e o resumo são menos semelhantes.
As entradas são a principal influência na orientação do espaço de embedding. Por exemplo, se tivéssemos apenas entradas de título de livro, dois livros com títulos semelhantes, mas resumos muito diferentes, poderiam estar próximos. No entanto, se incluirmos o título e o resumo, esses mesmos livros serão menos semelhantes (mais distantes) no espaço de embedding.
Trabalhando com a IA generativa, esse bot de sugestão de livros pode resumir, sugerir e mostrar livros de que você pode gostar (ou não gostar), com base na sua consulta.
Modelos compatíveis
Para saber quais versões de modelos estáveis de embedding de texto estão disponíveis, consulte Versões de modelos estáveis disponíveis. Para saber quais versões de modelos mais recentes de embedding de texto estão disponíveis, consulte Modelos mais recentes.
É altamente recomendável especificar uma versão de modelo estável (por exemplo, text-embedding-004
). A versão mais recente de um modelo está em Pré-lançamento e não em disponibilidade geral (GA).
Como a versão mais recente está em Pré-lançamento, não há garantia de que ela estará pronta para produção.
É muito importante usar uma versão de modelo estável, como text-embedding-004, para aplicativos que exigem embeddings
compatíveis com versões anteriores. Se a compatibilidade com versões
não for uma preocupação e você quiser usar a versão mais recente do modelo, especifique explicitamente @latest
.
Sempre especifique o nome completo do modelo, incluindo o número da versão.
Obter embeddings de texto para um snippet de texto
É possível receber embeddings de texto para um snippet de texto usando a API Vertex AI ou o SDK da Vertex AI para Python. Para cada solicitação, há um limite de 250 textos de entrada em us-central1
. Em outras regiões, o texto de entrada máximo é 5.
Cada texto de entrada tem um limite de tokens de 2.000 As entradas mais longas que esse comprimento são silenciosamente truncadas. É possível desativar o truncamento silencioso definindo autoTruncate
como false
.
Estes exemplos usam o modelo text-embedding-004
.
REST
Para receber embeddings de texto, envie uma solicitação POST especificando o ID do modelo do editor.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do projeto.
- TEXT: o texto ao qual você quer gerar embeddings. Limite: cinco textos com até 3.072 tokens por texto.
- AUTO_TRUNCATE: se definido como
false
, o texto que exceder o limite de tokens fará com que a solicitação falhe. O valor padrão étrue
.
Método HTTP e URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-embedding-004:predict
Corpo JSON da solicitação:
{ "instances": [ { "content": "TEXT"} ], "parameters": { "autoTruncate": AUTO_TRUNCATE } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-embedding-004:predict"
PowerShell
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/publishers/google/models/text-embedding-004:predict" | Select-Object -Expand Content
Você receberá uma resposta JSON semelhante a seguinte. Observe que values
foi truncado para economizar espaço.
Exemplo de comando curl
MODEL_ID="text-embedding-004"
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/${MODEL_ID}:predict -d \
$'{
"instances": [
{ "content": "What is life?"}
],
}'
Python
Para saber como instalar o SDK da Vertex AI para Python, consulte Instalar o SDK da Vertex AI para Python. Para mais informações, consulte a documentação de referência da API Python.
Go
Antes de testar essa amostra, siga as instruções de configuração para Go Guia de início rápido da Vertex AI: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Go.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Antes de testar essa amostra, siga as instruções de configuração para Java Guia de início rápido da Vertex AI: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Java.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Antes de testar essa amostra, siga as instruções de configuração para Node.js Guia de início rápido da Vertex AI: como usar bibliotecas de cliente. Para mais informações, consulte a documentação de referência da API Vertex AI para Node.js.
Para autenticar na Vertex AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Adicionar um embedding a um banco de dados de vetores
Depois de gerar o embedding, é possível adicioná-lo a um banco de dados vetorial, como o Vector Search. Isso permite a recuperação de baixa latência e é essencial à medida que o tamanho dos dados aumenta.
Para saber mais sobre a pesquisa de vetor, consulte Visão geral da pesquisa de vetor.
Mudanças da API nos modelos lançados a partir de agosto de 2023
Ao usar versões de modelo lançadas a partir de agosto de 2023, incluindo text-embedding-004
e textembedding-gecko-multilingual@001
, há um novo parâmetro de tipo de tarefa e o título opcional (válido somente com task_type=RETRIEVAL_DOCUMENT
).
Esses novos parâmetros serão aplicados a esses modelos de pré-lançamento público e a todos os modelos estáveis a partir de agora.
{
"instances": [
{
"task_type": "RETRIEVAL_DOCUMENT",
"title": "document title",
"content": "I would like embeddings for this text!"
},
]
}
O parâmetro task_type
é definido como o aplicativo downstream pretendido para ajudar o modelo a produzir embeddings de melhor qualidade. É uma string que pode assumir um dos seguintes valores:
task_type |
Descrição |
---|---|
RETRIEVAL_QUERY |
Especifica que o texto é uma consulta em uma configuração de pesquisa ou recuperação. |
RETRIEVAL_DOCUMENT |
Especifica que o texto é um documento em uma configuração de pesquisa ou recuperação. |
SEMANTIC_SIMILARITY |
Especifica que o texto fornecido é usado para Similaridade Textual Semântica (STS). |
CLASSIFICATION |
Especifica que o embedding é usado para classificação. |
CLUSTERING |
Especifica que o embedding é usado para clustering. |
QUESTION_ANSWERING |
Especifica que o embedding de consulta é usado para responder a perguntas. Use RETRIEVAL_DOCUMENT para o documento. |
FACT_VERIFICATION |
Especifica que o embedding de consulta é usado para a verificação de fatos. |
Cobertura de idiomas para modelos textembedding-gecko-multilingual
.
O modelo textembedding-gecko-multilingual@001
foi avaliado nas seguintes linguagens: Arabic (ar)
, Bengali (bn)
, English (en)
, Spanish (es)
, German (de)
, Persian (fa)
, Finnish (fi)
, French (fr)
, Hindi (hi)
, Indonesian (id)
, Japanese (ja)
, Korean (ko)
, Russian (ru)
, Swahili (sw)
, Telugu (te)
, Thai (th)
, Yoruba (yo)
, Chinese (zh)
.
Esta é a lista completa de idiomas compatíveis:
Afrikaans
, Albanian
, Amharic
, Arabic
, Armenian
, Azerbaijani
, Basque
e Belarusian
, Bengali
, Bulgarian
, Burmese
, Catalan
, Cebuano
, Chichewa
, Chinese
, Corsican
, Czech
e Danish
, Dutch
, English
, Esperanto
, Estonian
, Filipino
, Finnish
, French
, Galician
, Georgian
e German
, Greek
, Gujarati
, Haitian Creole
, Hausa
, Hawaiian
, Hebrew
, Hindi
, Hmong
, Hungarian
e Icelandic
, Igbo
, Indonesian
, Irish
, Italian
, Japanese
, Javanese
, Kannada
, Kazakh
, Khmer
e Korean
, Kurdish
, Kyrgyz
, Lao
, Latin
, Latvian
, Lithuanian
, Luxembourgish
, Macedonian
, Malagasy
e Malay
, Malayalam
, Maltese
, Maori
, Marathi
, Mongolian
, Nepali
, Norwegian
, Pashto
, Persian
e Polish
, Portuguese
, Punjabi
, Romanian
, Russian
, Samoan
, Scottish Gaelic
, Serbian
, Shona
, Sindhi
e Sinhala
, Slovak
, Slovenian
, Somali
, Sotho
, Spanish
, Sundanese
, Swahili
, Swedish
, Tajik
e Tamil
, Telugu
, Thai
, Turkish
, Ukrainian
, Urdu
, Uzbek
, Vietnamese
, Welsh
, West Frisian
e Xhosa
, Yiddish
, Yoruba
e Zulu
.
A seguir
- Saiba como ajustar um modelo de fundação.
- Saiba mais sobre as práticas recomendadas de IA responsável e os filtros de segurança da Vertex AI.