Use o MongoDB Atlas Stream Processing e o Vector Search para atualizar, armazenar e pesquisar continuamente incorporações por meio de uma interface unificada.
Casos de uso: Gen AI
Setores: Finanças, Assistência à saúde, Varejo
Produtos: MongoDB Atlas, MongoDB Atlas Vector Search, MongoDB Atlas Stream Processing
Parceiros: Confluent, Amazon Web Services
Visão Geral da Solução
Fornecer modelos com dados atualizados é essencial para que eles possam usar o contexto relevante ao oferecer recomendações além de uma abordagem de IA de tamanho único. Os sistemas de geração aumentada de recuperação (RAG) permitem que as organizações baseiem modelos de linguagem grandes (LLMs) e outros modelos fundamentais na verdade de seus dados proprietários. No entanto, manter os dados subjacentes é complexo. Para garantir que os modelos forneçam respostas precisas, é essencial atualizar continuamente as incorporações vetoriais que formam o núcleo dos sistemas RAG para representar as informações mais recentes disponíveis.
Além disso, a escolha do modelo de incorporação afeta a qualidade dos resultados de IA porque modelos diferentes são otimizados para diferentes finalidades e tipos de dados. Por exemplo, um modelo de incorporação formado em uma linguagem específica criará embeddings mais contextualmente apropriados para essa linguagem do que um modelo de uso geral formado em várias linguagens.
Ao aproveitar os recursos nativos de Processamento de Stream e Vector Search do MongoDB Atlas, essa solução permite que os desenvolvedores atualizem, armazenem e pesquisem continuamente incorporações em uma única interface.
Essa solução é relevante para muitos setores e casos de uso, incluindo:
Serviços financeiros: documentos financeiros, políticas legais e contratos geralmente usam vários idiomas e diferem com base nas regulamentações do país. Capacitar agentes de crédito com uma interface alimentada por IA usando dados relevantes e novos para agilizar a criação de crédito pode otimizar os fluxos de trabalho bancários.
assistência médica e seguro: os sistemas Rag que ajudam a atualizar os registros de pacientes ou a subscrever apólices de seguro precisam de acesso a informações atualizadas.
Varejo: os dados contextuais atualizados são cruciais para que os sistemas RAG selecionem o modelo de incorporação correto, permitindo experiências personalizadas para os clientes, independentemente do idioma que usam.
Arquiteturas de referência
Esta solução utiliza os seguintes componentes:
Cluster do MongoDB Atlas: permite o armazenamento flexível de vários tipos de dados, incluindo texto, metadados associados e incorporações vetoriais correspondentes em documentos. O índice vetorial no Atlas suporta diretamente queries de pesquisa semântica eficientes dentro do banco de dados, que você pode usar com o MongoDB Aggregation Framework.
Cluster Kafka Confluent: recebe atualizações de documento e novos documentos de produtores e os disponibiliza para processamento posterior pelo Atlas Stream Processing.
Atlas Stream Processing: se inscreve nos streams de evento gerados pelo MongoDB, filtra informações relevantes, transforma eventos e os emite para o tópico Kafka correspondente. Ele também se inscreve no cluster Kafka para processar atualizações e propagar alterações de volta ao banco de dados.
Serviço de metadados:
Gerador de incorporação: script Python que se inscreve nos tópicos de entrada do Kafka. Para cada mensagem recebida, é gerada uma incorporação usando um modelo especializado em aprendizado de máquina.
Extrator de tags: script Python que analisa os dados recebidos para identificar metadados estruturados relevantes para enriquecer o documento para indexação, pesquisa ou análise.
Figura 1. Arquitetura dimensionável de referência de atualizações de vetores com o MongoDB
Abordagem do modelo de dados
Na solução de demonstração, o modelo de dados é uma coleção de documentos que encapsulam todas as informações relevantes sobre uma faixa. O modelo de dados de documento do MongoDB armazena diversos tipos de dados junto com suas incorporações, permitindo a recuperação fácil e rápida de dados.
Os dados de exemplo têm dois conjuntos de dados disponíveis para importação: archive_lyrics_small1
e archive_lyrics_small2
. Os documentos nesses conjuntos de dados têm a seguinte estrutura:
{ "title": "Hurricane", "artist": "Bob Dylan", "year": 1976, "lyrics": "...", "language": "en", "genre": "rock", "duration": 61, "lyrics_embeddings_en": [...], "tags": ["man", "story", "night"] // only in archive_lyrics_small1 }
Nesta solução, o Atlas Stream Processing utiliza os seguintes campos de dados para o tópico de saída:
lyrics_embeddings_en
/lyrics_embeddings_es
: vetor de incorporação de letras específicas do idiomatags
: Somente no conjunto de dadosarchive_lyrics_small1
, lista as palavras que ocorrem com frequência nas letras
Construir a solução
O repositório do Github contém instruções detalhadas para replicar essa solução, permitindo atualizar suas incorporações de forma assíncrona e em escala com o MongoDB Atlas.
O README
orienta você nas seguintes etapas:
Carregar o conjunto de dados
Importante
Se você ainda não tiver uma conta do Atlas, entre agora e crie um cluster.
Use o script fornecido para carregar os dados com mongoimport.
Configurar um cluster do Kafka no Confluent
Siga as instruções na documentação do Confluent para criar um Kafka Cluster.
Copie sua URL de inicialização da guia Cluster Settings
no Confluent e use a API REST do Kafka para criar uma chave de API para conectar ao seu cluster.
Crie os tópicos SpanishInputTopic
, EnglishInputTopic
e OutputTopic
na aba Topics
no Confluent.
Configurar o registro de conexão do Stream Processing
Use a URL de inicialização do Confluent no registro de conexão para configurar uma nova conexão entre o Atlas Stream Processing e o Kafka Cluster.
Conecte a Instância de Atlas Stream Processing ao cluster do Atlas .
Configurar Atlas Stream Processing
Copie sua string de conexão para se conectar à Instância de Processamento de Stream.
Use a concha MongoDB (mongosh) para configurar os pipelines e conexões na Instância de Processamento de Fluxo.
Crie um índice do Atlas Vector Search
Crie e configure um índice do Atlas Vector Search para lyrics_embeddings_es
. Você deve estruturar o índice de pesquisa da seguinte maneira:
{ "fields": [ { "type": "vector", "path": "lyrics_embeddings_es", "numDimensions": 768, "similarity": "cosine" } ] }
Crie e configure um índice do Atlas Vector Search para lyrics_embeddings_en
. Você deve estruturar o índice de pesquisa da seguinte maneira:
{ "fields": [ { "type": "vector", "path": "lyrics_embeddings_en", "numDimensions": 384, "similarity": "cosine" } ] }
Pesquise e analise documentos em grande escala usando o Vector Search
Utilize o script query_client.py fornecido para executar queries semânticas utilizando o Atlas Vector Search em uma interface de chat.
Principais Aprendizados
Mantenha a relevância da incorporação: atualize regularmente as incorporações de dados para garantir que suas pesquisas semânticas permaneçam precisas.
Otimizar o emparelhamento do modelo de idioma: certifique-se de que seu LLM esteja alinhado com o idioma dos seus dados para aumentar a relevância e a precisão dos resultados da pesquisa.
Adote incorporações flexíveis: o modelo de dados flexível do MongoDB permite armazenar incorporações diretamente junto com seus dados, independentemente do tamanho ou do modelo usado para gerá-los.
Escolha a função de similaridade correta: a eficácia das suas pesquisas semânticas depende da função de similaridade escolhida. Adapte a seleção ao seu caso de uso específico.
Gerar incorporações assíncronas: crie incorporações de forma assíncrona para manter o desempenho do aplicação e escalar as funções de geração horizontalmente.
Autores
David Sanchez, MongoDB