OpenAI

OpenAI / clip-vit-base-patch32

Uma variante do modelo multimodal CLIP que utiliza uma arquitetura de transformador ViT-B/32 para a codificação de imagens e um transformador de auto-atenção mascarado para a codificação de texto.

Introdução ao clip-vit-base-patch32

O modelo CLIP, desenvolvido pela OpenAI, tem como objetivo compreender a robustez das tarefas de visão por computador e testar a capacidade dos modelos para generalizar para novas tarefas de classificação de imagens sem treino prévio. A variante clip-vit-base-patch32 utiliza uma arquitetura de transformador ViT-B/32 para a codificação de imagens e um transformador de auto-atenção mascarado para a codificação de texto. Ao treinar esses codificadores para maximizar a similaridade de pares (imagem, texto) através de perda contrastiva, o modelo aprende a associar imagens com descrições textuais correspondentes.

Como criar embeddings multimodais com clip-vit-base-patch32

Existem duas formas principais de gerar embeddings vectoriais:

  1. Zilliz Cloud Pipelines: uma funcionalidade incorporada no Zilliz Cloud (o Milvus gerido) que integra perfeitamente o modelo clip-vit-base-patch32. Fornece uma solução pronta a usar que simplifica a criação e a recuperação de texto ou imagens vectoriais incorporadas.
  2. SentenceTransformers: a biblioteca Python para sentence_transformers.

Uma vez gerados os vectores, estes podem ser armazenados no Zilliz Cloud (um serviço de base de dados vetorial totalmente gerido pela Milvus) e utilizados para pesquisa de semelhanças semânticas. Eis quatro passos fundamentais:

  1. Inscrever-se para obter uma conta Zilliz Cloud gratuitamente.
  2. Configurar um cluster sem servidor e obter o Ponto de extremidade público e chave de API.
  3. Crie uma coleção de vectores e insira os seus embeddings vectoriais.
  4. Execute uma pesquisa semântica nos embeddings armazenados.

Gerar embeddings vectoriais através do Zilliz Cloud Pipelines e efetuar uma pesquisa de similaridade

Consulte os seguintes recursos para obter instruções passo a passo.

Gerar embeddings vectoriais através do SentenceTransformer e inseri-los no Zilliz Cloud para pesquisa de similaridade

from PIL import Image
from sentence_transformers import SentenceTransformer
from pymilvus import MilvusClient
importar pedidos

#Carregar o modelo CLIP
modelo = SentenceTransformer('clip-ViT-B-32')

# Gerar imagens incorporadas
image_urls = [
    "https://raw.githubusercontent.com/milvus-io/milvus-docs/v2.4.x/assets/milvus_logo.png",
]
images = [Image.open(requests.get(url, stream=True).raw) for url in image_urls]
image_embeddings = model.encode(images)

# Gerar texto incorporado
consultas = ["logótipo azul"]
consultas_embeddings = model.encode(consultas)

# Ligar ao Zilliz Cloud com o ponto final público e a chave API
cliente = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLLECTION = "documents" (coleção)
if client.has_collection(nome_da_colecção=COLLECTION):
    client.drop_collection(nome_da_colecção=COLLECTION)
client.create_collection(
    nome_da_colecção=COLLECTION,
    dimension=512,
    auto_id=True)

for image_url, embedding in zip(image_urls, image_embeddings):
    client.insert(COLLECTION, {"url": image_url, "vetor": embedding})
    
resultados = cliente.search(
    nome_da_colecção=COLLECTION,
    data=query_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Para mais informações, consulte a página do modelo em HuggingFace.