Voltar para o blog
Machine Learning

Hugging Face lança modelos multimodais com Sentence Transformers para busca e reranking

9 de abril de 2026
16:24
busca semânticaHugging Facemachine learningvisão computacionalsentence transformersembeddingmodelos multimodaisInteligência Artificialreranking
Hugging Face lança modelos multimodais com Sentence Transformers para busca e reranking

A Hugging Face lançou uma atualização importante na biblioteca Sentence Transformers, agora com suporte a modelos multimodais para embedding e reranking. Disponível a partir da versão 5.4, essa novidade permite codificar e comparar entradas em texto, imagens, áudio e vídeo pela mesma API, ampliando as aplicações em busca semântica, recuperação visual e pipelines multimodais.

Modelos multimodais: conceito e benefícios

Modelos tradicionais convertem texto em vetores fixos, enquanto os multimodais mapeiam diferentes tipos de dados (texto, imagem, áudio, vídeo) para um espaço vetorial compartilhado. Isso possibilita, por exemplo, comparar uma consulta textual com documentos em imagens ou vídeos usando funções de similaridade comuns.

Imagem relacionada ao artigo de HuggingFace
Imagem de apoio da materia original.

Já os modelos multimodais do tipo reranker avaliam a relevância entre pares mistos — texto, imagem ou combinação —, aprimorando a ordenação dos resultados, embora com maior custo computacional por processar cada par individualmente.

Quem pode usar e como acessar

Desenvolvedores e pesquisadores que atuam com sistemas de busca, recuperação de informação e geração aumentada por recuperação (RAG) que envolvam múltiplas modalidades podem se beneficiar. Exemplos incluem busca visual, comparação cruzada entre texto e imagem, e reranking multimodal.

Para utilizar, instale a biblioteca sentence-transformers com os extras das modalidades desejadas. Por exemplo, para imagens:

pip install -U "sentence-transformers[image]"

Também é possível combinar áudio, vídeo e outras modalidades conforme a necessidade.

Modelos avançados baseados em Vision-Language Models (VLM), como o Qwen3-VL-2B, exigem GPUs com pelo menos 8 GB de VRAM para desempenho adequado; variantes maiores (8B) requerem cerca de 20 GB. Usuários sem GPU local podem usar serviços em nuvem ou Google Colab. A execução em CPU é possível, porém lenta, recomendando-se modelos CLIP ou somente texto nesses casos.

Uso prático dos modelos multimodais

Embedding multimodal

Carregar um modelo multimodal segue o mesmo processo dos modelos de texto, com a necessidade atual do argumento revision para acessar integrações ainda em merge:

from sentence_transformers import SentenceTransformer
model = SentenceTransformer(
    "Qwen/Qwen3-VL-Embedding-2B",
    revision="refs/pr/23"
)

O método encode() aceita imagens via URL, caminho local ou objeto PIL, além de texto e outras modalidades:

img_embeddings = model.encode([
    "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg",
    "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg",
])

Similaridade cruzada entre modalidades

Como os embeddings multimodais compartilham o mesmo espaço vetorial, é possível calcular diretamente similaridades entre textos e imagens:

Imagem relacionada ao artigo de HuggingFace
Imagem de apoio da materia original.
text_embeddings = model.encode([
    "A green car parked in front of a yellow building",
    "A bee on a pink flower",
])
similarities = model.similarity(text_embeddings, img_embeddings)

Embora os valores absolutos sejam menores devido ao modality gap, a ordenação semântica é preservada, garantindo eficácia na busca cruzada.

Codificação de consultas e documentos

Para recuperação, recomenda-se encode_query() e encode_document(), que aplicam prompts específicos para consultas e documentos, melhorando a precisão:

query_embeddings = model.encode_query([
    "Find me a photo of a vehicle parked near a building",
])
doc_embeddings = model.encode_document([
    "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg",
])

Reranking multimodal

Modelos reranker multimodais, como o Qwen/Qwen3-VL-Reranker-2B, pontuam a relevância de pares mistos, ordenando documentos de diferentes modalidades em relação a uma consulta:

from sentence_transformers import CrossEncoder
model = CrossEncoder(
    "Qwen/Qwen3-VL-Reranker-2B",
    revision="refs/pr/11"
)
query = "A green car parked in front of a yellow building"
documents = [
    "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg",
    "A vintage Volkswagen Beetle painted in bright green sits in a driveway.",
    {"text": "A car in a European city", "image": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg"},
]
rankings = model.rank(query, documents)

O reranker destaca corretamente os documentos mais relevantes, combinando texto e imagens para maior precisão.

Padrão recomendado: recuperar e reranquear

Uma prática eficiente é usar um modelo de embedding para recuperar rapidamente candidatos e um reranker para refinar a ordenação:

embedder = SentenceTransformer("Qwen/Qwen3-VL-Embedding-2B", revision="refs/pr/23")
query_embedding = embedder.encode_query("revenue growth chart")
corpus_embeddings = embedder.encode_document(document_screenshots)
similarities = embedder.similarity(query_embedding, corpus_embeddings)
top_k_indices = similarities.argsort(descending=True)[0][:10]

reranker = CrossEncoder("nvidia/llama-nemotron-rerank-vl-1b-v2", trust_remote_code=True)
top_k_documents = [document_screenshots[i] for i in top_k_indices]
rankings = reranker.rank("revenue growth chart", top_k_documents)

Formatos de entrada e suporte multimodal

Os modelos aceitam diversos formatos por modalidade:

  • Texto: strings simples
  • Imagem: URLs, caminhos locais, objetos PIL, arrays NumPy ou tensores Torch
  • Áudio: arquivos, URLs, arrays, dicionários com taxa de amostragem
  • Vídeo: arquivos, URLs, arrays, dicionários com metadados
  • Multimodal: dicionários com chaves para modalidades, ex: {"text": "legenda", "image": "url"}

Para verificar modalidades suportadas, use as propriedades modalities e o método supports():

print(model.modalities)  # ex: ['text', 'image', 'video', 'message']
print(model.supports("image"))  # True ou False

Disponibilidade e preços

Os modelos multimodais estão disponíveis gratuitamente no Hugging Face Hub, respeitando os limites da plataforma. Para uso intensivo ou com recursos avançados, a Hugging Face oferece planos pagos com acesso a GPUs, armazenamento e serviços empresariais. Consulte a página oficial de preços para mais informações.

Links úteis