Criando gráficos de AI com Rivet e MongoDB Atlas Vector Search para potencializar aplicativos de AI
Cai GoGwilt, Andrew Rothwell, Pavel Duchovny10 min read • Published Sep 18, 2024 • Updated Sep 18, 2024
Avalie esse Tutorial
No domínio da tecnologia de banco de dados e da AI, que avança rapidamente, a convergência de interfaces gráficas intuitivas e ferramentas avançadas de processamento de dados criou um novo horizonte para desenvolvedores e Cientistas de Dados. O MongoDB Compass, com seus recursos avançados e design amigável, se destaca como uma ferramenta de gerenciamento de banco de dados principal. A integração de recursos de AI, como os fornecidos pelo construtor de gráficosRivet AI , força ainda mais, oferecendo facilidade e eficiência sem precedentes no gerenciamento e análise de dados. Este artigo analisa a sinergia entre o MongoDB Atlas, um banco de dados como serviço, e o construtor de gráficos Rivet AI, explorando como essa integração facilita a visualização e a manipulação de dados. O Rivet é uma ferramenta poderosa desenvolvida pela Trigger, um parceiro que, junto com o MongoDB, deseja tornar os fluxos de AI o mais fácil e intuitivo possível.
Vamos dissecar a arquitetura de alto nível que permite aos usuários interagir com seu banco de dados de uma maneira mais dinâmica e perspicaz, aumentando assim sua capacidade de tomar decisões orientadas por dados com rapidez.
Certifique-se de visitar nosso repositório Github para obter códigos de exemplo e um teste desta solução.
A arquitetura de alto nível da integração do MongoDB Atlas e do Rivet AI Graph Builder é centrada em um fluxo de trabalho contínuo que atende tanto à extração de dados quanto à análise subsequente usando insights orientados por IA.
Extração e estruturação de dados : No centro do fluxo de trabalho está a capacidade de extrair e estruturar dados dentro do banco de banco de dados MongoDB Atlas . Os usuários podem definir e manipular documentos e coleções, aproveitando o modelo de esquema flexível do MongoDB. A interface do MongoDB Compass permite query e indexação em tempo real, tornando a recuperação de subconjuntos de dados específicos intuitiva e eficiente.
Análise aprimorada por IA : uma vez que os dados são estruturados, o construtor de gráficos do Rivet AI entra em ação. Ele fornece uma representação visual de operações, como a extração do caminho do objeto , crucial para entender as relações dentro dos dados. O construtor de gráficos permite a construção de queries complexas e transformações de dados sem a necessidade de escrever código extenso.
Vetorização e indexação: Um recurso de destaque é a capacidade de transformar dados textuais ou categóricos em formato vetorial usando IA, comumente conhecido como incorporação. Essas incorporações capturam as relações semânticas entre pontos de dados e são armazenadas no MongoDB. Esse processo de vetorização é fundamental para a execução de operações de pesquisa avançada, como pesquisas de similaridade e predições baseadas em aprendizado de máquina.
Visualização interativa: todo o processo é visualizado interativamente por meio da interface do construtor de gráficos. Cada operação, da correspondência à incorporação da extração e do armazenamento, é representada como nós em um gráfico, tornando o fluxo de dados e as etapas de transformação transparentes e fáceis de modificar.
Pesquisa e recuperação: com vetores gerados por IA armazenados no MongoDB, os usuários podem realizar consultas de pesquisa sofisticadas. Usando técnicas como os k vizinhos mais próximos (k-NN), o sistema pode recuperar documentos semanticamente próximos a uma determinada query, o que é inestimável para sistemas de recomendações, mecanismos de pesquisa e outros aplicativos orientados por IA.
![Ações do plug-in do MongoDB](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fblt45680f6f3999e21e%2F65797072c7b4072cd6ad83b3%2FScreenshot_2023-11-12_at_15.46.40.png&w=3840&q=75)
![Basic Vector Query do Airbnb via incorporações](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fblt401bb230d98ff8b9%2F6579711fbd48af4edcf682c0%2FScreenshot_2023-11-12_at_15.51.12.png&w=3840&q=75)
Instalar o Rivet : para começar a usar o Rivet, visite a página oficial de instalação do Rivet e siga as instruções para baixar e instalar o aplicação Rivet em seu sistema.
Obter uma chave de API OpenAI: o Rivet exige uma chave de API OpenAI para acessar determinados recursos de IA. Registre-se para uma conta OpenAI, se ainda não o fez, e navegue até a seção API para gerar sua chave.
Configurar o Rivet com OpenAI: Depois de instalar o Rivet, abra o aplicação e navegue até as configurações. Insira sua chave de API OpenAI na seção de configurações do OpenAI. Isso permitirá que você use os recursos do OpenAI no Rivet. ![Abra a configuração da IA.](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fbltd3caa84536be458e%2F6579722d57a1e72bc8823fa0%2FScreenshot_2023-11-13_at_11.05.59.png&w=3840&q=75)
![Abra a configuração da IA.](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fbltd3caa84536be458e%2F6579722d57a1e72bc8823fa0%2FScreenshot_2023-11-13_at_11.05.59.png&w=3840&q=75)
Instale o plugin -in MongoDB no Rivet: dentro do Rivet, vá para a seção de plug-ins e procure o plugin -in MongoDB . Instale o plugin -in para habilitar a funcionalidade MongoDB dentro do Rivet. Isso envolverá inserir sua string de conexão do MongoDB Atlas para se conectar ao seu banco de dados de dados.
![Plugin Page](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fblta09158b9a0692cfc%2F6579742b018a7236c21d2608%2FScreenshot_2023-11-12_at_15.45.36.png&w=3840&q=75)
![Plug-in instalado](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fblt34714cae33578bcc%2F657970d5177bfabe34f89a6b%2FScreenshot_2023-11-12_at_15.45.46.png&w=3840&q=75)
Conectar o Rivet ao MongoDB Atlas: depois que o índice do Atlas Search estiver configurado, retorne ao Rivet e use o plugin-in do MongoDB para se conectar ao cluster do MongoDB Atlas fornecendo a string de conexão e as credenciais necessárias. Obtenha sua string de conexão do Atlas cluster e coloque em "Settings" => "Plugins": ![Configurar o plugin com connection string](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fblt4062df12aa14c724%2F657971f4301955c1c0c238d7%2FScreenshot_2023-11-12_at_15.46.19.png&w=3840&q=75)
![Configurar o plugin com connection string](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fblt4062df12aa14c724%2F657971f4301955c1c0c238d7%2FScreenshot_2023-11-12_at_15.46.19.png&w=3840&q=75)
Configurar a Atlas Search: faça login em sua conta do MongoDB Atlas e selecione o cluster onde sua coleção reside. Use o MongoDB Compass para se conectar ao cluster e navegar até a coleção que você deseja indexar.
Crie um índice de pesquisa no Compass: no Compass, clique na aba "Índices" na visualização da collection. Crie um novo índice de pesquisa selecionando a opção "Criar índice". Escolha os campos que deseja indexar e configure as opções de índice de acordo com seus requisitos de pesquisa.
Exemplo:
1 { 2 "name": "default", 3 "type": "vectorSearch", 4 "fields":[ 5 { 6 "type": "vector", 7 "path": "embedding", 8 "numDimensions": 1536, 9 "similarity": "dotProduct" 10 }] 11 }
Construa e execute queries: com a configuração concluída, agora você pode criar queries no Rivet para recuperar e manipular dados em sua collection do MongoDB Atlas usando o índice de pesquisa criado.
Seguindo estas etapas, você poderá aproveitar o poder do MongoDB Atlas Search com os recursos avançados de AI fornecidos pelo Rivet. Não deixe de consultar a documentação oficial para obter instruções detalhadas e dicas de solução de problemas.
Neste exemplo, temos um gráfico básico do Rivet que processa dados a serem armazenados em um banco de MongoDB database usando o
rivet-plugin-mongodb
. O gráfico segue estas etapas:![Armazene incorporação e documentos usando Rivet](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fblt5ac4a22b019b61a1%2F6579761ecde32c599dc4730a%2FScreenshot_2023-11-13_at_10.15.29.png&w=3840&q=75)
Extrair caminho do objeto: o gráfico começa com um objeto que contém informações do produto — por exemplo, { "product": "camiseta", "cor": "green" }. Esses dados são então passados para um nó que extrai informações específicas com base no caminho do objeto , como $.color, para serem usadas em processamento posterior.
Obter incorporação: o próximo nó no gráfico, denominado "OBTER EMBEDDING", usa o serviço OpenAI para gerar um vetor de incorporação a partir dos dados de entrada. Essa incorporação representa a funcionalidade extraída (neste caso, o atributo de cor) em uma forma numérica que pode ser usada para aprendizado de máquina ou pesquisas de similaridade.
Vetor de armazenamento no MongoDB: o vetor de incorporação resultante é então enviado para o nó "Store VECTOR IN MONGODB". Esse nó é configurado com os produtos de pesquisa e coleta de nome do banco de dados de dados, onde armazena a incorporação em um campo chamado incorporação. A operação é concluída com sucesso, conforme indicado pelo status "COMplete".
No MongoDB Compass, vemos as seguintes ações e configurações:
Criação de índice : No índice search.products, um novo índice é criado para o campo de incorporação . Este índice é configurado para pesquisas vetoriais, com 1536 dimensões e usando a
DotProduct
medida de similaridade. Esse índice é do tipoknnVector, " ", adequado para pesquisas dos k vizinhos mais próximos.Índice do Atlas Search: o canto inferior direito da captura de tela mostra a interface do MongoDB Compass para editar odefault índice “”. A configuração JSON fornecida define o índice para Atlas Search, com mapeamentos de campo dinâmicos.
Com esse gráfico e o MongoDB configurado, o aplicativo Rivet é capaz de armazenar dados vetoriais no MongoDB e executar pesquisas vetoriais eficientes usando o recurso Atlas Search do MongoDB. Isso permite que os usuários recuperem rapidamente documentos com base na similaridade dos dados vetoriais, como encontrar produtos com características semelhantes.
Nesta configuração de gráfico do Rivet, vemos o processo de criar uma incorporação a partir da entrada de texto e usá-la para executar uma pesquisa vetorial em um MongoDB database:
![Pesquisa de recuperação de vetores do Atlas](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fblt2a9c5c537bcbfd36%2F65797739177bfa2be3f89aa7%2FScreenshot_2023-11-13_at_10.23.37.png&w=3840&q=75)
![Pesquisa de recuperação de vetores do Atlas](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fblt2a9c5c537bcbfd36%2F65797739177bfa2be3f89aa7%2FScreenshot_2023-11-13_at_10.23.37.png&w=3840&q=75)
Entrada de texto: o gráfico começa com um nó de texto contendo a palavra "bosque". Esta entrada pode representar um termo de pesquisa ou uma funcionalidade de interesse.
Obter incorporação: o nó 'GET EMBEDDING' usa o serviço da OpenAI para converter a entrada de texto em um vetor numérico. Este vetor tem um comprimento 1536 de, indicando a dimensionalidade do espaço de incorporação.
Pesquise no MongoDB os vetores mais próximos com KNN: com o vetor de incorporação obtido, o gráfico usa um nó rotulado como " "SEARCH MONGODB FOR CLOSEST VECTORS WITH KNN. Esse nó é configurado com os seguintes parâmetros:
1 Database: search 2 Collection: products 3 Path: embedding 4 K: 1
Essa configuração indica que o nó executará uma pesquisa de k-vizinhos mais próximos para encontrar o vetor mais próximo na coleção de produtos do banco de dados de pesquisa, comparando com o campo de incorporação dos documentos armazenados lá.
Cores diferentes e suas incorporações associadas. Cada documento contém uma matriz de incorporação, que é comparada com o vetor de entrada para encontrar a correspondência mais próxima com base na medida de similaridade escolhida (não mostrada na imagem).
Esta seção examina um fluxo de trabalho sofisticado que aproveita os recursos de processamento de gráficos do Rivet, os recursos robustos de pesquisa do MongoDB e o poder das incorporações de machine learning. Para facilitar isso, usamos um fluxo de trabalho demonstrado em outro tutorial: AI Shop com o MongoDB Atlas. Por meio desse fluxo de trabalho, pretendemos transformar a lista de compras de um usuário em uma seleção cuidadosamente escolhida de produtos, otimizada por relevância e preferências pessoais. Esse fluxo de trabalho gráfico complexo não apenas melhora o engajamento do usuário, mas também simplifica o caminho da descoberta do produto até a compra, oferecendo assim uma experiência aprimorada de compra de supermercado.
![Visão geral completa do gráfico](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fblt2f410438b83c42ed%2F65797830675c5a52651d2353%2FScreenshot_2023-11-20_at_10.33.37.png&w=3840&q=75)
Entrada do gráfico: o usuário fornece entrada, presumivelmente uma lista de itens ou receitas que deseja comprar.
Pesquisar collection do MongoDB : o gráfico recupera as categorias disponíveis como uma caixa delimitadora para o prompt projetado.
Criação de prompt : um prompt é gerado com base na entrada do usuário, possivelmente para refinar a pesquisa ou interagir com o usuário para obter mais detalhes.
Interação de chat: o grafo acessa os recursos de chat do OpenAI para produzir uma lista baseada em IA de um JSON estruturado.
Extração JSON e extração de caminho do objeto: os dados relevantes são extraídos da resposta JSON do OpenAI chat.
Geração de incorporação: os dados são então processados para criar incorporações, que são representações em alta dimensão dos itens.
União de pesquisas: essas incorporações são usadas para criar uma união de $search queries no MongoDB, o que permite um mecanismo de pesquisa mais sofisticado que pode considerar vários aspectos dos itens, como similaridade no sabor, faixa de preço ou preferência de marca.
Saída do gráfico : a query construída é gerada de volta do gráfico.
1Parte: Entrada para a Pesquisa
do MongoDB A entrada do usuário é recebida e usada para consultar a coleção do MongoDB diretamente. Um sistema de chat pode estar envolvido para refinar esta query ou para interagir com o usuário. O resultado da query é então processado para extrair informações relevantes usando métodos de extração JSON e caminho do objeto .
![Entrada e Pesquisa](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fblt103febf365b4724d%2F657978fff23625beea2f7b34%2FScreenshot_2023-11-20_at_10.34.00.png&w=3840&q=75)
Parte 2: Incorporação na união de pesquisas
![Passe para incorporar e construir Union Search](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fbltba7300c8de327c38%2F6579795bda6bef7e43d2803d%2FScreenshot_2023-11-20_at_10.34.17.png&w=3840&q=75)
![Passe para incorporar e construir Union Search](/developer/_next/image/?url=https%3A%2F%2Fimages.contentstack.io%2Fv3%2Fassets%2Fblt39790b633ee0d5a7%2Fbltba7300c8de327c38%2F6579795bda6bef7e43d2803d%2FScreenshot_2023-11-20_at_10.34.17.png&w=3840&q=75)
O objeto extraído da Parte 1 é obtido e uma incorporação é gerada usando o serviço da OpenAI. Esta incorporação é usada para criar uma query MongoDB $search mais complexa. O nó de código provavelmente contém a lógica para executar uma query de agregação no MongoDB que usa as incorporações geradas para encontrar as melhores correspondências. A saída é então formatada, possivelmente como uma lista de itens de mercearia que correspondem à entrada inicial do usuário, enriquecida pelos embeddings.
Este gráfico demonstra uma integração sofisticada de técnicas de processamento de linguagem natural, consulta a banco de dados e incorporação de aprendizado de máquina para fornecer ao usuário um conjunto avançado de resultados do Atlas Search. Ele recebe uma simples entrada de texto e a transforma em uma query detalhada que entende as nuances das preferências do usuário e dos produtos disponíveis. O resultado final seria um conjunto abrangente e relevante de itens de mercearia personalizados para as necessidades do usuário.
Este snippet de código define uma rota Express.js que trata de
POST
solicitações para o endpoint /aiRivetSearch
. O objetivo da rota é fornecer uma funcionalidade de pesquisa aprimorada por IA para um aplicativo de compras de supermercado, utilizando Rivet para operações gráficas e MongoDB para recuperação de dados.1 // Define a new POST endpoint for handling AI-enhanced search with Rivet 2 app.post('/aiRivetSearch', async (req, res) => { 3 4 // Connect to MongoDB using a custom function that handles the connection logic 5 db = await connectToDb(); 6 7 // Extract the search query sent in the POST request body 8 const { query } = req.body; 9 10 // Logging the query and environment variables for debugging purposes 11 console.log(query); 12 console.log(process.env.GRAPH_ID); 13 console.log("Before running graph"); 14 15 // Load the Rivet project graph from the filesystem to use for the search 16 const project = await loadProjectFromFile('./server/ai_shop.graph.rivet-project'); 17 18 // Execute the loaded graph with the provided inputs and plugin settings 19 const response = await runGraph(project, { 20 graph: process.env.GRAPH_ID, 21 openAiKey: process.env.OPEN_AI_KEY, 22 inputs: { 23 input: { 24 type: "string", 25 value: query 26 } 27 }, 28 pluginSettings: { 29 rivetPluginMongodb: { 30 mongoDBConnectionString: process.env.RIVET_MONGODB_CONNECTION_STRING, 31 } 32 } 33 }); 34 35 36 // Parse the MongoDB aggregation pipeline from the graph response 37 const pipeline = JSON.parse(response.result.value); 38 39 // Connect to the 'products' collection in MongoDB and run the aggregation pipeline 40 const collection = db.collection('products'); 41 const result = await collection.aggregate(pipeline).toArray(); 42 43 // Send the search results back to the client along with additional context 44 res.json({ 45 "result": result, 46 "searchList": response.list.value, 47 prompt: query, 48 pipeline: pipeline 49 }); 50 51 });
Aqui está uma explicação passo a passo:
Inicialização do endpoint:
- Uma rota POST assíncrona /aiRivetSearch é configurada para lidar com as queries de pesquisa recebidas. Conexão do MongoDB:
- O servidor estabelece uma conexão com o MongoDB usando uma função personalizada connectToDb. Essa função presumivelmente é definida em outro lugar na base de código e lida com as especificidades da conexão com a instância do MongoDB. Tratamento de solicitação:
- O servidor extrai a variável de query do corpo da solicitação. Essa query é a entrada de texto do usuário, que será usada para executar o Atlas Search. Registro para depuração:
- A query e as variáveis de ambiente relevantes, como Graph_ID (que provavelmente identifica o gráfico específico a ser usado no Rivet), são registradas no console. Isso é útil para fins de depuração, garantindo que o servidor esteja recebendo as entradas corretas. Carregamento e execução do gráfico:
- O servidor carrega um gráfico de projeto do Rivet de um arquivo no sistema de arquivos do servidor.
- Usando a função runGraph do Rivet, o gráfico carregado é executado com as entradas fornecidas (a query do usuário) e as configurações do plugin -in. As configurações incluem a connection string openAiKey e MongoDB de variáveis de ambiente. Processamento de resposta:
- O resultado da execução do gráfico é registrado e o servidor analisa o aggregation pipeline do MongoDB a partir do resultado. O pipeline define uma sequência de operações de agregação de dados a serem executadas na coleção MongoDB. Agregação do MongoDB:
- O servidor se conecta à collection dos "produtos" no MongoDB.
- Em seguida, ele executa o pipeline de agregação em relação à collection e aguarda os resultados, convertendo o cursor retornado pela função agregada em uma array com toArray(). Geração de resposta:
- Finalmente, o servidor responde à solicitação POST do cliente com um objeto JSON. Esse objeto inclui os resultados da agregação, a lista de pesquisa original do usuário, o prompt usado para a pesquisa e o próprio pipeline de agregação. A inclusão do prompt e do pipeline na resposta pode ser particularmente útil para aplicativos front-end exibirem o contexto da consulta ou para depuração.
Esse código combina AI e consulta de banco de dados para criar uma ferramenta de pesquisa avançada em um aplicativo, fornecendo ao usuário resultados relevantes e personalizados com base em suas entradas.
A integração do MongoDB com o Rivet apresenta uma oportunidade única para criar soluções de pesquisa sofisticadas que são poderosas e centralizadas no usuário. O modelo de dados flexível do MongoDB e o pipeline de agregação eficiente, combinados com a capacidade do Rivet de processar e interpretar estruturas de dados complexas por meio de operações de gráficos, abrem o caminho para a criação de aplicativos dinâmicos e inteligentes.
Ao aproveitar os pontos fortes do MongoDB e do Rivet, os desenvolvedores podem criar recursos avançados de pesquisa que não apenas entendam a intenção por trás das queries dos usuários, mas também forneçam resultados personalizados de forma eficiente. Essa sinergia permite a criação de experiências perfeitas que podem se adaptar às necessidades em evolução dos usuários, aproveitando todo o espectro de interações de dados, desde a entrada até o insight.
Como concluímos, fica claro que essa fusão de tecnologia de banco de dados e processamento de gráficos pode servir como uma base para o desenvolvimento futuro de software - permitindo a criação de aplicativos mais intuitivos, responsivos e escaláveis. O potencial de inovação nesse espaço é vasto e a exploração contínua dessa integração, sem dúvida, produzirá novas metodologias para gerenciamento de dados e engajamento de usuários.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.