Embeddings
Embeddings são vetores aprendidos que posicionam textos, imagens ou itens semelhantes próximos uns dos outros. Abrange como são criados, comparados e pesquisados em grande escala.
Um embedding é um vetor aprendido de números que representa um elemento, como uma palavra, uma imagem, um produto ou um utilizador, de modo que elementos com significado ou conteúdo semelhantes fiquem representados por vetores próximos. A distância neste espaço vetorial torna-se uma medida de semelhança, permitindo que o software pesquise, agruppe, recomende e classifique comparando vetores em vez de píxeis ou cadeias de caracteres brutos. Os embeddings também são a representação operacional nas redes neurais: um modelo de linguagem grande (LLM) converte cada token num embedding antes da sua primeira camada transformer, e um modelo de visão transforma uma imagem em vetores de características através do seu backbone. Os embeddings usados em pesquisas têm normalmente algumas centenas a alguns milhares de dimensões, muito menos do que a quantidade de valores na entrada bruta.
Como os embeddings são criados#
Os embeddings vêm de dois tipos de componentes aprendidos:
- Tabelas de consulta: Para itens discretos, como tokens, IDs de produtos ou IDs de usuários, uma camada de embedding armazena uma linha ajustável por item, e consultar um item retorna sua linha. A
nn.Embeddingdo PyTorch é uma tabela desse tipo. Suas linhas começam com valores aleatórios e são atualizadas por retropropagação, junto com o restante do modelo, de modo que itens com funções semelhantes na tarefa de treinamento tendem a se aproximar em vetores semelhantes. - Codificadores: Para imagens, áudio e texto livre, uma rede mapeia toda a entrada para um vetor, geralmente agrupando os mapas de características de uma CNN ou lendo os tokens de saída de um Transformer. Codificadores treinados para uma tarefa, como classificação, produzem embeddings úteis como subproduto, enquanto codificadores treinados com aprendizado contrastivo moldam diretamente o espaço de embeddings, como faz o CLIP, posicionando imagens e suas legendas em um espaço compartilhado.
O Word2vec, publicado por Tomas Mikolov e colegas do Google em 2013, mostrou quanta estrutura esse tipo de treinamento captura. Nos vetores de palavras, vector("King") − vector("Man") + vector("Woman") fica mais próximo de vector("Queen"), e os vetores pré-treinados do Google News publicados com o trabalho abrangem 3 milhões de palavras e expressões em 300 dimensões.
Comparação de embeddings#
A similaridade de cosseno compara as direções de dois vetores e varia de −1 a 1. O produto escalar também leva em conta seus comprimentos, e a distância euclidiana mede a distância em linha reta entre eles. Muitos sistemas normalizam os embeddings para comprimento unitário, o que torna a similaridade de cosseno e o produto escalar idênticos e classifica os vizinhos na mesma ordem que a distância euclidiana. Os modelos YOLO26 produzem embeddings de imagem com embed(), que ignora a cabeça de predição e retorna um vetor por imagem ao aplicar pooling médio à saída da penúltima camada do modelo:
import torch.nn.functional as F
from ultralytics import YOLO
from ultralytics.utils import ASSETS
# Load a YOLO26 classification model trained on ImageNet
model = YOLO("yolo26n-cls.pt")
# embed() returns one pooled feature vector per image instead of predictions
bus, zidane = model.embed([ASSETS / "bus.jpg", ASSETS / "zidane.jpg"])
print(f"Embedding length: {bus.shape[0]}")
# Higher cosine similarity means the model sees more similar content
print(f"Cosine similarity: {F.cosine_similarity(bus, zidane, dim=0).item():.3f}")Para o YOLO26n-cls, a incorporação é um vetor de 256 dimensões, a saída agrupada do bloco de atenção que encerra seu backbone, e a segunda linha exibe a similaridade de cosseno entre as duas fotos de amostra incluídas. Executar a mesma comparação com as incorporações armazenadas de uma coleção inteira é como uma busca por similaridade de imagens classifica seus resultados.
Busca de embeddings em grande escala#
Comparar uma consulta com milhões de vetores armazenados, um de cada vez, é lento demais; por isso, os bancos de dados vetoriais criam índices aproximados de vizinhos mais próximos, como índices HNSW baseados em grafos ou índices de arquivo invertido, que encontram correspondências próximas verificando apenas uma pequena fração da coleção. A coleção é incorporada uma vez, e cada consulta é incorporada no momento da busca usando o mesmo codificador ou o codificador de texto correspondente quando a busca é por imagens a partir de texto:
O armazenamento influencia o projeto tanto quanto a precisão. O aprendizado de representações Matryoshka treina embeddings cujas dimensões iniciais funcionam por conta própria, permitindo truncar vetores para economizar espaço, e a quantização vetorial comprime cada vetor em alguns bytes. A busca híbrida combina similaridade de embeddings com correspondência de palavras-chave.
Aplicações#
- Busca semântica e geração aumentada por recuperação (RAG): Embeddings de texto recuperam trechos pelo significado, então uma consulta sobre "sinistros de seguro de automóvel" também encontra documentos que dizem "apólice de carro", e a RAG passa os trechos recuperados a um LLM como contexto.
- Sistemas de recomendação: Usuários e itens são incorporados em um mesmo espaço, e os itens mais próximos do vetor de um usuário se tornam candidatos a recomendação.
- Classificação zero-shot: Modelos com um espaço compartilhado de imagens e texto classificam uma imagem comparando seu embedding com os embeddings de nomes de classes escritos como texto.
- Reidentificação de objetos: Embeddings de aparência associam a mesma pessoa ou veículo entre câmeras e em intervalos de uma trajetória.
- Exploração de conjuntos de dados: projetar incorporações em duas dimensões com t-SNE ou UMAP revela agrupamentos, quase duplicatas e valores atípicos em um conjunto de dados, como faz o painel Clustering para os conjuntos de dados da Ultralytics Platform.
Embeddings e termos relacionados#
- Espaço latente: O espaço vetorial ocupado pelos embeddings. "Representação latente" e "embedding" costumam ser usados como sinônimos.
- Extração de características: Qualquer processo que transforma dados brutos em características. Um embedding é um vetor de características aprendido para que as distâncias entre vetores tenham significado.
- Tokenização: Divide o texto em tokens e mapeia cada um para um ID inteiro. Em seguida, a camada de embedding mapeia cada ID para um vetor.
- Codificação one-hot: Representa o item i de um vocabulário como um vetor de zeros com 1 na posição i, de modo que todos os pares de itens ficam igualmente distantes e a codificação não carrega nenhuma informação de similaridade. Multiplicar um vetor one-hot pela matriz de pesos de uma tabela de embeddings seleciona exatamente uma linha, que é o resultado retornado por uma consulta de embedding sem executar a multiplicação.










