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

Construindo aplicativos de AI e RAG com MongoDB, Anyscale e PyMongo

Pavel Duchovny7 min read • Published Jul 17, 2024 • Updated Jul 17, 2024
IAPythonAtlas
SNIPPET
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Início rápido
star-empty
star-empty
star-empty
star-empty
star-empty
O coluna AI se tornou uma consideração significativa em aplicativos modernos. O setor empresarial está muito interessado em modernização e envolvimento de modelos de AI em aplicativos empresariais. No entanto, o uso de APIs disponíveis publicamente e a dependência de serviços públicos não são adequados para todas as empresas, especialmente se elas exigirem uma segregação de dados segura e em alta escala.
Dito isso, cada vez mais empresas estão migrando para a nuvem para criar aplicativos em escala em ciclos rápidos e competitivos, utilizando serviços de implantação inteligentes e robustos. É aqui que entram a plataforma de dados MongoDB Atlas e a plataforma de computação Anyscale AI.
Anyscale é uma plataforma para executar aplicativos distribuídos usando Key, um framework de código aberto para criar aplicativos escaláveis. A integração do MongoDB Atlas com Anyscale e PyMongopode ajudá-lo a gerenciar e analisar com eficiência grandes conjuntos de dados, aproveitando os recursos de computação distribuída de Rey ao usar o MongoDB como banco de dados de backend.
Usando o para uma inferência rápida e eficiente LLM e a MongoDB Atlas indexação vetorial escalável do para o Atlas Search contextual, os usuários podem construir e implantarRAG fluxos e sistemas de agentes super escaláveis de geração de recuperação baseada em IA.
Neste tutorial, abordaremos os seguintes aspectos principais da criação de um backend RAG escalável para seu aplicativo:
  • Implemente um armazenamento de vetor escalável usando o MongoDB Atlas.
  • Implemente o modelo de incorporação necessário e o LLM no Anyscale.
  • Conecte o armazenamento de vetores com seu serviço distribuído usando os serviços do PyMongo e Anyscale.

Implemente seu cluster do Atlas

Se você não criou um Atlas cluster, siga nosso guia.
Obtenha a cadeia de conexão do MongoDB e permita o acesso a partir de endereços IP relevantes. Para este tutorial, você usará a lista de acesso à rede0.0.0.0/0 .
Para implementações de produção, os usuários podem gerenciar VPCs e redes privadas na plataforma Anyscale e conectá-las com segurança por meio de emparelhamento de VPC ou endpoints privados de nuvem ao Atlas.

Crie uma coleção e um índice vetorial Atlas

Usando o Data Explorer ou uma conexão MongoDB Compass, crie a seguinte collection para hospedar nosso contexto de aplicativo para o processo RAG. Use o nome do banco de dadosanyscale_db e o nome da collection stories. Depois que a collection for criada, vá para a guia Atlas Search (ou a guia Índice no MongoDB Compass usando o botão de alternância de pesquisa do Atlas) e crie o seguinte índice vetorial:
nome : vector_index

Cadastre-se para uma conta Anyscale

Registre-se para uma conta e obtenha créditos de computação gratuitos para experimentar a plataforma Anyscale.

Implantar modelos auto-hospedados para o serviço RAG

O Anyscale oferece um modelo simples de seguir que você pode iniciar a partir da plataforma Anyscale para auto-hospedar de forma ideal os modelos para seu serviço RAG aproveitando o ray-LLM. ray-LLM usa as melhores otimizações da classe de bibliotecas de inferência como o vLLM e oferece uma API compatível com OpenAI para nossos modelos implementados.
Com o Anyscale, você tem a flexibilidade de escolher as configurações de hardware e autoscaling para os modelos, de modo que possa compensar custo e desempenho de acordo com seu caso de uso.
Para os fins de nosso guia, vamos:
  • Inicie este modelo para implementar o modelo de incorporação thenlper/gth-large.
  • Inicie este modelo para implantar o modelo LLM llama-2-70b.
Usaremos os valores padrão, pois eles oferecem um bom ponto de partida para as configurações de hardware e autoscaling.
Para saber mais sobre o modelo usado, consulte a página de documentação do Anyscale.
Observe que alguns modelos exigem aprovação no site do Abraçando a Face.
Depois de implantar os modelos acima, você deve ter dois serviços funcionais com URL de API acessível e tokens de portador:
Digamos que o serviço de incorporação implantado esteja ativado:
Anote o portador da incorporação, pois ele será usado como nossa chave de API para incorporar tarefas relacionadas.
O LLM é implantado em outro endpoint:
Anote o portador LLM, pois ele será usado como nossa chave de API para tarefas relacionadas ao LLM.

Construa o serviço RAG

Crie um espaço de trabalho na plataforma Anyscale

Crie um modelo de espaço de trabalho para construir nosso serviço RAG. Recomendamos que você inicie o modelo Introdução aos serviços para obter um espaço de trabalho em execução que mostre como implantar seu primeiro serviço Anyscale.
Você pode pensar em um espaço de trabalho em qualquer escala como um IDE (Visual Studio) executado em um cluster de computação elasticamente escalável. Espaços de trabalho
Usaremos este espaço de trabalho para criar todos os nossos serviços.
Vamos começar especificando as dependências e variáveis de ambiente que nosso serviço RAG exigirá...
...ao clicar na aba Dependências, conforme mostrado na captura de tela abaixo: Dependencies
Você precisará colocar as chaves de API como variáveis de ambiente em Espaço de trabalho > Seu nome > Dependências:
  • Coloque o portador de incorporação como uma variável de ambiente no espaço de trabalho:
    • EMBEDDING_API_KEY
  • Coloque o portador LLM como uma variável de ambiente em nosso espaço de trabalho:
    • LLM_API_KEY
  • Coloque sua connection string do Atlas (por exemplo, mongodb+srv://<user>:<pass>@cluster0.abcd.mongodb.net/):
    • MONGODB_ATLAS_URI
Lembre-se de substituir os valores pela connection string do cluster e pelas suas chaves.
Agora, você pode usar esses serviços para criar seu serviço RAG para usar endpoints de incorporação privada e LLM. Eles são compatíveis com o cliente OpenAI e, portanto, você pode usar o cliente OpenAI como parte do nosso serviço MongoDB RAG da seguinte forma.
Crie um novo arquivo chamado main.py no diretório raiz do espaço de trabalho.
Esse serviço utiliza o ReyServe integrado ao FastAPI para conectar oMongoDB Atlas ao modelo de incorporação e aos serviços LLM que implantamos anteriormente.
Com Ray Serve, podemos definir uma implantação automaticamente escalonável decorando uma classe onde:
  • Toda inicialização de estado (por exemplo, carregamento de pesos de modelo, criação de banco de dados e conexões de cliente) é definida nométodo " init".
  • As rotas HTTP são definidas envolvendo um método com o construtor FastAPI correspondente, como fizemos com o métodorag_endpoint.
Para gerar um subconjunto de dados de amostra para testar nosso serviço RAG, sugerimos executar o trecho de código abaixo (por exemplo, generate_embeddings.py):
Agora você pode acessar o serviço. Vamos alimentar os dados para criar a coleção com incorporações e preencher nossa coleção "stories " com três documentos de exemplo:
Use o seguinte comando para carregar dados:
A collection foi adicionada com as seguintes histórias e incorporações: Docsincorporados
Observação para escalar horizontalmente a geração de inserção de texto, você pode seguir o modelo de workspace para calcular inserções de texto em escala. Este modelo aproveita as práticas recomendadas para inferência em lote de modelos de inserção para maximizar a taxa de transferência do cluster heterogêneo subjacente de CPUs e GPUs.
Agora, execute o serviço localmente:
Agora, o endpoint RAG está ativo em ras_endpoint:
O resultado esperado:

Implemente o serviço RAG

Agora que você testou o serviço executando localmente no espaço de trabalho, pode prosseguir para implantá-lo como um serviço Anyscale independente, acessível por meio de um URL e um token de portador para usuários externos.
Depois que o comando for propagado com sucesso, você obterá o URL do ponto de extremidade do serviço e seu token "bearer " para autorização:
O serviço que você implementou estará visível na aba Serviços na plataforma Anyscale: Serviço implantado
Quando o serviço estiver íntegro, você poderá acessá-lo por meio da URL e das credenciais fornecidas da mesma forma que no espaço de trabalho:

Conclusão

A integração do MongoDB com o Anyscale e o PyMongo habilita fluxos de trabalho de análise e processamento de dados distribuídos avançados. Ao combinar o MongoDB's document model, a escalabilidade integrada da plataforma de dados para desenvolvedores Atlas e os recursos de pesquisa vetorial com a plataforma de computação distribuída do Anyscale, os desenvolvedores podem criar pipelines RAG escaláveis e aplicativos baseados em IA.

Principais conclusões

  • MongoDB Atlas fornece uma solução de banco de dados gerenciado com indexação vetorial para Atlas Search semântica.
  • A Anyscale oferece uma plataforma para executar aplicativos Python distribuídos usando o Rey.
  • O PyMongo permite fácil interação com o MongoDB a partir do Python. Essas tecnologias permitem a criação de sistemas RAG de alto desempenho que podem ser dimensionados.
Este tutorial passou pela configuração de um serviço RAG básico usando modelos de linguagem MongoDB, Anyscale e open-source. Para casos de uso de produção, considere:
  • Modelos de ajuste fino em dados específicos de domínio.
  • Implementação de cache e lote para melhorar o desempenho.
  • Adiciona monitoramento e observabilidade.
  • Aumentar os recursos de computação conforme necessário.
A integração do MongoDB e do Anyscale abre possibilidades interessantes para a criação de aplicativos de AI que podem processar e raciocinar com eficiência sobre grandes conjuntos de dados. Incentivamos você a explorar mais e ultrapassar os limites do que é possível com essas ferramentas poderosas.
Participe de nossos fóruns e configure sua conta Atlas com Anyscale!
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 Início rápido
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Implementar autenticação por e-mail/senha em React


Apr 02, 2024 | 8 min read
Tutorial

Crie aplicativos inteligentes com o Atlas Vector Search e o Google Vertex AI


Sep 18, 2024 | 4 min read
Tutorial

Conecte com segurança o MongoDB aos clusters Kubernetes oferecidos na nuvem


Sep 09, 2024 | 4 min read
Tutorial

RAG interativo com MongoDB Atlas + API de chamada de função


Sep 18, 2024 | 16 min read
Sumário