Criando uma demonstração de recomendador de produtos multimodal usando Milvus e Streamlit
A demonstração de Recuperação de Imagens Compostas do Milvus apresenta a busca reversa de imagens, enquanto a demonstração de RAG Multimodal do Milvus usa essa técnica para recomendações de produtos. Basta carregar uma imagem e inserir instruções em texto; o modelo de embedding multimodal MagicLens do Google codificará tanto a imagem quanto o texto em um único vetor multimodal. Esse vetor é então usado para encontrar os produtos da Amazon mais semelhantes em um banco de dados vetorial Milvus.
🎨🔍 Apresentando a Magia do Milvus: Busca de Imagens & Compras Inteligentes!
Você já desejou encontrar produtos apenas mostrando uma foto e descrevendo o que quer? Bem, agora você pode! 🛍️✨
Veja como nossas demonstrações incríveis funcionam:
📸 Tire uma foto & digite o que você está procurando
🧙♂️ Nossa Magia do Milvus transforma sua entrada em um "vetor multimodal" especial (sofisticado, né?)
🕵️♀️ Esse vetor vira um superdetetive para pesquisar em nosso banco de dados vetorial Milvus
🎉 Voilà! Ele encontra produtos da Amazon que correspondem à sua imagem e descrição
Neste blog, mostraremos como executar a demonstração de RAG Multimodal do Milvus.
Tecnologias Usadas para o Recomendador de Produtos Multimodal
O MagicLens da Google DeepMind é um modelo de embedding multimodal que usa uma arquitetura de codificador duplo para processar texto e imagens com base em CLIP (OpenAI 2021) ou CoCa (Google Research 2022). O MagicLens oferece suporte a diversas tarefas de recuperação, incluindo imagem-para-imagem e texto-para-imagem, ao fundir pesos treinados em um espaço vetorial comum. Treinado em 36,7 milhões de triplas, ele pode realizar tarefas de recuperação imagem-para-imagem, texto-para-imagem e combinação multimodal texto-imagem, superando modelos anteriores com um tamanho de modelo significativamente menor.
O GPT-4o da OpenAI é um Grande Modelo de Linguagem Multimodal generativo da OpenAI que integra texto, imagens e outros tipos de dados em um único modelo, aprimorando modelos de linguagem tradicionais. Essa IA avançada oferece compreensão e processamento mais profundos de informações complexas, melhorando a precisão e a consciência de contexto. Ela oferece suporte a diversas aplicações, desde processamento de linguagem natural até visão computacional.
O Milvus é um banco de dados vetorial distribuído e de código aberto para armazenar, indexar e pesquisar vetores em cargas de trabalho de IA generativa. Sua capacidade de realizar busca híbrida, filtragem de metadados, reranking e lidar eficientemente com trilhões de vetores torna o Milvus uma escolha preferencial para cargas de trabalho de IA e machine learning. O Milvus pode ser executado localmente, em um cluster ou hospedado no Zilliz Cloud.
O Streamlit é uma biblioteca Python de código aberto que simplifica a criação e execução de aplicações web. Ele permite que desenvolvedores criem e implantem dashboards, relatórios de dados e interfaces simples de machine learning usando scripts Python diretos, sem exigir amplo conhecimento de tecnologias web como CSS ou frameworks JavaScript como Node.js.
Preparar Dados
Os dados nesta demonstração vêm do conjunto de dados Amazon Reviews 2023. A fonte de dados original inclui 54 milhões de avaliações de usuários de 48 milhões de itens em 33 categorias, como eletrodomésticos, beleza, roupas, esportes, atividades ao ar livre e uma categoria adicional “Unknown”.
Usaremos apenas um subconjunto de 5K itens dos dados disponíveis, com amostragem uniforme por categoria. Baixe as imagens executando download_images.py.
$ python download_images.py
Cada linha de dados de produto consiste em metadados do item (como nome da categoria e classificação média das avaliações de usuários) e URLs de imagens para miniaturas e imagens grandes do produto.
Para dados vetoriais, esta demonstração usa um único vetor de embedding de imagem grande por produto.
Instruções de configuração para o MagicLens
Este guia orienta você na configuração do ambiente e no download dos pesos do modelo para o MagicLens, que é um poderoso sistema de recuperação de imagens desenvolvido pela Google DeepMind. Para informações mais detalhadas, visite o repositório do MagicLens no GitHub.
Configure o ambiente
- Crie um ambiente conda:
$ conda create --name magic_lens python=3.9
- Ative o ambiente:
$ conda activate magic_lens
- Clone o repositório Scenic:
$ git clone https://github.com/google-research/scenic.git
- Navegue até o diretório Scenic:
$ cd scenic
- Instale o Scenic:
$ pip install
- Instale as dependências do CLIP:
$ pip install -r scenic/projects/baselines/clip/requirements.txt
- Instale o Jax:
Se você estiver usando uma GPU para processamento, talvez precise instalar a versão correspondente do Jax para GPU. Siga as instruções em a página da documentação do JAX para etapas detalhadas.
Aqui estão exemplos para versões específicas do CUDA (somente Linux):
Instalação do CUDA 12:
$ pip install --upgrade "jax[cuda12_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
Instalação do CUDA 11:
$ pip install --upgrade "jax[cuda11_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html
Baixe os pesos do modelo localmente
- Navegue de volta para a pasta principal:
$ cd .. # This will take you back to the main directory where you cloned the demo.
- Baixe o modelo (pode exigir autenticação):
$ gsutil cp -R gs://gresearch/magiclens/models ./
Crie a coleção Milvus e salve vetores
O servidor Milvus nesta demonstração é o Milvus Lite com Milvus Client sem esquema.
Crie uma coleção, codifique cada imagem em vetores e carregue os dados vetoriais no Milvus executando index.py.
$ python index.py
Esta etapa codificará cada imagem em um vetor de 768 dimensões. Para cada produto na amostra, o vetor da imagem, junto com os metadados de produto associados, é salvo em uma coleção Milvus chamada “cir_demo_large” com AUTOINDEX (HNSW).
Indexação e pesquisa no Milvus
Em tempo de execução, quando você faz uma pesquisa reversa por uma imagem e texto, o Milvus pesquisará os top_k = 100 vetores de imagem mais próximos usando a distância vetorial COSINE.
O Milvus classifica automaticamente os top_k em ordem decrescente (já que valores maiores de distância COSINE significam que eles estão mais próximos).
Execute o front-end do servidor Streamlit
Atualize seu arquivo local
cfg.py, substituindo os nomes dos caminhos pelos seus caminhos locais para imagens e pesos do modelo.Inicie o aplicativo executando no seu terminal:
$ streamlit run ui.py
- Usando o aplicativo:
Carregue uma imagem para orientar a pesquisa de produtos.
Insira uma instrução de texto para orientar a pesquisa.
Clique em "Search" para encontrar produtos semelhantes no banco de dados vetorial Milvus.
Clique em "Ask GPT" para recomendações com tecnologia de IA.
Figura 1- A interface do nosso aplicativo de demonstração
Figura 1: A interface do nosso aplicativo de demonstração
Como este aplicativo funciona:
A função Search incorporará sua imagem e texto em um vetor usando o modelo de Incorporação Multimodal, MagicLens, que é o mesmo modelo usado para incorporar imagens de produtos armazenadas no banco de dados vetorial Milvus. Em seguida, o Milvus realizará uma busca vetorial por Vizinho Mais Próximo Aproximado (ANN) para encontrar as top_k imagens de produtos mais próximas do seu vetor de entrada.
A função Ask GPT chamará o modelo generativo multimodal GPT-4o mini da OpenAI. Ela pegará as 25 principais imagens dos resultados da busca, as colocará em um prompt e as enviará ao modelo. Em seguida, o GPT-4o mini selecionará a melhor imagem e explicará o motivo de sua escolha.
Figura 2- As respostas fornecidas pelo GPT-4o mini
Figura 2: As respostas fornecidas pelo GPT-4o mini
Referências
Recuperação Multimodal de Imagens no bootcamp: https://github.com/milvus-io/bootcamp/tree/master/bootcamp/tutorials/quickstart/apps/cir_with_milvus
RAG Multimodal com Recomendações de Re-ranqueamento no bootcamp: https://github.com/milvus-io/bootcamp/tree/master/bootcamp/tutorials/quickstart/apps/multimodal_rag_with_milvus
Modelo Google MagicLens: https://github.com/google-deepmind/magiclens
Vídeo sobre a teoria por trás desta demonstração: https://youtu.be/uaqlXRCvjG4?si=e83DnUsLZvVnWt-0&t=51
Continue lendo

Introducing Business Critical Plan: Enterprise-Grade Security and Compliance for Mission-Critical AI Applications
Discover Zilliz Cloud’s Business Critical Plan—offering advanced security, compliance, and uptime for mission-critical AI and vector database workloads.

Zilliz Named "Highest Performer" and "Easiest to Use" in G2's Summer 2025 Grid® Report for Vector Databases
Zilliz shines in G2's Summer 2025 Grid® Report as both "Highest Performer" and "Easiest to Use," solving the performance-usability dilemma.

Announcing the General Availability of Zilliz Cloud BYOC on Google Cloud Platform
Zilliz Cloud BYOC on GCP offers enterprise vector search with full data sovereignty and seamless integration.




