Introdução
Open AI CLIP ViT-L/14. A
dimensão de cada vetor de embedding é 768.
Esse conjunto de dados pode ser usado para modelar aspectos de projeto, dimensionamento e desempenho de uma aplicação real de
busca vetorial em grande escala. Ele pode ser usado tanto para buscas de texto para imagem quanto de imagem para imagem.
Detalhes do conjunto de dados
S3 público.
O subconjunto é armazenado em um arquivo Parquet.
Recomendamos que os usuários façam primeiro uma análise de dimensionamento para estimar os requisitos de armazenamento e memória desse conjunto de dados consultando a documentação.
Etapas
1
Criar tabela
Crie a tabela O
laion_5b_10m para armazenar os embeddings e os atributos associados:id é apenas um número inteiro sequencial. Os atributos adicionais podem ser usados em predicados para compreender
a busca por similaridade vetorial combinada com pós-filtragem/pré-filtragem, conforme explicado na documentação2
Carregar dados
Para carregar o conjunto de dados, execute a seguinte instrução SQL:O carregamento de 10 milhões de linhas na tabela levará alguns minutos.
3
Execute uma busca de similaridade de vetores por força bruta
A busca KNN (k - vizinhos mais próximos) ou por força bruta consiste em calcular a distância entre cada vetor do conjunto de dados
e o vetor de embedding da busca e, em seguida, ordenar as distâncias para obter os vizinhos mais próximos. Podemos usar um dos vetores
do próprio conjunto de dados como vetor de busca. Por exemplo:Anote a latência da consulta para podermos compará-la com a latência da consulta com ANN (usando índice vetorial).
Com 10 milhões de linhas, a consulta acima, sem um índice vetorial, pode levar alguns segundos ou minutos para ser concluída.
Query
4
Crie um índice de similaridade vetorial
Execute o SQL a seguir para definir e criar um índice de similaridade de vetores na coluna Os parâmetros e as considerações de desempenho para a criação e a busca de índices são descritos na documentação.
A instrução acima usa os valores 64 e 512, respectivamente, para os hiperparâmetros HNSW
vector da tabela laion_5b_10m:M e ef_construction.
Você precisa selecionar cuidadosamente os valores ideais desses parâmetros, avaliando o tempo de criação do índice e a qualidade dos resultados de busca
correspondentes aos valores selecionados.A criação e o salvamento do índice podem levar bastante tempo para o subconjunto de 10 milhões de linhas, dependendo do número de núcleos de CPU disponíveis e da largura de banda de armazenamento.5
Realizar pesquisa ANN
Depois que o índice de similaridade vetorial for criado, as consultas de busca vetorial usarão o índice automaticamente:O carregamento inicial do índice vetorial na memória pode levar alguns segundos/minutos.
Query
6
Gere embeddings para a consulta de pesquisa
Os vetores de embedding do conjunto de dados O resultado da busca acima é exibido abaixo:
LAION 5b foram gerados usando o modelo ViT-L/14 do OpenAI CLIP.Um exemplo de script em Python é fornecido abaixo para demonstrar como gerar programaticamente
vetores de embedding usando as APIs do CLIP. Em seguida, o vetor de embedding de
busca é passado como argumento para a função cosineDistance() na consulta SELECT.Para instalar o pacote clip, consulte o repositório do OpenAI no GitHub.