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

AI Shop: o poder da LangChain, OpenAI e MongoDB Atlas trabalhando juntos

Pavel Duchovny7 min read • Published Nov 29, 2023 • Updated Aug 01, 2024
Node.jsIAPesquisaJavaScriptAtlas
APLICATIVO COMPLETO
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Artigo
star-empty
star-empty
star-empty
star-empty
star-empty
Construir aplicativos de AI nos últimos meses fez minha mente correr para lugares diferentes, inspirada principalmente por ideias e novas maneiras de interagir com fontes de informação. Após oito anos no MongoDB, posso ver perfeitamente o potencial do MongoDB quando se trata de alimentar aplicativos de AI. Curiosamente, é a mesma razão fundamental pela qual os usuários escolheram o MongoDB e MongoDB Atlas até a era da AI generativa, e é a flexibilidade do document model.
O uso de dados não estruturados nem sempre é fácil. Os dados produzidos pelos modelos da GenAI são considerados altamente não estruturados. Eles podem vir em diferentes formatos de texto, além de sons, imagens e até vídeos. Os aplicativos são eficientes e criados corretamente quando podem governar e prever com segurança as estruturas de dados e as entradas. Portanto, para criar aplicativos de AI bem-sucedidos, precisamos de um método para transformar dados não estruturados no que chamamos de documentossemiestruturados ou flexíveis.
Uma vez que podemos ajustar nosso fluxo de dados em um padrão flexível, podemos utilizar esses dados com eficiência e fornecer ótimos recursos para nossos usuários.

RAG como uma abordagem fundamental para criar aplicativos de AI

À vista disso, a geração aumentada por recuperação (RAG) surge como uma metodologia fundamental no domínio do desenvolvimento da AI . Essa abordagem sinergiza a recuperação de informações e processos generativos para refinar a qualidade e a relevância dos resultados de AI . Ao aproveitar a flexibilidade do document model inerente ao MongoDB e ao MongoDB Atlas, o RAG pode incorporar dinamicamente uma ampla array de dados não estruturados, transformando-os em um formato semiestruturado mais gerenciável. Isso é particularmente vantajoso ao lidar com os dados variados e, muitas vezes, imprevisíveis produzidos pelos modelos de AI , como saídas textuais, trechos auditórios, conteúdo visual e sequências de vídeo.
A façanha do MongoDB está em sua capacidade de atuar como um backlink robusto para os processos RAG, garantindo que os aplicativos de IA possam não apenas acomodar, mas também crescer com a variedade de fluxos de dados de IA generativos.MongoDB AtlasintegradaAtlas Vector Search​Esse desalinhamento contínuo entre a estrutura de dados e a novidade da IA posiciona o MongoDB como um ativo essencial na era da GenAI, abrindo novos horizontes para desenvolvedores e usuários
Quando conseguimos encaixar nosso fluxo de dados em um padrão flexível, temos o poder de utilizar esses dados de forma eficiente e oferecer ótimos recursos aos nossos usuários.

Instruir para estruturar estruturas de AI não estruturadas

Para demonstrar a capacidade dos modelos Gen AI, como a geração de bate-papo/imagem Open AI, decidiu criar um pequeno aplicativo de mercearia que fornece um catálogo de produtos ao usuário. A busca por supermercados on-line é agora uma parte importante dos hábitos de compras em todo o mundo e aposto que quase todos os leitores já os utilizaram.
No entanto, eu queria levar a experiência do usuário a outro nível, fornecendo um chatbot que antecipasse os requisitos de supermercado dos usuários. Seja a partir de listas predefinidas, trocas de texto casuais ou consultas específicas sobre receitas, como " Preciso cozinhar uma lasanha, o que devo comprar? ".
UI da AI Shop
A pilha que decidi usar é a seguinte:
  • Um cluster MongoDB Atlas para armazenar produtos, categorias e pedidos.
  • Índices de pesquisa do Atlas para potencializar a pesquisa vetorial (pesquisa semântica baseada no significado).
  • Express + LangChain para orquestrar minhas tarefas de AI.
  • API de plataforma OpenAI - GPT4, GPT3.5 como meu mecanismo de AI.
RAG-AI-Sshop
Percebi rapidamente que, em qualquer aplicativo que criarei com AI, quero controlar a forma como minhas entradas são passadas e produzidas pela AI, pelo menos sua estrutura de modelo.
Portanto, na consulta da loja, quero que o usuário forneça uma solicitação e que a AI produza uma lista de possíveis compras.
Como não sei quantos ingredientes existem ou quais são suas categorias e tipos, preciso que o modelo seja flexível o suficiente para descrever a lista de forma que meu aplicativo possa percorrê-la com segurança mais adiante no funil de pesquisa.
A estrutura que decidiu usar é:
Além disso, não quero que o AI me forneça ingredientes ou produtos que estejam longe das categorias que estou vendendo em minha loja. Por exemplo, se um usuário solicitar uma bicicleta em um mercado, o AI deverá ter contexto de que não é razoável ter algo para o usuário. Portanto, as categorias relevantes que estão armazenadas no banco de dados devem ser fornecidas como contexto para o modelo.
Aproveitamos a biblioteca LangChain para transformar o esquema em um conjunto de instruções e produzir um prompt de engenharia que consiste nos documentos de categoria que buscamos em nosso banco de dados e nas instruções de extração.
A query do usuário tem um requisito flexível a ser criado por um esquema legível por nosso aplicativo. O restante do código só precisa validar e acessar as listas bem formatadas de produtos fornecidas pelo LLM.
Aqui está um exemplo de como essa lista pode se parecer: Documento com Embeddings

LLM para incorporações

Uma lista flexível estruturada como essa me permitirá criar incorporações para cada um dos termos considerados relevantes pelo LLM para a entrada do usuário e as categorias que minha loja tem.
Por razões de simplicidade, vou incorporar apenas o nome do produto.
Mas, em aplicativos reais, podemos fornecer os atributos para filtragem de pesquisa de inventário de quantidade ou unidade.
A partir deste ponto, a codificação e a agregação que buscarão três candidatos para cada produto são diretas.
Será uma pesquisa de vetor para cada item conectado em uma união com o próximo item até o final da lista.

Embeddings para agregação

Por fim, remodelarei os dados para que cada termo tenha uma array de seus três candidatos para simplificar a codificação do frontend.
Aqui está o meu código do lado do servidor NodeJS para construir a pesquisa vetorial:

O processo

O processo que apresentamos aqui pode ser aplicado a uma grande quantidade de casos de uso. Vamos repeti-lo de acordo com o gráfico abaixo. RAG-AI-Diagram Nesse contexto, enriquecemos nosso catálogo de produtos com incorporações no título/descrição dos produtos. Também fornecemos as categorias e instruções de estrutura como contexto para projetar nosso prompt. Por fim, encaminhamos o prompt pelo LLM, o que cria uma lista gerenciável que pode ser transformada em respostas e perguntas de acompanhamento.
A incorporação de resultados de LLM pode criar uma cadeia de pesquisas semânticas cujos resultados podem ser direcionados aos LLM ou manipulados de forma inteligente pela estrutura de agregação robusta.
Eventualmente, os dados se tornam argila que podemos moldar e transformar usando poderosos LLMs e combinando-os com pipelines de agregação para adicionar relevância e poder computacional às nossas aplicações.
Para obter o exemplo completo e o tutorial passo a passo para configurar o supermercado de demonstração, use o projeto GitHub.

Resumo

Concluindo, a viagem de integração da AI com o MongoDB mostra o impacto transformativo da combinação de capacidades de AI generativas com o modelo de dados dinâmicos do MongoDB. A flexibilidade do document model do MongoDB acabou sendo a base para gerenciar a natureza imprevisível dos dados gerados por IA, abrindo caminho para aplicativos inovadores que antes eram inconcebíveis. Por meio do uso de esquemas estruturados, pesquisas vetoriais e a avançada estrutura de agregação, os desenvolvedores agora podem criar aplicativos com tecnologia de IA que não apenas entendem e preveem a intenção do usuário, mas também oferecem níveis sem precedentes de personalização e eficiência.
O estudo de caso do aplicativo de supermercado exemplifica a aplicação prática desses conceitos, ilustrando como uma abordagem de dados bem estruturada pode levar a interações de AI mais inteligentes e responsivas. MongoDB se destaca como um parceiro ideal para o desenvolvimento de aplicativos de AI, permitindo que os desenvolvedores estruturem, enriqueçam e aproveitem dados não estruturados de maneiras que abrem novas possibilidades.
À medida que continuamos a explorar a sinergia entre MongoDB e AI, é aparente que o futuro do desenvolvimento de aplicativos está em nossa capacidade de desenvolver técnicas de gerenciamento de dados que possam acompanhar os rápidos progressos da tecnologia de AI. O papel do MongoDB nessa evolução é essencial, pois ele fornece a agilidade e o poder necessários para transformar os desafios dos dados não estruturados em oportunidades de novidade e crescimento na era da GenAI.
Quer continuar a conversa? Encontre-nos na comunidade de desenvolvedores do MongoDB.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Iniciar a conversa

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Artigo
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Exemplo de código

MergeURL - Aplicativo de exemplo Python


Jul 07, 2022 | 3 min read
Tutorial

Como construir uma REST API sem servidor com o MongoDB Atlas


Aug 30, 2024 | 5 min read
Tutorial

Combinando seu banco de dados com o armazenamento de blog do Azure usando o Data Federation


Aug 29, 2024 | 7 min read
Tutorial

Introdução ao Atlas Stream Processing: como criar seu primeiro processador de fluxo


Aug 13, 2024 | 4 min read
Sumário