1. Introdução aos Embeddings

1.1. O que são Embeddings

Embeddings, no campo do aprendizado de máquina, especialmente ao lidar com problemas de processamento de linguagem natural (PLN), é uma técnica para transformar dados de texto em vetores numéricos. Na linguagem humana, o significado das palavras e frases é determinado pelo seu contexto e uso. O objetivo dos embeddings é capturar a semântica dessas unidades linguísticas, permitindo que os computadores as compreendam e processem.

A ideia principal dos embeddings é mapear palavras com significados semelhantes para pontos próximos em um espaço matemático, representando palavras como pontos em um espaço de alta dimensão. Dessa forma, palavras com significados semânticos próximos (por exemplo, "rei" e "rainha") estarão próximas no espaço. Os embeddings são tipicamente compostos por arrays de ponto flutuante, permitindo que até mesmo fragmentos de texto muito diferentes (como "cachorro" e "canino") tenham representações de embedding semelhantes.

Dica: Como desenvolvedor de aplicativos, você pode simplesmente entender que, para duas frases de texto com significados semelhantes, a similaridade do vetor de embedding delas é alta.

1.2. Aplicações dos Embeddings

Os embeddings são amplamente utilizados em vários cenários, eis alguns casos de uso principais:

  1. Busca: Utilizando recursos de embedding para classificar os resultados da busca com base na relevância com o texto da consulta.
  2. Agrupamento: Os embeddings podem ajudar a identificar e categorizar fragmentos de texto semanticamente semelhantes.
  3. Sistemas de Recomendação: Recomendar itens com base na similaridade pode ajudar a descobrir e recomendar outros itens semelhantes aos conhecidos.
  4. Detecção de Anomalias: Os embeddings podem ser usados para identificar pontos de dados significativamente diferentes do conjunto de dados principal.
  5. Medição de Diversidade: Os embeddings também podem ser usados para analisar a distribuição de similaridade entre diferentes textos.
  6. Classificação: Comparando texto com um conjunto de embeddings de rótulos conhecidos para classificá-lo na categoria mais semelhante.

2. Introdução aos Embeddings da OpenAI

2.1. Visão Geral dos Modelos de Embeddings da OpenAI

A OpenAI fornece modelos de embedding de terceira geração, incluindo text-embedding-3-small e text-embedding-3-large. Esses modelos são construídos com a tecnologia exclusiva de aprendizado profundo da OpenAI, visando fornecer um desempenho altamente multilíngue, ao mesmo tempo em que tentam reduzir custos.

Esses modelos têm características únicas ao processar embeddings. Por exemplo, text-embedding-3-small oferece vetores de embedding com 1536 dimensões, enquanto text-embedding-3-large fornece vetores de embedding com 3072 dimensões para abranger características de texto mais complexas. Ajustando os parâmetros, a dimensionalidade dos embeddings pode ser controlada para atender às necessidades específicas de cenários de aplicativos.

2.2. Seleção e Uso do Modelo

A escolha do modelo de embedding apropriado depende dos requisitos específicos do aplicativo. Veja como fazer a seleção em diferentes cenários de aplicativos:

  1. Em cenários focados no desempenho: Se você precisa capturar informações semânticas mais detalhadas, como em sistemas de recomendação refinados ou classificação de texto de alta precisão, normalmente é recomendado usar text-embedding-3-large. Embora seja mais caro que os modelos menores, pode fornecer uma representação mais rica das características de texto.

  2. Em aplicativos sensíveis a custos: Para aplicativos que exigem processamento de uma grande quantidade de dados, mas não têm requisitos de precisão particularmente altos, como exploração inicial de dados ou prototipagem rápida, text-embedding-3-small é uma escolha mais econômica. Mantém um desempenho relativamente alto, ao reduzir significativamente os custos.

  3. Ambientes multilíngues: Esses modelos de embedding têm alto desempenho multilíngue, tornando-os particularmente úteis em cenários inter e multilíngues, sendo uma escolha ideal para aplicativos globais.

A escolha do modelo de embedding correto dependerá de requisitos específicos, complexidade dos dados e do ponto de equilíbrio desejado entre desempenho e custo.

3. Como Usar Embeddings

3.1 Utilizando o curl para Chamar a API de Incorporações

O curl é uma ferramenta de linha de comando comumente utilizada para enviar solicitações HTTP. O exemplo a seguir mostra como usar o curl para obter a representação de incorporação de texto:

curl https://api.openai.com/v1/embeddings \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $OPENAI_API_KEY" \
    -d '{
        "input": "A aprendizagem de máquina é um ramo da inteligência artificial.",
        "model": "text-embedding-3-small"
    }'

No comando acima, a variável $OPENAI_API_KEY contém a chave da API OpenAI do usuário, que deve ser substituída por uma chave válida para uso real.

Após executar este comando, a API de Incorporações da OpenAI retornará uma resposta contendo a representação de incorporação de texto. Aqui está um exemplo do resultado da chamada da API:

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": [  // Aqui está o vetor de características
        -0.006929283495992422,
        -0.005336422007530928,
        ...  // Números restantes omitidos para exibição
        -4.547132266452536e-05,
        -0.024047505110502243
      ]
    }
  ],
  "model": "text-embedding-3-small",
  "usage": {
    "prompt_tokens": 5,
    "total_tokens": 5
  }
}

3.2 Utilizando o Cliente Python para Chamar a API de Incorporações

Além de usar o curl para chamar diretamente a API na linha de comando, você também pode utilizar um cliente Python. Isso requer a instalação prévia da biblioteca oficial openai. Aqui está um exemplo de como obter incorporações de texto usando Python:

import openai

openai.api_key = 'SUA_CHAVE_API_OPENAI'  # Substitua pela sua chave de API OpenAI

response = openai.Embedding.create(
  input="A inteligência artificial está mudando o mundo.",
  model="text-embedding-3-small"
)

vetor_incorporacao = response['data'][0]['embedding']
print(vetor_incorporacao)

Ao executar este script Python, você obterá um vetor de incorporação semelhante ao obtido usando o curl. Este vetor é uma lista de números em ponto flutuante, representando a representação numérica do texto de entrada no espaço de incorporação.

O resultado da chamada é o seguinte:

[-0.0032198824, 0.0022555287, ..., 0.0015886585, -0.0021505365]

3.3 Operando Vetores de Incorporação

A OpenAI fornece apenas o modelo de computação de vetorização de texto de Incorporações. Se você deseja usar as Incorporações para implementar funções como busca de similaridade de texto, é necessário aprender sobre bancos de dados de vetores, como Qdrant, Chroma e Milvus.

Consulte os seguintes tutoriais de bancos de dados de vetores: