EventoObtenha 50% de desconto no seu ingresso para MongoDB.local Londres em outubro 2. Use o código WEB50Saiba mais >>
Desenvolvedor MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

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
Node.jsIAAtlasPesquisa vetorialJavaScript
APLICATIVO COMPLETO
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Some features mentioned below will be deprecated on Sep. 30, 2025. Learn more.
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.

Pesquisa no contexto do aplicativo do Airbnb

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.
Aplicativo de pesquisa de listagem
O código do aplicativo está disponível no seguinte Repositório GitHub.

Manipulador de solicitações

Para o backend, usamos o Atlas App Services com um endpoint HTTPS "GET" simples. Endpoint
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).

Chamar a OpenAI API

Filtro de IA
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.

Função getSearchAIFilter

Pesquisa e filtros 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.".

Conclusão

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.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Explorando recursos de pesquisa com o Atlas Search


Aug 20, 2024 | 9 min read
Tutorial

Escreva uma função sem servidor com o AWS Lambda e o MongoDB


Sep 23, 2022 | 15 min read
Tutorial

Como usar os módulos de incorporações e reclassificação do Cohere com o MongoDB Atlas


Aug 14, 2024 | 10 min read
Início rápido

Guia de início rápido para aplicativos RAG usando LangChain e LlamaIndex


Sep 18, 2024 | 10 min read
Sumário