OpenAI

OpenAI / clip-vit-base-patch32

Una variante del modelo multimodal CLIP que utiliza una arquitectura ViT-B/32 Transformer para la codificación de imágenes y un Transformer de autoatención enmascarada para la codificación de texto.

Introducción a clip-vit-base-patch32

El modelo CLIP, desarrollado por OpenAI, tiene como objetivo comprender la robustez en tareas de visión por ordenador y probar la capacidad de los modelos para generalizarse a nuevas tareas de clasificación de imágenes sin entrenamiento previo. La variante clip-vit-base-patch32 utiliza una arquitectura ViT-B/32 Transformer para la codificación de imágenes y un Transformer de autoatención enmascarada para la codificación de texto. Al entrenar estos codificadores para maximizar la similitud de los pares (imagen, texto) mediante pérdidas por contraste, el modelo aprende a asociar las imágenes con las descripciones textuales correspondientes.

Cómo crear incrustaciones multimodales con clip-vit-base-patch32

Hay dos formas principales de generar incrustaciones vectoriales:

  1. Zilliz Cloud Pipelines: una función incorporada en Zilliz Cloud (el Milvus gestionado) que integra perfectamente el modelo clip-vit-base-patch32. Proporciona una solución lista para usar que simplifica la creación y recuperación de incrustaciones vectoriales de texto o imágenes.
  2. SentenceTransformers: la biblioteca Python para sentence_transformers.

Una vez generadas las incrustaciones vectoriales, pueden almacenarse en Zilliz Cloud (un servicio de base de datos vectorial totalmente gestionado e impulsado por Milvus) y utilizarse para semantic similarity search. He aquí cuatro pasos clave:

  1. Registrarse para obtener una cuenta de Zilliz Cloud de forma gratuita.
  2. Configura un clúster sin servidor y obtén el Public Endpoint and API Key.
  3. Crea una colección de vectores e inserta tus incrustaciones vectoriales.
  4. Ejecuta una búsqueda semántica en las incrustaciones almacenadas.

Generar incrustaciones vectoriales a través de Zilliz Cloud Pipelines y realizar una búsqueda de similitud.

Consulte los siguientes recursos para obtener instrucciones paso a paso.

  • Documentación de Zilliz Cloud Pipelines](https://docs.zilliz.com/docs/building-a-rag-app-with-pipelines)
  • Vídeo de demostración de Zilliz Cloud Pipelines](https://zilliz.com/zilliz-cloud-pipelines)

Generar incrustaciones vectoriales mediante SentenceTransformer e insertarlas en Zilliz Cloud para la búsqueda de similitudes.

from PIL import Imagen
from sentence_transformers import SentenceTransformer
from pymilvus import MilvusClient
importar peticiones

#Cargar modelo CLIP
model = SentenceTransformer('clip-ViT-B-32')

# Generar incrustaciones de imagen
urls_imagen = [
    "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)

# Generar incrustaciones de texto
consultas = ["logotipo azul"]
query_embeddings = model.encode(queries)

# Conectar a Zilliz Cloud con el punto final público y la clave API
client = MilvusClient(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

COLECCIÓN = "documentos"
if client.has_collection(nombre_coleccion=COLECCION):
    client.drop_collection(nombre_coleccion=COLECCION)
client.create_collection(
    nombre_colección=COLECCIÓN,
    dimensión=512,
    auto_id=True)

for url_imagen, incrustación in zip(url_imagen, incrustación_imagen):
    client.insert(COLLECTION, {"url": image_url, "vector": embedding})
    
resultados = client.search(
    nombre_colección=COLECCIÓN,
    data=consulta_embeddings,
    consistency_level="Strong",
    output_fields=["text"])

Para más información, consulte la página del modelo en HuggingFace.