Visão geral da busca de similaridade de imagem no Elasticsearch

enterprise-search-search-bar-pattern-light-1680x980.png

Imagine conseguir reproduzir a aparência de uma celebridade com uma captura de tela. Com essa imagem, os usuários poderiam encontrar com rapidez roupas à venda online parecidas com o estilo retratado. Mas essa não é a experiência de busca que vemos hoje.

Os clientes têm dificuldades de encontrar o que precisam e, se não encontram, desistem. Alguns deles não lembram o nome (palavra-chave) do que estão procurando, mas têm uma ideia da aparência real do item. Com a busca vetorial, um recurso integrado do Elastic, as organizações podem implementar a busca de imagem por similaridade. Isso ajuda as organizações a criar uma experiência de busca mais intuitiva, de modo que os clientes possam buscar com facilidade o que precisam usando apenas uma imagem.

Para implementar essa funcionalidade no Elastic, não é preciso ser um especialista em machine learning. Nossa plataforma escalável e de alto desempenho já tem a busca vetorial integrada. Assim, você aproveita as integrações nos frameworks das aplicações, o que facilita manter a interatividade delas.

Nesta série de postagens do blog, você aprenderá as etapas de criação de um protótipo de aplicação de busca de similaridade no Elastic usando seu próprio conjunto de imagens. O front-end desse protótipo de aplicação é implementado com o Flask. Ele pode servir como um esquema para a sua própria aplicação personalizada.

Neste post de visão geral, você analisará os bastidores para entender a arquitetura necessária para aplicar a busca vetorial aos dados de imagem com o Elastic. Se o seu interesse está mais voltado para a busca semântica de texto em vez de imagens, confira a série de posts do blog sobre processamento de linguagem natural (PLN) para aprender mais sobre incorporações de texto e busca vetorial, reconhecimento de entidades nomeadas (NER), análise de sentimentos e como aplicar essas técnicas no Elastic. Vamos começar dando uma visão geral de como tanto a busca de similaridade quanto a busca semântica são baseadas na busca vetorial.

Busca semântica e busca de similaridade — ambas baseadas na busca vetorial

A busca vetorial aproveita o machine learning (ML) para capturar o significado e o contexto de dados não estruturados. A busca vetorial encontra dados similares usando algoritmos de vizinho mais próximo aproximado (ANN). Comparada à busca de texto tradicional (no Elastic, baseada na pontuação BM25), a busca vetorial gera resultados mais relevantes e tem execução mais rápida (sem precisar de otimizações extremas do mecanismo de busca).

Essa abordagem trabalha não só com dados de texto, mas também com imagens e outros tipos de dados não estruturados para os quais os modelos de incorporação genérica estão disponíveis. Quando usamos dados de texto, costumamos chamar de busca semântica; quando o contexto é de imagens e áudio, chamamos de busca de similaridade.

Como gerar incorporações de vetor para imagens?

As incorporações de vetor são representações numéricas de dados e contexto relacionado, armazenadas em vetores de dimensão alta (densa). Os modelos que geram incorporações são geralmente treinados com milhões de exemplos para entregar resultados mais relevantes e precisos.

Para dados de texto, os transformadores do tipo BERT são mais usados para gerar incorporações que funcionem com muitos tipos de texto, disponíveis em repositórios públicos como o Hugging Face. Os modelos de incorporação, que trabalham bem com qualquer tipo de imagem, são um assunto que está em constante processo de pesquisas. O modelo CLIP, usado por nossas equipes para o protótipo do app de similaridade de imagem, é distribuído pela OpenAI e oferece um bom ponto de partida. Para casos de uso especializados e usuários avançados, você pode precisar treinar um modelo de incorporação personalizado para conseguir o desempenho desejado. Depois, você vai precisar da capacidade de busca eficiente. O Elastic é compatível com a busca de vizinho mais próximo aproximado, baseada em HNSW e amplamente adotada.

Como a busca de similaridade capacita as aplicações inovadoras

Como a busca de similaridade capacita a inovação? Em nosso primeiro exemplo, os usuários fazem uma captura de tela e realizam uma busca para encontrar o “look” de sua celebridade favorita.

Você também pode usar a busca de similaridade para o seguinte:

  • Sugerir produtos que são semelhantes aos que outros consumidores compram.
  • Encontrar projetos relacionados existentes ou modelos relevantes em uma biblioteca de elementos visuais de projeto.
  • Encontrar músicas do seu gosto nos serviços de streaming de músicas mais conhecidos, com base no que você ouviu recentemente.
  • Buscar conjuntos de dados robustos de imagens não estruturadas e não marcadas, usando a descrição natural.

Saiba mais sobre o que melhora a busca de similaridade de imagem >>

Visão geral da arquitetura do app de similaridade de imagem

Criar esse tipo de aplicação interativa pode parecer algo complexo. E isso se confirma principalmente quando você tem em mente uma implementação dentro de uma arquitetura tradicional, conforme mostrado abaixo. Mas, no segundo diagrama, vemos como o Elastic simplifica incrivelmente essa arquitetura…

Figura 1: implementação típica de busca de similaridade de imagem (requer serviços externos)

A maioria dos frameworks de aplicação de busca voltados para busca de dados indexados não são compatíveis nativamente com a busca de k-ésimo vizinho mais próximo necessária para a busca vetorial (similaridade) nem com a inferência necessária para aplicar os modelos de PLN. Dessa forma, a aplicação de similaridade de imagem precisa interagir com vários serviços, além da busca central, o serviço de kNN. Se houver processamento de texto, será necessário também interagir com um serviço PLN, como mostrado na Figura 1. A criação e a manutenção de tudo isso pode ser algo complicado.

Em contrapartida, quando a busca de similaridade de imagem é implementada com o uso da Elastic Platform,  a busca vetorial e o PLN são integrados nativamente. A aplicação pode se comunicar de forma nativa com todos os componentes envolvidos. O cluster do Elasticsearch pode executar buscas de kNN e inferência de PLN, como mostrado abaixo.

Figura 2: implementação da busca de similaridade de imagem no Elastic

Por que escolher o Elastic para a busca de similaridade de imagem?

A implementação da busca de similaridade de imagem no Elastic oferece vantagens singulares. Com o Elastic, você pode…

Reduzir a complexidade da aplicação Com o Elastic, não é preciso separar os serviços para executar a busca kNN e vetorizar sua entrada de busca. Os endpoints da busca vetorial e da inferência de PLN são integrados dentro da plataforma de busca escalável. Em outros frameworks conhecidos, a aplicação de redes neurais detalhadas e modelos de PLN ocorre separadamente do redimensionamento das buscas em conjuntos de dados grandiosos. Isso significa que você precisa contratar especialistas, adicionar tempo de desenvolvimento ao seu projeto e separar recursos para gerenciar tudo ao longo do tempo. 

Redimensionar com rapidez No Elastic, você redimensiona e mantém a rapidez. Os modelos convivem com os nós que executam buscas no mesmo cluster, o que se aplica a clusters locais, e até a outros, se você fizer a implantação na nuvem. O Elastic Cloud permite ampliar e reduzir com facilidade no redimensionamento, dependendo da carga de trabalho de busca atual.

A redução do número de serviços necessários para uma aplicação tem benefícios que vão além do redimensionamento. Os resultados podem ser, entre muitos outros, um monitoramento de desempenho simplificado, uma base de manutenção menor e a redução das vulnerabilidades de segurança. As arquiteturas sem servidor futuras transformarão completamente as aplicações, levando-as a um novo nível de simplicidade.

O que vem a seguir?

As partes 1 e 2 desta série detalham como implementar a busca de similaridade de imagem no Elastic. Elas incluem considerações técnicas de projeto para cada um dos componentes da arquitetura de alto nível, mais o código real para implementar na arquitetura do Elastic. 

Para ganhar experiência prática na aplicação da busca vetorial no Elastic, inscreva-se em nosso workshop de prática em busca vetorial. Consulte o nosso hub de eventos virtuais para encontrar o próximo workshop e inscrever-se. Se nesse meio tempo você tiver alguma dúvida sobre qualquer um dos conceitos abordados nesta série, entre em nossa comunidade e participe do fórum de discussão.

Publicado originalmente em 14 de dezembro de 2022; atualizado em 28 de fevereiro de 2023.