Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Acelere sua experiência em AI : simplifique a geração de AI RAG com o MongoDB Atlas e o mecanismo de lógica de AI Vertex do Google

Venkatesh Shanbhag, Maruti C6 min read • Published Aug 16, 2024 • Updated Aug 16, 2024
Atlas
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Imagine um mundo de aplicativos baseados em dados que exigem flexibilidade e potência. É aqui que o MongoDB cresce, com recursos perfeitamente alinhados com essas necessidades atuais. Mas os dados por si só não são suficientes. Os aplicativos também precisam de inteligência. Digite AI generativa (gen AI), uma ferramenta poderosa para criação de conteúdo. Mas e se a AI pudesse fazer ainda mais?
É aqui que entram os agentes de AI . Agindo como o mestre por trás da AI, eles orquestram tarefas, aprenderam continuamente e tomaram decisões. Com os agentes, a AI gen se transforma em uma ferramenta versátil, automatizando tarefas, personalizando interações e melhorando constantemente. Mas como liberamos todo esse potencial?
É aqui que entra o Mecanismo de Racionalização da Vertex AI . O Mecanismo de Racionalização ( LangChain na AI do Vertex) é um serviço gerenciado que ajuda você a construir e implementar uma estrutura de lógica de agentes. É uma plataforma projetada especificamente para aplicativos inteligentes de AI de geração. O Reading Engine é um serviço da Vertex AI que tem todos os benefícios da integração da Vertex AI : segurança, privacidade, observabilidade e escalabilidade. Implemente e expanda facilmente seu aplicativo do desenvolvimento à produção com uma API simples, minimizando o tempo de lançamento no mercado. Como um serviço gerenciado, o Reading Engine permite que você crie e implemente uma estrutura de argumento de agente. Ele oferece flexibilidade em quanto argumentos você delega ao modelo de linguagem grande (LLM) e quanto você controla com código personalizado.
Personagem 1 : Como funciona: MongoDB como armazenamento de vetor para o mecanismo de Racionalização do Google
Personagem 1 : Como funciona: MongoDB como armazenamento de vetor para o mecanismo de Racionalização do Google
Vamos ver como o MongoDB Atlas e o Vertex AI Concerning Engine podem ajudá-lo a construir e implantar uma nova geração de aplicativos inteligentes usando o LangChain na Vertex AI, combinando dados, automação e aprendizado de máquina. Veja um detalhamento dos benefícios: \
  1. Gerenciamento de dados poderoso e flexível com o MongoDB: os recursos do MongoDB, como armazenamento de dados e armazenamento de vetores, são adequados para aplicativos modernos orientados por dados que exigem flexibilidade e escalabilidade.
  2. Aplicativos aprimorados com AI generativa: A AI generativa pode criar conteúdo, potencialmente economizando tempo e recursos.
  3. Fluxos de trabalho inteligentes com agentes AI AI : os agentes de IA podem gerenciar e automatizar tarefas nos backgrounds, melhorando a eficiência. Eles podem aprender com dados e experiência, melhorando constantemente o desempenho do aplicativo. Os agentes podem analisar dados e tomar decisões, potencialmente levando a um comportamento mais inteligente dos aplicativos.
Essa solução é benéfica para vários setores e aplicativos, como chatbots de serviço ao cliente, que podem aprender e personalizar interações, ou plataformas de e-commerce que podem automatizar recomendações de produtos com base em dados de clientes. Vamos dar um detalhamento na configuração.
Nesta publicação, abordaremos como criar um aplicativo de geração aumentada por recuperação (RAG) usando o MongoDB e a Vertex AI e implantá-lo no Reading Engine. Primeiro, comeremos dados no MongoDB Atlas e criaremos incorporações para a solução RAG. Também abordaremos como usar agentes para chamar diferentes ferramentas em retorno, consultando diferentes coleções no MongoDB com base no contexto da consulta de linguagem natural do usuário.

Ingerir dados e vetores no MongoDB usando o LangChain

O MongoDB Atlas simplifica o processo ao armazenar dados complexos (como sequências de cadeias de fontes de cadeia protéico ou perfis de usuário e assim por diante) juntamente com seus embeddings de vetor correspondentes. Isso permite que você aproveite o Atlas Search vetorial para encontrar com eficiência pontos de dados semelhantes, revelando padrões e relacionamentos ocultos. Além disso, o MongoDB Atlas facilita a pesquisa de dados ao permitir que você agrupe dados semelhantes com base em suas representações vetoriais.
O LangChain é um conjunto de ferramentas de código aberto que ajuda os programadores a criar com LLMs. Como o Lego para AI, ele oferece componentes pré-construídos para conectar os modelos com seus dados e tarefas. Isso simplifica a criação de aplicativos Criativos de AI que respondam a perguntas, gerem formatos de texto e muito mais.
Para iniciar a configuração, a primeira etapa é criar um MongoDB Atlas cluster no GCP. Configure as IP entradas da lista de acesso e um usuário do banco de dados para acessar o cluster usando a connection string. Usaremos o Google CoLab para consumir, construir e implantar o RAG.
Em seguida, importe o bloco deanotaçõesPython para sua empresa CoLab, execute os requisitos e ingira o bloco. Importaremos os dados da Wikipedia para Star Federation e Star Trek.
O LangChain simplifica a geração de incorporação de texto com modelos pré-criados como text-embedding e text-embedding-gecko. Esses modelos convertem seus dados de texto em representações vetoriais, capturando significado semântica em um espaço de alta dimensionamento. Isso facilita a recuperação e comparação eficientes de informações dentro dos fluxos de trabalho de argumento da LangChain. Estamos usando o modelo text-embedding-004 do Google para converter os dados de entrada em incorporações nas 768 dimensões.
1def get_text_embeddings(chunks):
2from vertexai.language_models import TextEmbeddingModel
3model = TextEmbeddingModel.from_pretrained("text-embedding-004")
4inputs = chunks[0]
5embeddings = model.get_embeddings(chunks)
6return [embedding.values for embedding in embeddings]
As incorporações geradas são armazenadas no MongoDB Atlas juntamente com os dados reais. Antes de executar a função write_to_mongoDB, atualize o URI para se conectar ao cluster MongoDB. Passe db_name e coll_name para a função em que você deseja armazenar as incorporações.
1def write_to_mongoDB(embeddings, chunks, db_name, coll_name):
2from pymongo import MongoClient
3client = MongoClient("URI", tlsCAFile=certifi.where())
4db = client[db_name]
5collection = db[coll_name]
6
7for i in range(len(chunks)):
8 collection.insert_one({
9 "chunk": chunks[i],
10 "embedding": embeddings[i]
11 })

Mecanismo de argumentos

Modelo

A primeira etapa para criar seu agente do Reading Engine é especificar o modelo de AI generativo. Aqui, estamos usando o mais recente "gemini-1.5-pro" LLM, que formará a base do componente RAG.
1model = "gemini-1.5-pro-001"

Criação de ferramenta: RAG usando MongoDB Atlas com LangChain

O LangChain atua como a ponte entre seu modelo generativo e o MongoDB Atlas, permitindo que ele consulte vetores. Ele pega uma "query" como entrada, a transforma em incorporações usando os modelos de incorporaçãodo Googlee recupera os dados mais semanticamente próximos do MongoDB Atlas. Abaixo está o script de uma ferramenta que gera vetores para a string de query , executa Atlas Search de vetor no MongoDB Atlas e retorna o documento relevante para o LLM. Atualize o banco de dados de nomes de função e o nome da collection para ler de diferentes collections. Podemos inicializar várias ferramentas e passar para o agente na próxima etapa.
1def star_wars_query_tool(
2query: str) :
3"""
4Retrieves vectors from a MongoDB database and uses them to answer a question related to Star wars.
5
6Args:
7 query: The question to be answered about star wars.
8
9Returns:
10 A dictionary containing the response to the question.
11"""
12from langchain.chains import ConversationalRetrievalChain, RetrievalQA
13from langchain_mongodb import MongoDBAtlasVectorSearch
14from langchain_google_vertexai import VertexAIEmbeddings, ChatVertexAI
15from langchain.memory import ConversationBufferMemory, ConversationBufferWindowMemory
16from pymongo import MongoClient
17
18from langchain.prompts import PromptTemplate
19
20
21prompt_template = """Use the following pieces of context to answer the question at the end. If you don't know the answer, just say that you don't know, don't try to make up an answer. Do not return any answers from your own knowledge.
22
23{context}
24Question: {question}
25"""
26# create prompt for LLM
27PROMPT = PromptTemplate(
28 template=prompt_template, input_variables=["context", "question"]
29)
30
31# Add your connection string in srv format below in place of URI
32client = MongoClient("URI")
33db = client["embeddings"]
34
35embeddings =VertexAIEmbeddings(model_name="text-embedding-004")
36
37# initilize the vector store
38vs = MongoDBAtlasVectorSearch(
39 collection=db["sample_starwars_embeddings"],
40 embedding=embeddings,
41 index_name="vector_index",
42 embedding_key="embedding",
43 text_key="chunk",
44)
45
46# initilize LLM
47llm = ChatVertexAI(
48 model_name="gemini-1.5-pro",
49 convert_system_message_to_human=True,
50 max_output_tokens=1000,
51)
52
53# initilize retriver for the vector store object created
54retriever = vs.as_retriever(
55 search_type="mmr", search_kwargs={"k": 10, "lambda_mult": 0.25}
56)
57memory = ConversationBufferWindowMemory(
58 memory_key="chat_history", k=5, return_messages=True
59)
60
61# initilize the conversation chain
62conversation_chain = ConversationalRetrievalChain.from_llm(
63 llm=llm,
64 retriever=retriever,
65 memory=memory,
66 combine_docs_chain_kwargs={"prompt": PROMPT},
67)
68
69# query and get the response from conversation chain
70response = conversation_chain({"question": query})
71
72return response

Definir um agente

O agente Connection Engine da Vertex AI vai além de apenas ferramentas de tomada de decisão, transformando os agentes do LangChain em assistentes de AI versáteis que podem lidar com dados, conectar-se a sistemas e tomar decisões complexas, tudo enquanto entende e responde a textos. Isso permitirá que você os adapte a tarefas específicas, como escolher a ferramenta certa para o trabalho. A união de modelos de linguagem poderosos como o Gêmeos com agentes de argumento aprimora suas habilidades, permitindo que eles entendam e gerem linguagem natural, tornando-os mestres em processamento de comunicação e informações — uma adição valiosa para seu conjunto de ferramentas.
Ao incorporar uma camada de argumento, seu agente aproveita as ferramentas fornecidas para orientar o usuário final a alcançar seu objetivo final. Você pode definir várias ferramentas ao mesmo tempo e o LLM descobrirá qual ferramenta usar com base na relevância para a pergunta que está sendo feita e na descrição fornecida na própria ferramenta. Estamos usando a classe padrão do LangchainAgent, que pode ser personalizadaainda mais com base em suas necessidades.
Fluxo de trabalho para o caso de uso acima que examinamos de ponta a ponta
Imagem 2: fluxo de trabalho para o caso de uso acima que analisamos de ponta a ponta
Com o código abaixo, inicializaremos o agente de ferramentas para executar o Atlas Search vetorial nas coleções do MongoDB . O start_services_query_tool lerá a partir da coleção sample_starwards_embeddings. Da mesma forma, crie uma ferramenta para ler a partir da coleção sample_startrek_embeddings. O mecanismo de lógica redirecionará a query para ler a partir da coleção Starrs ou Star Trek com base no argumento e na solicitação definidos pelo usuário ao criar as ferramentas.
1agent = reasoning_engines.LangchainAgent(
2model=model,
3tools=[star_wars_query_tool, star_trek_query_tool],
4agent_executor_kwargs={"return_intermediate_steps": True},
5)
6agent.query(input="tell me about star wars?")

Distribuir no mecanismo de argumentos

Com o modelo, as ferramentas e a lógica de argumento definidos e testados localmente, é hora de implantar seu agente como um serviço remoto na Vertex AI. Nós usamos:
1remote_agent = reasoning_engines.ReasoningEngine.create(
2agent,
3requirements=[
4 "google-cloud-aiplatform[langchain,reasoningengine]",
5 "cloudpickle==3.0.0",
6 "pydantic==2.7.4",
7 "langchain-mongodb",
8 "pymongo",
9 "langchain-google-vertexai",
10
11],
12)
O resultado incluirá os detalhes de implantação do Mecanismo de Racionalização que podem ser usados para implementar o aplicativo de usuário.
1INFO:vertexai.reasoning_engines._reasoning_engines:reasoning_engine = vertexai.preview.reasoning_engines.ReasoningEngine('projects/project-id/locations/us-central1/reasoningEngines/reasoning-engine-id')
2
3from vertexai.preview import reasoning_engines
4REASONING_ENGINE_RESOURCE_NAME = "projects/project-id/locations/us-central1/reasoningEngines/reasoning-engine-id"
5remote_agent = reasoning_engines.ReasoningEngine(REASONING_ENGINE_RESOURCE_NAME)
6response = remote_agent.query(input="Tell me about episode 1 from wars")
Você também pode depurar e otimizar seus agentes ativando o rastreamento no mecanismo de lógica. Visualize o bloco deanotações que explica como você pode usar o Cloud Trace para explorar os dados de rastreamento para obter insights.
Todos os aspectos do seu agente são personalizáveis, desde as principais instruções e prompts iniciais até o gerenciamento do histórico de conversas para uma experiência perfeita e sensível ao contexto em várias queries. Siga as instruções Python bloco deanotaçõesPython do repositório doGithub para criar seu próprio agente. A solução nesta publicação pode ser facilmente estendida para ter um agente com várias e qualquer tipo de ferramentas LangChain (como chamadas e extensões de função) e ter um aplicativo com vários agentes. Falaremos sobre os multiagentes com MongoDB e GCP em detalhes em nossos artigos de acompanhamento.
Quer $500 em créditos para o Google Marketplace? Basta conferir nosso programa, assinar o Atlas e solicitar seus créditos hoje mesmo, e experimentar o Atlas no marketplace da GCP para seu novo volume de trabalho.
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 Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Artigo

Como trabalhar com os dados da Johns Hopkins University sobre COVID-19 no MongoDB Atlas


Sep 09, 2024 | 8 min read
Tutorial

Como implantar o MongoDB Atlas com AWS CloudFormation


Mar 20, 2024 | 6 min read
Artigo

Como habilitar o teste local e automático de recursos baseados na pesquisa do Atlas


Jun 12, 2024 | 8 min read
Tutorial

Sincronize seu aplicativo móvel com o MongoDB Atlas e o Google Cloud MySQL


Feb 08, 2024 | 6 min read
Sumário