Usar a OpenAI e o MongoDB Atlas para melhorar a funcionalidade de pesquisa
Pavel Duchovny5 min read • Published Sep 18, 2024 • Updated Sep 18, 2024
APLICATIVO COMPLETO
Avalie esse Tutorial
A funcionalidade de pesquisa é um componente fundamental de muitos aplicativos modernos da Web. Fornecer aos usuários resultados relevantes com base em suas consultas de pesquisa e filtros adicionais melhora consideravelmente a experiência e satisfação com seu aplicativo.
In this article, we'll go over an implementation of search functionality using OpenAI's GPT-4 model and MongoDB's Atlas Vector search. We've created a request handler function that not only retrieves relevant data based on a user's search query but also applies additional filters provided by the user.
O enriquecimento dos dados de documentos existentes com embeddings é abordado em nosso principal Tutorial do Vector Search.
Considere um cenário real em que temos um aplicativo semelhante ao Airbnb. Os usuários podem realizar uma pesquisa de texto gratuita para ver as acomodações disponíveis e também filtrar os resultados com base em determinados critérios, como o número de quartos, camas ou a quantidade de pessoas que o imóvel pode acomodar.
Para implementar essa funcionalidade, usamos os recursos de pesquisa de texto completo do MongoDB para a pesquisa primária e o modelo GPT-4 da OpenAI para criar embeddings que contenham a semântica dos dados e usem o Vector Search para encontrar resultados relevantes.
Nossa função foi projetada para atuar como um manipulador de solicitações para as solicitações de pesquisa recebidas. Quando uma solicitação de pesquisa chega, primeiro ela extrai os termos e filtros de pesquisa dos parâmetros de consulta. Se nenhum termo de pesquisa for disponibilizado, ela retornará uma amostra aleatória de 30 listagens do banco de dados.
Se um termo de pesquisa estiver presente, a função fará uma solicitação POST para a API da OpenAI, enviando o termo de pesquisa e solicitando uma representação incorporada dele usando um modelo específico. Essa solicitação retorna uma lista de "embeddings," ou representações vetoriais do termo de pesquisa, que é usada na próxima etapa.
Para realizar a parte de filtragem da consulta, estamos usando incorporações e criando uma consulta de filtro para lidar com os filtros básicos que um usuário pode solicitar (no exemplo apresentado, dois quartos e duas camas em cada um).
Vamos considerar um caso de uso mais avançado que pode aprimorar nossa experiência de filtragem. Neste exemplo, estamos permitindo que um usuário execute uma filtragem de forma livre que pode fornecer frases sofisticadas, como "More than 1 bed and rating above 91."
Chamamos a API da OpenAI para interpretar o filtro de texto livre do usuário e traduzi-lo em algo que possamos usar em uma consulta do MongoDB. Enviamos à API uma descrição do que precisamos, com base na estrutura do documento com a qual estamos trabalhando e na busca de texto livre do usuário. Esse texto é alimentado no modelo GPT-4, que retorna um objeto JSON com operadores "range" ou "equals" que podem ser usados em uma consulta de pesquisa do MongoDB.
Em seguida, a função constrói uma query de pesquisa do MongoDB usando a representação incorporada do termo de pesquisa e quaisquer filtros adicionais fornecidos pelo usuário. Essa query é enviada ao MongoDB e a função retorna os resultados como uma resposta – algo semelhante ao que vemos abaixo – para uma pesquisa por "New York high floor" e "More than 1 bed and rating above 91.".
Essa abordagem nos permite usar o potencial do modelo GPT-4 da OpenAI para interpretar a busca de texto livre e o recurso de pesquisa de texto completo do MongoDB para retornar resultados de pesquisa altamente relevantes. O uso de processamento de linguagem natural e IA agrega um nível de flexibilidade e intuitividade para a função de pesquisa que aprimora muito a experiência do usuário.
Entretanto, tenha em mente que essa é uma implementação avançada. Você precisa entender muito bem o funcionamento do MongoDB e da OpenAI antes de tentar implementar uma solução assim. Sempre tenha o cuidado de lidar de forma correta com dados confidenciais e garanta que seu uso de IA esteja em conformidade com a política de casos de uso da OpenAI.