Assistentes de IA Agentica e Recuperação Aumentada por Geração
Assistentes de inteligência artificial agentica representam um avanço significativo no campo da IA. Diferentemente de chatbots convencionais, esses sistemas dinâmicos funcionam a partir de modelos de linguagem amplos (LLMs – Large Language Models) que mantêm conversas abertas e lidam com tarefas complexas, adaptando-se às necessidades do usuário e executando ações em sistemas de backend quando necessário.
A capacidade distintiva desses assistentes reside na recuperação de dados específicos de negócio em tempo real, por meio de chamadas de API e consultas a bancos de dados. Essas informações são incorporadas nas respostas geradas pelo LLM ou apresentadas paralelamente a elas. Esta combinação de capacidades de LLM com recuperação dinâmica de dados é conhecida como Recuperação Aumentada por Geração (RAG – Retrieval-Augmented Generation).
Consideremos um assistente agentico para reservas de hotéis: ao receber uma consulta, o sistema primeiro interroga o banco de dados para localizar propriedades que correspondem aos critérios específicos do hóspede. Em seguida, executa chamadas de API para obter informações em tempo real sobre disponibilidade de quartos e tarifas vigentes. Essas informações recuperadas podem seguir dois caminhos: o LLM as processa para gerar uma resposta abrangente, ou são exibidas ao lado de um resumo gerado pelo LLM. Ambas as abordagens garantem que os hóspedes recebam informações precisas e atualizadas integradas à sua conversa contínua com o assistente.
Estratégias de Recuperação de Informações em Sistemas RAG
As estratégias de recuperação de informações que sustentam a capacidade RAG em implementações de IA agentica giram fundamentalmente em torno de consultas em tempo real a fontes de dados de backend ou comunicação com APIs. As respostas são então fatoradas nas etapas subsequentes da implementação.
Do ponto de vista de design e implementação de sistemas, bancos de dados e APIs não representam uma novidade em si. Contudo, surgiram abordagens de recuperação de informações específicas para implementações com IA agentica, notadamente a busca semântica baseada em significado.
Busca por Similaridade Vetorial
Na busca semântica, os dados são recuperados com base no significado da frase de busca, não apenas em correspondências léxicas de palavras-chave ou padrões. Incorporações vetoriais (embeddings de vetor) são pré-computadas e armazenadas em bancos de dados vetoriais, permitindo cálculos eficientes de similaridade no momento da consulta.
O princípio central da Busca por Similaridade Vetorial (VSS – Vector Similarity Search) envolve encontrar as correspondências mais próximas entre essas representações numéricas usando métricas de distância matemática como similaridade cosseno ou distância euclidiana. Essas funções matemáticas são particularmente eficientes ao buscar em grandes volumes de dados, porque as representações vetoriais são pré-computadas.
Modelos de bi-codificador (bi-encoder models) são comumente utilizados nesse processo. Eles codificam separadamente a consulta e os documentos em vetores, possibilitando comparações eficientes de similaridade em escala sem exigir que o modelo processe pares de consulta-documento em conjunto. Quando um usuário submete uma consulta, o sistema a converte em um vetor e busca vetores de conteúdo posicionados mais próximos no espaço multidimensional. Isso significa que, mesmo quando palavras-chave exatas não coincidem, a busca pode localizar resultados relevantes com base em similaridade semântica conceitual.
Por exemplo, em um conjunto de dados vetorizado contendo [“materiais de construção”, “suprimentos de encanamento”, “resultado da multiplicação 2×2”], a busca por “tábua de madeira 2×4” provavelmente produzirá “materiais de construção” como melhor resultado. A combinação de busca semântica com agentes orientados por LLM suporta alinhamento em linguagem natural em toda a solução, desde componentes voltados ao usuário até recuperação de dados de backend.
O Desafio: Quando Busca Semântica Não É Suficiente
Consideremos um cenário real: um cliente busca por uma propriedade hoteleira e deseja encontrar “um hotel de luxo com vista para o oceano em Miami, Flórida”. Embora a busca semântica se destaque na compreensão de conceitos como “luxo” e “vista para o oceano”, ela pode lutar com a correspondência precisa de localização. A busca pode retornar propriedades oceanfront de luxo altamente relevantes com base em similaridade semântica, mas estas poderiam estar na Califórnia, no Caribe ou em qualquer outro lugar com acesso ao oceano, não especificamente em Miami conforme solicitado.
Essa limitação surge porque a busca semântica prioriza similaridade conceitual sobre correspondência exata de atributos. Em casos onde usuários necessitam tanto de compreensão semântica (luxo, vista para o oceano) quanto de filtragem precisa (Miami, Flórida), depender unicamente de busca semântica produz resultados subótimos. É aqui que a busca híbrida torna-se essencial.
Abordagem de Busca Híbrida
A busca híbrida combina a compreensão semântica de descrições em linguagem natural com a precisão de filtragem baseada em texto em atributos estruturados como localização, datas ou metadados específicos. Quando um usuário fornece uma frase de busca, um LLM primeiro analisa a consulta para identificar atributos específicos (como localização) e mapeá-los para valores pesquisáveis. Esses atributos extraídos são então utilizados como filtros em conjunto com pontuação de similaridade semântica, garantindo que os resultados sejam tanto conceitualmente relevantes quanto precisamente correspondentes aos requisitos do usuário.
Consideremos dois exemplos práticos de busca: no primeiro, a frase “procurando um hotel à beira-mar” seria atendida por busca semântica pura, retornando a propriedade mais semanticamente similar. No segundo exemplo, “um hotel de luxo com bom restaurante no centro da cidade” beneficia-se da busca híbrida, combinando relevância semântica com filtragem de localização precisa para identificar a melhor correspondência considerando ambas as dimensões.
Uma Solução Baseada em Agentes
Consideremos um cenário de busca hoteleira onde usuários têm necessidades diversas. Um usuário pode solicitar “encontre-me um hotel aconchegante”, exigindo compreensão semântica do termo “aconchegante”. Outro pode requerer “encontre hotéis em Miami”, necessitando filtragem precisa de localização. Um terceiro pode querer “um hotel de luxo à beira-mar em Miami”, exigindo ambas as abordagens simultaneamente.
Implementações tradicionais de RAG com fluxos de trabalho fixos não conseguem se adaptar dinamicamente a essas necessidades variáveis. Este cenário demanda lógica de busca personalizada que combine múltiplas fontes de dados e adapte dinamicamente estratégias de recuperação conforme características da consulta. Uma abordagem baseada em agentes fornece essa flexibilidade: o próprio LLM determina a estratégia de busca ótima ao analisar cada consulta e selecionar as ferramentas apropriadas.
Por Que Agentes?
Sistemas baseados em agentes oferecem adaptabilidade superior porque o LLM determina a sequência de ações necessárias para resolver problemas, possibilitando roteamento dinâmico de decisões, seleção inteligente de ferramentas e controle de qualidade por meio de auto-avaliação. A AWS demonstra como implementar um assistente agentico de inteligência artificial generativa que utiliza tanto busca semântica quanto busca baseada em texto, combinando Amazon Bedrock, Amazon Bedrock AgentCore, Strands Agents e Amazon OpenSearch.
Arquitetura da Solução
Visão Geral da Arquitetura
A solução apresenta uma arquitetura moderna e sem servidor que integra modelos de fundação do Amazon Bedrock, orquestração de agentes via Amazon Bedrock AgentCore, e capacidades de busca híbrida através do Amazon OpenSearch Serverless.
Camada de Interação com Cliente
Aplicações cliente interagem com o sistema por meio do Amazon API Gateway, que fornece um ponto de entrada seguro e escalável para requisições de usuário. Quando um usuário formula uma pergunta como “Encontre-me um hotel à beira-mar no norte de Michigan”, a requisição flui através do API Gateway para o Amazon Bedrock AgentCore.
Orquestração de Agentes com Amazon Bedrock AgentCore
O Amazon Bedrock AgentCore funciona como mecanismo de orquestração, gerenciando o ciclo de vida completo do agente e coordenando interações entre usuário, LLM e ferramentas disponíveis. O AgentCore implementa o loop agentico — um ciclo contínuo de raciocínio, ação e observação — onde o agente analisa a consulta do usuário utilizando modelos de fundação do Bedrock, decide quais ferramentas invocar com base nos requisitos da consulta, executa a ferramenta de busca híbrida apropriada com parâmetros extraídos, avalia os resultados e determina se ações adicionais são necessárias, e finalmente responde ao usuário com informações sintetizadas. Ao longo deste processo, Amazon Bedrock Guardrails reforça segurança de conteúdo e conformidade com políticas.
Busca Híbrida com Amazon OpenSearch Serverless
A arquitetura integra Amazon OpenSearch Serverless como motor de armazenamento vetorial e busca. O OpenSearch armazena tanto incorporações vetoriais (para compreensão semântica) quanto campos de texto estruturado (para filtragem precisa), sustentando a abordagem de busca híbrida. Quando o agente invoca a ferramenta de busca híbrida, o OpenSearch executa consultas que combinam correspondência semântica usando similaridade vetorial para compreensão conceitual e filtragem baseada em texto para restrições precisas como localização ou comodidades.
Monitoramento e Segurança
A arquitetura inclui Amazon CloudWatch para monitorar desempenho do sistema e padrões de uso. AWS IAM gerencia políticas de controle de acesso e segurança em todos os componentes.
Vantagens desta Arquitetura
O design sem servidor oferece diversas vantagens: respostas de baixa latência para interações conversacionais em tempo real, dimensionamento automático para lidar com cargas variáveis sem intervenção manual, custo-efetividade através de preços conforme uso sem infraestrutura ociosa, e prontidão para produção com características integradas de monitoramento, registro e segurança. A combinação de capacidades de orquestração do AgentCore com funcionalidade de busca híbrida do OpenSearch permite que o assistente se adapte dinamicamente sua estratégia de busca conforme intenção do usuário — algo que pipelines RAG rígidos não conseguem realizar.
Implementação com Strands e Amazon Bedrock AgentCore
Para construir o agente de busca híbrida, utiliza-se Strands, um framework de agente IA em código aberto que simplifica o desenvolvimento de aplicações orientadas por LLM com capacidades de chamada de ferramentas. Strands permite definir a função de busca híbrida como uma “ferramenta” que o agente pode invocar inteligentemente com base em consultas de usuário. Para detalhes abrangentes sobre arquitetura e padrões de Strands, consulte a documentação de Strands.
A busca híbrida é definida como ferramenta da seguinte forma:
from strands import tool
@tool
def hybrid_search(query_text: str, country: str = None, city: str = None):
"""
Performs hybrid search combining semantic understanding with location filtering.
The agent calls this when users provide both descriptive preferences and location.
Args:
query_text: Natural language description of what to search for
country: Optional country filter
city: Optional city filter
"""
# Generate embeddings for semantic search
vector = generate_embeddings(query_text)
# Build hybrid query combining vector similarity and text filters
query = {
"bool": {
"must": [
{"knn": {"embedding_field": {"vector": vector, "k": 10}}}
],
"filter": []
}
}
# Add location filters if provided
if country:
query["bool"]["filter"].append({"term": {"country": country}})
if city:
query["bool"]["filter"].append({"term": {"city": city}})
# Execute search in OpenSearch
response = opensearch_client.search(index="hotels", body=query)
return format_results(response)
Uma vez que as ferramentas estão definidas, elas se integram com Amazon Bedrock AgentCore para implantação e orquestração em tempo de execução. O Amazon Bedrock AgentCore permite implantar e operar agentes altamente eficazes de forma segura em escala, utilizando qualquer framework e modelo. Ele fornece infraestrutura propositalmente construída para dimensionar agentes com segurança e controles para operar agentes confiáveis. Para informações detalhadas sobre integração de Strands com Amazon Bedrock AgentCore, consulte o tutorial de integração AgentCore-Strands.
Implementação Profunda de Busca Híbrida
Um Diferencial Técnico da Solução
Um diferencial chave da solução de assistente de inteligência artificial é sua capacidade avançada de busca híbrida. Enquanto muitas implementações de RAG dependem unicamente de busca semântica, esta arquitetura estende suas possibilidades. Aproveita-se o potencial completo do OpenSearch, possibilitando buscas semântica, baseada em texto e híbrida, tudo dentro de uma única consulta eficiente.
Implementação em Dois Componentes
A implementação de busca híbrida é construída sobre dois componentes fundamentais: armazenamento de dados otimizado e tratamento versátil de consultas.
Armazenamento Otimizado de Dados
A abordagem para armazenamento de dados é importante para busca híbrida eficiente. Os dados são sistematicamente categorizados em dois tipos principais: candidatos de busca semântica, incluindo descrições detalhadas, contextos e explicações — conteúdo que se beneficia de compreensão de significado além de palavras-chave; e candidatos de busca por texto, abrangendo metadados, identificadores de produto, datas e outros campos estruturados.
Para dados semânticos, utilizam-se modelos de incorporação do AWS Bedrock. Estes transformam texto em vetores multidimensionais que capturam significado semântico efetivamente. Os dados de texto são armazenados em seu formato original, otimizados para consultas tradicionais rápidas. O índice OpenSearch é projetado para acomodar simultaneamente incorporações vetoriais e campos de texto, permitindo capacidades flexíveis de consulta.
Funcionalidade Versátil de Busca
Construindo sobre o armazenamento otimizado de dados, desenvolveu-se uma função de busca abrangente que o agente IA pode utilizar efetivamente. A função de busca é projetada para executar buscas semântica, por texto ou híbrida conforme requerido pelo agente.
Para consultas focadas em significado, geram-se incorporações de consulta usando Amazon Bedrock e realiza-se busca k-NN (k-Vizinhos Mais Próximos) no espaço vetorial. Quando correspondência precisa é necessária, utilizam-se funcionalidades robustas de consulta de texto do OpenSearch, incluindo opções de correspondência exata e fuzzy. Na execução de busca híbrida, combinam-se similaridade vetorial com correspondência de texto em uma consulta unificada. Utilizando a consulta bool do OpenSearch, pode-se ajustar o equilíbrio entre relevância semântica e por texto conforme necessário. Independentemente do tipo de busca, o sistema consolida e classifica resultados com base em relevância geral, combinando compreensão semântica com correspondência de texto precisa.
Pseudocódigo de referência para implementação de busca híbrida:
def hybrid_search(query_text, country, city, search_type="hybrid"):
"""
Hybrid search combining semantic and text-based search with location filtering
"""
# 1. Generate embeddings for semantic search
if search_type in ["semantic", "hybrid"]:
vector = generate_embeddings(query_text)
# 2. Build search query based on type
if search_type == "semantic":
query = build_semantic_query(vector)
elif search_type == "text":
query = build_text_query(country, city)
else: # hybrid search
query = build_hybrid_query(vector, country, city)
# 3. Execute search
response = search_opensearch(query)
# 4. Process and return results
return format_results(response)
# Example usage:
results = hybrid_search(
query_text="luxury hotel",
country="USA",
city="Miami"
)
O OpenSearch suporta múltiplos tipos de consulta incluindo busca baseada em texto, busca vetorial (knn) e abordagens híbridas que combinam ambos os métodos. Para informações detalhadas sobre tipos de consulta disponíveis e suas implementações, consulte a documentação de consultas do OpenSearch.
Significância da Abordagem Híbrida
A abordagem híbrida melhora significativamente as capacidades do assistente de IA. Suporta recuperação de informações altamente precisa, considerando contexto e conteúdo. Adapta-se a vários tipos de consulta, mantendo desempenho consistente. Fornece respostas mais relevantes e abrangentes para investigações de usuário. No domínio de busca orientada por IA, a abordagem híbrida representa um avanço significativo. Oferece um nível de flexibilidade e precisão que melhora substancialmente a capacidade do assistente de recuperar e processar informações efetivamente.
Casos de Uso Práticos
Busca híbrida é aplicável em diversos domínios. Em imóveis e propriedades, busca de propriedade combina compreensão de preferências de estilo de vida (“amigável para famílias”) com filtragem precisa de localização e comodidades. Em serviços jurídicos e profissionais, pesquisa de jurisprudência combina similaridade legal conceitual com filtragem precisa de jurisdição e data para pesquisa legal abrangente. No setor de saúde e medicina, equipes de cuidado formulam consultas como “pacientes com condições crônicas requerendo protocolos de tratamento similares aos de João” — combinando compreensão semântica de complexidade de tratamento com correspondência exata de registros médicos. Em mídia e entretenimento, sistemas de descoberta de conteúdo combinam filtragem exata de gênero com compreensão semântica de trama. Em comércio eletrônico e varejo, descoberta de produto em linguagem natural como “sapatos de inverno confortáveis” localiza correspondências semânticas enquanto aplica filtros exatos de tamanho, preço ou marca.
Esses casos de uso demonstram como busca híbrida preenche a lacuna entre compreensão de linguagem natural e filtragem precisa de dados, possibilitando recuperação de informações mais intuitiva e precisa. Para mais detalhes sobre implementações de busca híbrida, consulte o artigo sobre busca híbrida do Amazon Bedrock Knowledge Bases.
Conclusão
A integração de Amazon Bedrock, Amazon Bedrock AgentCore, Strands Agents e Amazon OpenSearch Serverless representa um avanço significativo na construção de aplicações de busca inteligente que combinam o poder de LLMs com técnicas sofisticadas de recuperação de informações. Esta arquitetura mescla capacidades de busca semântica, baseada em texto e híbrida para entregar resultados mais precisos e contextualmente relevantes que abordagens tradicionais.
Ao implementar um sistema baseado em agentes utilizando Amazon Bedrock AgentCore, gerenciamento de estado e abstrações de ferramentas de Strands, desenvolvedores podem criar assistentes de IA conversacionais dinâmicos que determinam inteligentemente as estratégias de busca mais apropriadas com base em consultas de usuário. A abordagem de busca híbrida, que combina similaridade vetorial com correspondência de texto precisa, oferece flexibilidade e precisão em recuperação de informações, habilitando sistemas de IA a compreender melhor intenção do usuário e entregar respostas mais abrangentes.
À medida que organizações continuam construindo soluções de IA, esta arquitetura oferece uma fundação escalável e segura que utiliza o potencial pleno dos serviços AWS mantendo a adaptabilidade necessária para aplicações complexas do mundo real.
Fonte
Building Intelligent Search with Amazon Bedrock and Amazon OpenSearch for hybrid RAG solutions (https://aws.amazon.com/blogs/machine-learning/building-intelligent-search-with-amazon-bedrock-and-amazon-opensearch-for-hybrid-rag-solutions/)
Leave a Reply