Gerar Incorporações

Nesta seção, você aprenderá sobre uma das opções mais convenientes disponíveis para gerar embeddings de texto, que é baseada no framework SentenceTransformers .

Trabalhar com SentenceTransformers é o caminho recomendado enquanto você explora e se familiariza com o uso de embeddings, já que os modelos disponíveis nesse framework podem ser instalados no seu computador, têm um desempenho razoável sem uma GPU e são gratuitos.

Instalar SentenceTransformers

O framework SentenceTransformers é instalado como um pacote Python. Certifique-se de que seu ambiente virtual Python esteja ativado e, em seguida, execute o seguinte comando no seu terminal para instalar este framework:

Como sempre, ao adicionar novas dependências ao seu projeto, é uma boa prática atualizar o arquivo de requisitos:

Selecionando um Modelo

A próxima tarefa é decidir qual modelo de aprendizado de máquina usar para a geração de embeddings. Existe uma lista de modelos pré-treinados na documentação. Como o SentenceTransformers é um framework muito popular, também existem modelos compatíveis criados por pesquisadores não diretamente associados a ele. Para ver uma lista completa dos modelos que podem ser usados, você pode consultar a tag SentenceTransformers no HuggingFace.

Para os propósitos deste tutorial, não é necessário se preocupar demais com a seleção do modelo, pois qualquer modelo será suficiente. A documentação do SentenceTransformers inclui a seguinte nota com relação aos seus modelos pré-treinados:

"Os modelos all-* foram treinados com todos os dados de treinamento disponíveis (mais de 1 bilhão de pares de treinamento) e foram projetados como modelos de propósito geral." O modelo all-mpnet-base-v2 oferece a melhor qualidade, enquanto o all-MiniLM-L6-v2 é 5 vezes mais rápido e ainda oferece boa qualidade."

Isso parece sugerir que o modelo all-MiniLM-L6-v2 deles é uma boa escolha que oferece um bom compromisso entre velocidade e qualidade, então vamos usar este modelo. Localize este modelo na tabela e clique no ícone "info" para ver algumas informações sobre ele.

Um detalhe interessante que é bom ter em mente sobre o modelo escolhido é o comprimento dos embeddings gerados, ou seja, quantos números ou dimensões os vetores resultantes terão. Isso é importante porque afeta diretamente a quantidade de armazenamento que você precisará. No caso de all-MiniLM-L6-v2, os vetores gerados têm 384 dimensões.

Carregando o Modelo

O código Python a seguir demonstra como o modelo é carregado. Você pode tentar isso em um shell do Python.

Na primeira vez que você fizer isso, o modelo será baixado e instalado em seu ambiente virtual, portanto, a chamada pode demorar um pouco para retornar. Uma vez que o modelo esteja instalado, instanciá-lo não deve demorar muito.

Geração de Incorporações

Com o modelo instanciado, você está agora pronto para gerar um embedding. Para fazer isso, passe o texto de origem para o método model.encode() :

O resultado é uma matriz com todos os números que compõem a representação. Como você deve se lembrar, os embeddings gerados pelo modelo escolhido têm 384 dimensões, então este é o comprimento da matriz embedding .

Pronto para criar buscas de última geração?

Uma pesquisa suficientemente avançada não se consegue apenas com o esforço de uma só pessoa. O Elasticsearch é impulsionado por cientistas de dados, especialistas em operações de aprendizado de máquina, engenheiros e muitos outros que são tão apaixonados por buscas quanto você. Vamos nos conectar e trabalhar juntos para construir a experiência de busca mágica que lhe trará os resultados desejados.

Experimente você mesmo(a)