Embeddings na API Gemini

O serviço de embedding da 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 e clustering, entre muitas outras.

Esta página explica brevemente embeddings e destaca alguns dos principais casos de uso para o de embedding 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 representadas de forma espaço n-dimensional. Essa abordagem permite tratar trechos de texto como partes dados relacionais, que podem ser usados para treinar os modelos.

Os embeddings capturam o significado e o contexto semântico, o que resulta em texto com significados semelhantes com embeddings mais próximos. Por exemplo, a frase "Eu peguei cachorro ao veterinário" e "Levei meu gato ao veterinário" teria embeddings que são próximas uma da outra no espaço vetorial, pois ambas descrevem um semelhante contexto.

É possível usar embeddings para comparar textos diferentes e entender como eles se relacionam. Por exemplo, se os embeddings do texto "gato" e "cachorro" estão perto é possível inferir que essas palavras são semelhantes em significado, contexto ou os dois. 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 informações semanticamente um texto semelhante com base em um texto de entrada. Diversos aplicativos podem ser por um sistema de recuperação de informações, como a pesquisa semântica, responder perguntas ou fazer resumos.
  • Classificação:é possível treinar um modelo usando embeddings para classificar documentos em categorias. Por exemplo, se você quer classificar usuários comentários negativos ou positivos, é possível usar o serviço de embeddings para a representação vetorial de cada comentário para treinar o classificador.
  • Clustering: a comparação de vetores de texto pode mostrar quão semelhantes ou diferentes de que eles são. Esse atributo pode ser usado para treinar um modelo de clustering que agrupa textos ou documentos semelhantes e para detectar anomalias em seus dados.
  • Banco de dados de vetores: é possível armazenar os embeddings gerados em um para melhorar a precisão e a eficiência do seu aplicativo de PLN. Consulte o tutorial a seguir para aprender a usar um banco de dados de vetores para traduzir comandos de texto em vetores numéricos.

Modelos de embedding do Gemini

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

Use embeddings de texto para novos projetos ou aplicativos. Seu aplicativo precisa use o modelo de embedding apenas 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 a página de Primeiros passos tutorial para o exemplo completo do executável.

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 a página de Primeiros passos tutorial para exemplo executável completo.

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 a página de Primeiros passos tutorial para o exemplo completo do executável.

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 a página de Primeiros passos tutorial para o exemplo completo do executável.

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 o REST no GitHub para o exemplo completo do executável.

A seguir