Embeddings na API Gemini

O serviço de embedding na API Gemini gera embeddings de última geração para palavras, frases e sentenças. Os embeddings resultantes podem ser usados para tarefas de processamento de linguagem natural (PLN), como pesquisa semântica, classificação de texto e clustering, entre muitas outras.

Nesta página, explicamos brevemente os embeddings e destacamos alguns casos de uso importantes do serviço de incorporação para ajudar você a começar.

O que são embeddings?

Os embeddings de texto são uma técnica de processamento de linguagem natural (PLN) que converte texto em coordenadas numéricas, chamadas de vetores, que podem ser plotadas em um espaço n-dimensional. Essa abordagem permite tratar trechos de texto como dados relacionais, que podem ser usados para treinar os modelos.

Os embeddings capturam significado semântico e contexto, o que resulta em textos com significados semelhantes com embeddings mais próximos. Por exemplo, as frases "Levei meu cachorro ao veterinário" e "Levei meu gato ao veterinário" teriam embeddings próximos no espaço vetorial, já que ambos descrevem um contexto semelhante.

É possível usar embeddings para comparar diferentes textos e entender como eles se relacionam. Por exemplo, se os embeddings do texto "gato" e "cachorro" estiverem próximos, será possível inferir que essas palavras são semelhantes em significado, contexto ou ambos. Esse recurso permite uma variedade de casos de uso descritos na próxima seção.

Casos de uso

Os embeddings de texto são usados em vários casos de uso de PLN, como:

  • Recuperação de informações: é possível usar embeddings para recuperar texto semanticamente semelhante a partir de um texto de entrada. Vários aplicativos podem ser compatíveis com um sistema de recuperação de informações, como pesquisa semântica, respostas a perguntas ou resumo.
  • Classificação:é possível treinar um modelo usando embeddings para classificar documentos em categorias. Por exemplo, se você quiser classificar os comentários do usuário como negativos ou positivos, use o serviço de embeddings para receber a representação vetorial de cada comentário e treinar o classificador.
  • Clustering: a comparação de vetores de texto pode mostrar quão semelhantes ou diferentes eles são. Esse recurso pode ser usado para treinar um modelo de clustering que agrupa textos ou documentos semelhantes e detectar anomalias nos dados.
  • Banco de dados vetorial: é possível armazenar os embeddings gerados em um banco de dados vetorial para melhorar a precisão e a eficiência do aplicativo de PLN. Consulte o tutorial a seguir para saber como usar um banco de dados de vetores para converter comandos de texto em vetores numéricos.

Modelos de embedding do Gemini

A API Gemini oferece dois modelos que geram embeddings de texto: Embeddings de texto e Embeddings. Os embeddings de texto são uma versão atualizada do modelo de embedding que oferece tamanhos elásticos de embedding abaixo de 768 dimensões. Os embeddings flexíveis geram dimensões de saída menores e possivelmente economizam custos de computação e armazenamento com uma pequena perda de desempenho.

Use embeddings de texto para novos projetos ou aplicativos. Seu aplicativo só deverá usar o modelo de embedding se não for possível migrá-lo para usar embeddings de texto.

Gerar embeddings com a API Gemini

Use o método embedContent para gerar embeddings de texto:

Python

result = genai.embed_content(
model="models/text-embedding-004",
content="What is the meaning of life?",
task_type="retrieval_document",
title="Embedding of single string")

# 1 input > 1 vector output
print(str(result['embedding'])[:50], '... TRIMMED]')

Acesse nosso tutorial de primeiros passos para ver o exemplo completo de execução.

Go

ctx := context.Background()
// Access your API key as an environment variable (see our Getting Started tutorial)
client, err := genai.NewClient(ctx, option.WithAPIKey(os.Getenv("API_KEY")))
if err != nil {
log.Fatal(err)
}
defer client.Close()
// For embeddings, use the Text Embeddings model
em := client.EmbeddingModel("text-embedding-004")
res, err := em.EmbedContent(ctx, genai.Text("The quick brown fox jumps over the lazy dog."))

if err != nil {
panic(err)
}
fmt.Println(res.Embedding.Values)

Acesse nosso tutorial de primeiros passos para ver o exemplo completo de execução.

Node.js

const { GoogleGenerativeAI } = require("@google/generative-ai");

// Access your API key as an environment variable (see our Getting Started tutorial)
const genAI = new GoogleGenerativeAI(process.env.API_KEY);

async function run() {
// For embeddings, use the Text Embeddings model
const model = genAI.getGenerativeModel({ model: "text-embedding-004"});

const text = "The quick brown fox jumps over the lazy dog."

const result = await model.embedContent(text);
const embedding = result.embedding;
console.log(embedding.values);
}

run();

Acesse nosso tutorial de primeiros passos para ver o exemplo completo de execução.

Dart (Flutter)

final model = GenerativeModel(model: 'text-embedding-004', apiKey: apiKey);
final content = Content.text('The quick brown fox jumps over the lazy dog.');
final result = await model.embedContent(content);
print(result.embedding.values);

Acesse nosso tutorial de primeiros passos para ver o exemplo completo de execução.

curl

curl "https://generativelanguage.googleapis.com/v1beta/models/text-embedding-004:embedContent?key=$GOOGLE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"model": "models/text-embedding-004",
    "content": {
    "parts":[{
    "text": "Hello world"}]}, }' 2> /dev/null | head

Acesse nosso Guia de início rápido de incorporação com REST no GitHub para ver o exemplo completo de execução.

A seguir