Pesquisa semântica multimodal com imagens e texto
Como seres humanos, interpretamos o mundo através dos nossos sentidos. Ouvimos sons, vemos imagens, vídeos e textos, muitas vezes sobrepostos uns aos outros. Compreendemos o mundo através destas múltiplas modalidades e da relação entre elas. Para que a inteligência artificial possa realmente igualar ou exceder as capacidades humanas, tem de desenvolver esta mesma capacidade de compreender o mundo através de múltiplas lentes em simultâneo.
Nesta publicação, no vídeo que a acompanha (brevemente) e no bloco de notas, apresentaremos as recentes descobertas em modelos que podem processar texto e imagens em conjunto. Vamos demonstrar isto construindo uma aplicação de pesquisa semântica que vai além da simples correspondência de palavras-chave - compreende a relação entre o que os utilizadores estão a pedir e o conteúdo visual que estão a pesquisar.
O que torna este projeto particularmente excitante é o facto de ser construído inteiramente com ferramentas de código aberto: a base de dados de vectores Milvus, as bibliotecas de aprendizagem automática da HuggingFace e um conjunto de dados de críticas de clientes da Amazon. É extraordinário pensar que, há apenas uma década, construir algo deste género teria exigido recursos proprietários significativos. Atualmente, estes poderosos componentes estão disponíveis gratuitamente e podem ser combinados de formas inovadoras por qualquer pessoa com curiosidade para experimentar.
A nossa aplicação de pesquisa multimodal é do tipo retrieve-and-rerank. Se estiver familiarizado com o retrieval-augmented-generation (RAG), é muito semelhante, só que o resultado final é uma lista de imagens que foram classificadas por um modelo de visão de linguagem de grande dimensão (LLVM). A consulta de pesquisa do utilizador contém texto e imagem, e o alvo é um conjunto de imagens indexadas numa base de dados vetorial. A arquitetura tem três passos - indexação, recuperação e classificação (semelhante a "geração") - que resumimos de seguida.
Indexação
A nossa aplicação de pesquisa tem de ter algo para pesquisar. No nosso caso, usamos um pequeno subconjunto do conjunto de dados "Amazon Reviews 2023", que contém texto e imagens de avaliações de clientes da Amazon em todos os tipos de produtos. É possível imaginar uma pesquisa semântica como a que estamos a construir como um complemento útil para um sítio Web de comércio eletrónico. Utilizamos 900 imagens e descartamos o texto, embora observemos que este bloco de notas pode ser escalado para o tamanho de produção com a base de dados correta e implementações de inferência.
A primeira peça de "magia" no nosso pipeline é a escolha do modelo de incorporação. Usamos um modelo multimodal recentemente desenvolvido, chamado Visualized BGE, que é capaz de incorporar texto e imagens em conjunto, ou separadamente, no mesmo espaço com um único modelo em que os pontos próximos são semanticamente semelhantes. Recentemente, foram desenvolvidos outros modelos deste tipo, por exemplo, o MagicLens.
A figura acima ilustra: a incorporação para [uma imagem de um leão de lado] mais o texto "vista frontal disto" está próxima de uma incorporação para [uma imagem de um leão de frente] sem texto. O mesmo modelo é utilizado para entradas de texto e imagem e entradas só de imagem (bem como entradas só de texto). Desta forma, o modelo é capaz de compreender a intenção do utilizador na forma como o texto de consulta se relaciona com a imagem de consulta.
Incorporamos as nossas 900 imagens de produtos sem o texto correspondente e armazenamos as incorporações numa base de dados vetorial utilizando o Milvus.
Recuperação
Agora que a nossa base de dados está construída, podemos servir uma consulta do utilizador. Imaginemos que um utilizador vem com a consulta: "uma capa de telemóvel com isto" mais [uma imagem de um Leopardo]. Ou seja, está à procura de capas de telemóvel com estampas de pele de leopardo.
Note-se que o texto da consulta do utilizador dizia "isto" em vez de "a pele de um Leopardo". O nosso modelo de incorporação deve ser capaz de ligar "isto" àquilo a que se refere, o que é um feito impressionante, dado que a iteração anterior de modelos não era capaz de lidar com instruções tão abertas. O documento MagicLens dá outros exemplos.
Inserimos o texto e a imagem da consulta em conjunto e efectuamos uma pesquisa de semelhanças na nossa base de dados de vectores, devolvendo os nove melhores resultados. Os resultados são apresentados na figura acima, juntamente com a imagem de consulta do leopardo. Verifica-se que o primeiro resultado não é o mais relevante para a consulta. O sétimo resultado parece ser o mais relevante - é uma capa de telemóvel com uma impressão de pele de leopardo.
Geração
Parece que a nossa pesquisa falhou no facto de o resultado principal não ser o mais relevante. No entanto, podemos corrigir isso com uma etapa de reordenamento. Talvez esteja familiarizado com a reavaliação de itens recuperados como sendo um passo importante em muitos pipelines RAG. Utilizamos o Phi-3 Vision como modelo de reclassificação.
Em primeiro lugar, pedimos a um LLVM para gerar uma legenda para a imagem consultada. O LLVM gera:
"A imagem mostra um grande plano do rosto de um leopardo, com destaque para o pelo manchado e os olhos verdes."
Em seguida, alimentamos esta legenda, uma única imagem com os nove resultados e a imagem de consulta, e construímos uma mensagem de texto pedindo ao modelo para reordenar os resultados, dando a resposta como uma lista e fornecendo uma razão para a escolha da melhor correspondência.
O resultado é visualizado na figura acima - o item mais relevante é agora o melhor resultado - e a razão dada é:
"O item mais adequado é o que tem o tema leopardo, que corresponde à instrução de consulta do utilizador para uma capa de telemóvel com um tema semelhante."
O nosso re-classificador LLVM foi capaz de efetuar a compreensão de imagens e texto e melhorar a relevância dos resultados da pesquisa. Um artefacto interessante é que o re-classificador só deu oito resultados e deixou cair um, o que realça a necessidade de guardrails e de resultados estruturados.
Resumo
Neste post, no vídeo que o acompanha (em breve) e no bloco de notas, construímos uma aplicação para pesquisa semântica multimodal em texto e imagens. O modelo de incorporação foi capaz de incorporar texto e imagens conjunta ou separadamente no mesmo espaço, e o modelo de fundação foi capaz de introduzir texto e imagem enquanto gerava texto em resposta. Mais importante ainda, o modelo de incorporação foi capaz de relacionar a intenção do utilizador de uma instrução aberta com a imagem de consulta e, dessa forma, especificar como o utilizador queria que os resultados se relacionassem com a imagem introduzida.
Isto é apenas uma amostra do que está para vir num futuro próximo. Veremos muitas aplicações de pesquisa multimodal, compreensão e raciocínio multimodais, etc., em diversas modalidades: imagem, vídeo, áudio, moléculas, redes sociais, dados tabulares, séries temporais, o potencial é ilimitado.
E no centro destes sistemas está uma base de dados vetorial que contém a "memória" externa do sistema. O Milvus é uma excelente escolha para este fim. É de código aberto, tem todas as funcionalidades (ver este artigo sobre a pesquisa de texto integral no Milvus 2.5) e é escalável de forma eficiente para milhares de milhões de vectores com tráfego à escala da Web e latência inferior a 100 ms. Saiba mais na documentação do Milvus, junte-se à nossa comunidade Discord e esperamos vê-lo no nosso próximo encontro de dados não estruturados. Até lá!
Recursos
Caderno de notas: "Pesquisa multimodal com comentários da Amazon e LLVM Reranking"
Vídeo do Youtube AWS Developers (em breve)
Modelo de incorporação: Cartão de modelo BGE visualizado
Modelo de incorporação alternativo: Repositório de modelos MagicLens
Artigo: "MagicLens: Recuperação auto-supervisionada de imagens com instruções abertas"
Conjunto de dados: Comentários da Amazon 2023
- Indexação
- Recuperação
- Geração
- Resumo
- Recursos
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word