Criação de um agente de AI aprimorado para memória com o laudo do Aconnection no Amazon Cama do MongoDB Atlas
Igor Alekseev, Venkatesh Shanbhag, Mohammad Daoud Farooqi8 min read • Published Oct 02, 2024 • Updated Oct 29, 2024
Avalie esse Tutorial
E se pudermos criar um sistema baseado em conhecimento projetado para fornecer informações personalizadas e responder às query dos usuários? E fazer isso aproveitando uma arquitetura de pesquisa robusta que lida com eficiência tanto queries simples baseadas em palavras-chave quanto queries complexas de conversação? Considere um caso de uso para um serviço de consultoria de viagens que ofereça recomendações personalizadas e responda a perguntas relacionadas a roteiros e planejamento de viagens. Ao combinar técnicas avançadas de pesquisa com compreensão de linguagem natural, esse sistema forneceria respostas precisas e informativas personalizadas para as necessidades individuais do usuário. Esse sistema pode ser visto como um agente- uma entidade computacional capaz de entender seu ambiente, receber entradas, realizar ações por meio da utilização de ferramentas e usar a cognição suportada por modelos de base. Esses agentes, habilitados com memória de curto e longo prazo, são entidades sofisticadas de AI que tomam decisões inteligentes e executam ações com base na conscientização ambiental. Vamos dar uma olhada em alguns exemplos.
figura 1: conversa entre o chatbot do agente de viagens e o usuário, utilizando palavras-chave para realizar uma pesquisa de correspondência exata.
Neste exemplo, o grandes modelos de linguagem (LLM) — Cláudia da Atrópico — aproveita as funções da Linguagem de Query do MongoDB (MQL) como ferramentas especializadas para pesquisar e recuperar diretamente resultados com base nas consultas do usuário. Ao utilizar os recursos de query estruturada do MQL, o LLM navega com eficiência nos bancos de dados, executando queries precisas personalizadas para as necessidades do usuário. Essa abordagem garante respostas contextualmente precisas e, ao mesmo tempo, otimiza o desempenho ao reduzir o tempo de processamento desnecessário. A integração do MQL permite que o LLM lide com queries complexas e grandes conjuntos de dados com precisão, demonstrando a poderosa sinergia entre o entendimento de linguagem natural orientado por IA e técnicas avançadas de recuperação de dados no MongoDB.
figura 2: conversa entre o chatbot do agente de viagens e o usuário, utilizando a pesquisa semântica vetorial do MongoDB sem depender de palavras-chave específicas.
Nessa interação de exemplo , o LLM utiliza a funcionalidade Vector Search do MongoDB, definida como uma ferramenta especializada, juntamente com o histórico de conversas do usuário, para extrair todos os locais sugeridos anteriormente para serem visitados. Ao empregar essa pesquisa vetorial avançada, o agente LLM analisa eficientemente os dados e recupera a recomendações mais bem classificadas com base na relevância contextual e nas preferências do usuário.
O MongoDB Vector Search permite que o LLM Go além da pesquisa tradicional baseada em palavras-chave, aproveitando incorporações e compreensão semântica para avaliar a qualidade e a relevância dos locais no histórico de conversas. Isso permite uma recuperação de dados mais inteligente e detalhada, garantindo que a resposta não seja apenas precisa, mas também personalizada às necessidades do usuário.
Ao combinar o poder do Vector Search do MongoDB com dados contextuais, o agente LLM demonstra recursos avançados na query de grandes conjuntos de dados, identificação de padrões e classificação de resultados. Essa abordagem mostra o poder da integração do processamento de linguagem natural orientado por IA com tecnologias modernas de banco de dados de dados, como o MongoDB Vector Search , para fornecer aos usuários respostas mais precisas, contextualmente sensíveis e de alto valor com processamento de dados robusto.
Observação: nesta implementação, o agente de AI é solicitado a explicar quais ferramentas foram utilizadas para gerar a resposta final. Em um aplicação do mundo real, a resposta seria concisa e abordaria diretamente as consultas do usuário.
No cenário acima, as queries de usuários se enquadram em dois tipos principais: queries de correspondência simples usando palavras-chave específicas como localização, país ou nome de destino, e queries de conversação que buscam informações mais detalhadas sobre um local. Um sistemade geração aumentada de recuperação (RAG), que combina recuperação de informações com modelos generativos, pode lidar com ambos os tipos de forma eficaz. O RAG recupera informações relevantes de um banco de dados de dados e, em seguida, gera uma resposta coerente. Ao criar um RAG, a incorporação de toda a query do usuário pode ser redundante ou ineficiente em alguns cenários em que os dados estão em formato estruturado. Para queries simples baseadas em palavras-chave, as correspondências diretas são suficientes. Enquanto queries de conversação mais complexas são melhor atendidas pela pesquisa semântica, fornecendo compreensão contextual mais profunda.
A pilha de aplicação é baseada no Amazon Web Services. A lógica principal é executada no Amazon Web Services Lambda, conectando-se ao Amazon Camarque e MongoDB Atlas. Lambda usa o Class da Athropic no Amazon Camas para gerar incorporações e tomar decisões sobre o uso de pesquisas diretas ou pesquisa semântica no MongoDB Atlas. Os usuários interagem com nosso aplicação por meio do Amazon Lex, que fornece uma interface de linguagem natural.
figura 3: diagrama de arquitetura ilustrando a integração da Amazon Web Services, Agroupic e MongoDB para criar um aplicação de ponta a ponta aprimorado por IA .
- Amazon Web Services Base (hospedagem de modelo)Amazon Web Services Cama do Rock terá um papel fundamental na hospedagem e orquestração dos modelos Agroup e dos modelos de incorporação do Tiger, fornecendo uma base sólida para o gerenciamento e a execução de modelos. A infraestrutura escalável da Ler mais garantirá o funcionamento contínuo dos modelos de AI , permitindo o processamento rápido de grandes conjuntos de dados e garantindo a capacidade de resposta do sistema sob cargas de trabalho variáveis. Sua abordagem de serviços gerenciados simplifica a integração e as complexidades operacionais da execução de modelos antrópicos em escala.
- 1 . . . . . . . . . . . . . . . . . . ...
OsMongoDB Atlas. . . . . Classe fornecerá insights mais profundos e recomendações mais inteligentes analisando padrões nos dados da viagem e nas incorporações armazenadas. Ao aumentar o banco de dados de dados com aprimoramentos orientados por IA, os modelos de Class garantem resultados mais precisos e contextualmente relevantes para os usuários.
- MongoDB Atlas (Armazenamento de dados)
O MongoDB Atlas servirá como o principal banco de dados de dados , responsável por armazenar com segurança dados de recomendações de viagens estruturados e não estruturados. Além disso, ele hospedará incorporações e o histórico de bate-papo que são essenciais para os recursos avançados de pesquisa e recomendações, permitindo sugestões de viagens mais relevantes e personalizadas. Com seu design nativo da nuvem, o Atlas garante escalabilidade, alta disponibilidade e integração perfeita com outros componentes da arquitetura.
figura 4: o MongoDB Atlas fornece memória de longo prazo, recuperação de incorporação de vetor e recursos de pesquisa semântica, permitindo que o agente gerencie e recupere dados de conversação com eficiência.
- Lambda (Backend do aplicativo)
Amazon Web Services Lambda será utilizado para implantar e executar o aplicação de backend, oferecendo uma arquitetura sem servidor que é dimensionada automaticamente com base na demanda. O back-end lidará com várias lógicas de negócios, desde o processamento de solicitações até a interação com o MongoDB Atlas e Amazon Web Services Ler mais. O modelo orientado a eventos da Lambda reduz a sobrecarga de gerenciamento de infraestrutura, permitindo a implantação de aplicação eficiente, econômicas e flexível.
- Lex (Interface de usuário conversacional)
Amazon Web Services Lex será usado para criar uma interface de usuário intuitiva, oferecendo recursos de processamento de linguagem natural para melhorar a interação com o usuário.
figura 5: viagem do usuário no lex para o fluxo do aplicação .
Vejamos como essa arquitetura de aplicação foi implementada para este exercício. Para realizar uma query de correspondência com o MongoDB, o Langchain Agent usa as seguintes funções como ferramentas. Os agentes do LangChain são componentes de AI que usam modelos de linguagem para escolher uma sequência de ações a serem executadas. O MongoDB integra o banco de banco de dados operacional e a pesquisa vetorial em uma plataforma única, unificada e totalmente gerenciada com recursos completos de banco de dados de dados vetorial. Ele armazena dados operacionais, metadados e incorporações vetoriais dos usuários no Atlas enquanto usa o Atlas Vector Search para construir aplicativos inteligentes baseados em AIgen.
Neste artigo, mostramos apenas alguns trechos de exemplo para ilustrar a viagem do usuário através do aplicação. O código inteiro está disponível no repositório doGithub .
Um usuário deseja interagir com um agente de viagens e pesquisar um local específico pelo nome. A função a seguir pode executar uma pesquisa básica do MongoDB em um conjunto de dados de viagem. Ele recupera nomes de locais correspondendo a um nome de país fornecido, usando uma expressão regular que não diferencia maiúsculas de minúsculas ($regex) para procurar documentos em que o campo "País" corresponda a query_str. Em seguida, a função retorna o campo "Nome do local" dos documentos correspondentes.
1 def mongodb_place_lookup_by_country(query_str: str) -> str: 2 """Retrieve place by Country Name""" 3 res = "" 4 res = collection.aggregate( 5 [ 6 {"$match": {"Country": {"$regex": query_str, "$options": "i"}}}, 7 {"$project": {"Place Name": 1}}, 8 ] 9 ) 10 places = [] 11 for place in res: 12 places.append(place["Place Name"]) 13 return str(places)
Criamos duas funções adicionais que funcionam de forma semelhante para recuperar campos específicos, como "Nome do local" e "Melhor horário para visitar", ou obter detalhes completos do local com base em seus critérios de pesquisa. Todas essas funções usam expressões regulares insensíveis a maiúsculas e minúsculas para correspondência flexível.
Se a query não tiver nenhuma palavra-chave para realizar uma correspondência direta, o agente LangChain realizará a pesquisa vetorial MongoDB .
O agente LangChain realiza a pesquisa vetorial do MongoDB quando a query do usuário não tem uma palavra-chave específica para realizar uma pesquisa direta no MongoDB.
1 # filter the data using the criteria and do a Schematic search 2 def mongodb_search(query: str) -> str: 3 """Retrieve results from MongoDB related to the user input by performing vector search. Pass text input only.""" 4 embeddings = BedrockEmbeddings( 5 client=bedrock_runtime, 6 model_id=embedding_model_id, 7 ) 8 text_as_embeddings = embeddings.embed_documents([query]) 9 embedding_value = text_as_embeddings[0] 10 11 12 # get the vector search results based on the filter conditions. 13 response = collection.aggregate( 14 [ 15 { 16 "$vectorSearch": { 17 "index": "awsanthropic_vector_index", 18 "path": "details_embedding", 19 "queryVector": embedding_value, 20 "numCandidates": 200, 21 "limit": 10, 22 } 23 }, 24 { 25 "$project": { 26 "score": {"$meta": "searchScore"}, 27 field_name_to_be_vectorized: 1, 28 "_id": 0, 29 } 30 }, 31 ] 32 ) 33 34 35 # Result is a list of docs with the array fields 36 docs = list(response) 37 38 39 # Extract an array field from the docs 40 array_field = [doc[field_name_to_be_vectorized] for doc in docs] 41 42 43 # Join array elements into a string 44 llm_input_text = "\n \n".join(str(elem) for elem in array_field) 45 46 47 # utility 48 newline, bold, unbold = "\n", "\033[1m", "\033[0m" 49 logging.info( 50 newline 51 + bold 52 + "Given Input From MongoDB Vector Search: " 53 + unbold 54 + newline 55 + llm_input_text 56 + newline 57 ) 58 59 60 return llm_input_text
O Class da Athronic hospedado no Amazon CamaDB o une escolhendo as melhores ferramentas correspondentes para realizar a pesquisa no MongoDB Atlas com base na query do usuário. Ele melhora a experiência ao apresentar a saída em um formato amigável ao ser humano. As funções a seguir inicializam o LLM e adicionam as funções do MongoDB Python como ferramentas ao agente. Ele também armazena o histórico da conversa no MongoDB Atlas.
1 def get_session_history(session_id: str) -> MongoDBChatMessageHistory: 2 return MongoDBChatMessageHistory( 3 utils.get_MongoDB_Uri(), 4 session_id, 5 database_name="anthropic-travel-agency", 6 collection_name="chat_history", 7 ) 8 9 10 11 12 def interact_with_agent(sessionId, input_query, chat_history): 13 """Interact with the agent and store chat history. Return the response.""" 14 15 16 # Initialize bedrock and llm 17 bedrock_runtime = setup_bedrock() 18 llm = initialize_llm(bedrock_runtime) 19 20 21 # Initialize tools 22 tool_mongodb_search = StructuredTool.from_function(mongodb_search) 23 tool_mongodb_place_lookup_by_country = StructuredTool.from_function( 24 mongodb_place_lookup_by_country 25 ) 26 tool_mongodb_place_lookup_by_name = StructuredTool.from_function( 27 mongodb_place_lookup_by_name 28 ) 29 tool_mongodb_place_lookup_by_best_time_to_visit = StructuredTool.from_function( 30 mongodb_place_lookup_by_best_time_to_visit 31 ) 32 33 34 tools = [ 35 tool_mongodb_search, 36 tool_mongodb_place_lookup_by_country, 37 tool_mongodb_place_lookup_by_name, 38 tool_mongodb_place_lookup_by_best_time_to_visit, 39 ] 40 41 42 chat_message_int = MessagesPlaceholder(variable_name="chat_history") 43 44 45 memory = ConversationBufferMemory( 46 memory_key="chat_history", 47 chat_memory=get_session_history(sessionId), 48 return_messages=True, 49 ) 50 51 52 PREFIX = """You are a helpful and polite Travel recommendations assistant. Answer the following questions as best you can using only the provided tools and chat history. You have access to the following tools:""" 53 FORMAT_INSTRUCTIONS = """Always return only the final answer to the original input question in human readable format as text only without any extra special characters. Also tell all the tools you used to reach to this answer in brief.""" 54 SUFFIX = """Begin!""" 55 56 57 agent_executor = initialize_agent( 58 tools, 59 llm, 60 agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION, 61 agent_kwargs={ 62 "memory_prompts": [chat_message_int], 63 "input_variables": ["input", "agent_scratchpad", "chat_history"], 64 "prefix":PREFIX, 65 "format_instructions":FORMAT_INSTRUCTIONS, 66 "suffix":SUFFIX 67 }, 68 memory=memory, 69 verbose=True, 70 max_iterations=3 71 ) 72 result = agent_executor.invoke( 73 { 74 "input": input_query, 75 "chat_history": chat_history, 76 } 77 ) 78 chat_history.append(HumanMessage(content=input_query)) 79 chat_history.append(AIMessage(content="Assistant: " + result["output"])) 80 return result
Podemos implantar o aplicativo de chatbot da agencia de viagens no Amazon Web Services Lambda usando o SAM CLI. O aplicação pode ser testado criando um bot no Amazon Lex. Para adicionar o bot ao Amazon Connect, navegue até sua Instância do Amazon Connect e navegue até Fluxos. Selecione o bot Lex que você deseja usar.
Para usar o bot em um fluxo do Amazon Connect, adicione o bloco Obter entrada do usuário. Nos detalhes do bloco, adicione Selecionar Bot do Amazon Lex:
Para obter mais informações sobre como adicionar bots do Amazon Lex ao Amazon Connect, consulte a documentação. Para saber mais sobre como configurar o aplicação e testar as funcionalidades, consulte Github.
Neste artigo, exploramos como o Class da Agroupic no Amazon Cama do Rock com o MongoDB Atlas pode ser aproveitado para criar e distribuir um aplicação RAG de agente. O aplicação resultante é um agente de AI aprimorado para memória que fornece recomendações personalizadas de viagens. Essa arquitetura gerencia com eficiência queries simples e complexas, entregando respostas precisas e fáceis de usar, ao mesmo tempo em que garante uma experiência de conversa tranquila e contínua.
- O MongoDB AI Applications Program (MAAP) ajuda as organizações a criar e implantar rapidamente aplicativos modernos enriquecidos com tecnologia de AI em escala empresarial.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Relacionado
Artigo
Usando o SuperDuperDB para acelerar o desenvolvimento de IA no MongoDB Atlas Vector Search
Sep 18, 2024 | 6 min read
Tutorial
IoT e MongoDB: impulsionando a análise de séries temporais do consumo doméstico de energia
Aug 28, 2024 | 6 min read