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
Avalie esse Tutorial
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
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: \
- 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.
- Aplicativos aprimorados com AI generativa: A AI generativa pode criar conteúdo, potencialmente economizando tempo e recursos.
- 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.
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.
1 def get_text_embeddings(chunks): 2 from vertexai.language_models import TextEmbeddingModel 3 model = TextEmbeddingModel.from_pretrained("text-embedding-004") 4 inputs = chunks[0] 5 embeddings = model.get_embeddings(chunks) 6 return [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.
1 def write_to_mongoDB(embeddings, chunks, db_name, coll_name): 2 from pymongo import MongoClient 3 client = MongoClient("URI", tlsCAFile=certifi.where()) 4 db = client[db_name] 5 collection = db[coll_name] 6 7 for i in range(len(chunks)): 8 collection.insert_one({ 9 "chunk": chunks[i], 10 "embedding": embeddings[i] 11 })
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.
1 model = "gemini-1.5-pro-001"
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.
1 def star_wars_query_tool( 2 query: str) : 3 """ 4 Retrieves vectors from a MongoDB database and uses them to answer a question related to Star wars. 5 6 Args: 7 query: The question to be answered about star wars. 8 9 Returns: 10 A dictionary containing the response to the question. 11 """ 12 from langchain.chains import ConversationalRetrievalChain, RetrievalQA 13 from langchain_mongodb import MongoDBAtlasVectorSearch 14 from langchain_google_vertexai import VertexAIEmbeddings, ChatVertexAI 15 from langchain.memory import ConversationBufferMemory, ConversationBufferWindowMemory 16 from pymongo import MongoClient 17 18 from langchain.prompts import PromptTemplate 19 20 21 prompt_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} 24 Question: {question} 25 """ 26 # create prompt for LLM 27 PROMPT = PromptTemplate( 28 template=prompt_template, input_variables=["context", "question"] 29 ) 30 31 # Add your connection string in srv format below in place of URI 32 client = MongoClient("URI") 33 db = client["embeddings"] 34 35 embeddings =VertexAIEmbeddings(model_name="text-embedding-004") 36 37 # initilize the vector store 38 vs = 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 47 llm = 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 54 retriever = vs.as_retriever( 55 search_type="mmr", search_kwargs={"k": 10, "lambda_mult": 0.25} 56 ) 57 memory = ConversationBufferWindowMemory( 58 memory_key="chat_history", k=5, return_messages=True 59 ) 60 61 # initilize the conversation chain 62 conversation_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 70 response = conversation_chain({"question": query}) 71 72 return response
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.
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.
1 agent = reasoning_engines.LangchainAgent( 2 model=model, 3 tools=[star_wars_query_tool, star_trek_query_tool], 4 agent_executor_kwargs={"return_intermediate_steps": True}, 5 ) 6 agent.query(input="tell me about star wars?")
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:
1 remote_agent = reasoning_engines.ReasoningEngine.create( 2 agent, 3 requirements=[ 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.
1 INFO:vertexai.reasoning_engines._reasoning_engines:reasoning_engine = vertexai.preview.reasoning_engines.ReasoningEngine('projects/project-id/locations/us-central1/reasoningEngines/reasoning-engine-id') 2 3 from vertexai.preview import reasoning_engines 4 REASONING_ENGINE_RESOURCE_NAME = "projects/project-id/locations/us-central1/reasoningEngines/reasoning-engine-id" 5 remote_agent = reasoning_engines.ReasoningEngine(REASONING_ENGINE_RESOURCE_NAME) 6 response = 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.