Skip to content
RAG Agêntico: Como os agentes de IA estão transformando a geração aumentada por recuperação

RAG Agêntico: Como os agentes de IA estão transformando a geração aumentada por recuperação

Updated on

O RAG padrão (Retrieval-Augmented Generation) tem uma limitação fundamental: recupera uma vez e gera uma vez. O sistema pesquisa um banco de dados vetorial, pega os Top-K chunks, os insere em um prompt e espera que a resposta esteja nesses chunks. Quando as informações relevantes estão espalhadas por múltiplos documentos, requerem raciocínio multi-passo ou precisam de esclarecimento antes da recuperação, o RAG básico falha silenciosamente -- retornando respostas que soam convincentes construídas sobre contexto incompleto.

O RAG agêntico resolve isso substituindo o pipeline estático de recuperar-depois-gerar por um agente de IA autônomo que pode planejar, recuperar iterativamente, avaliar resultados e decidir quando tem informação suficiente para responder. O agente não apenas busca documentos -- ele raciocina sobre o que pesquisar, julga se o conteúdo recuperado é suficiente e toma ações adicionais quando não é.

📚

RAG Básico vs RAG Agêntico

Pipeline de RAG Básico

Consulta do usuário → Embeder consulta → Busca vetorial → Top-K Chunks → LLM → Resposta

Problemas com esta abordagem:

  • Recuperação única: Se a primeira busca não encontrar documentos relevantes, não há recuperação
  • Sem raciocínio sobre o que recuperar: A consulta é embedada como está, sem decomposição
  • Sem avaliação: O sistema não pode julgar se os chunks recuperados realmente respondem à pergunta
  • Sem recuperação multi-passo: Não pode encadear buscas onde o primeiro resultado informa a próxima consulta

Pipeline de RAG Agêntico

Consulta do usuário → Agente planeja → Ferramenta de busca → Avaliar resultados →
  → Precisa de mais info? → Refinar consulta → Buscar novamente →
  → Contexto suficiente? → Sintetizar → Resposta

O agente atua como um orquestrador inteligente que pode:

  1. Decompor consultas complexas em sub-perguntas
  2. Escolher ferramentas: busca vetorial, busca web, consulta SQL, chamada API
  3. Avaliar se o contexto recuperado é suficiente
  4. Iterar com consultas refinadas até estar confiante
  5. Sintetizar informações de múltiplas rodadas de recuperação

Como funciona o RAG Agêntico

Arquitetura central

ComponenteRAG BásicoRAG Agêntico
Processamento de consultaEmbedding diretoDecomposição e planejamento de consulta
RecuperaçãoBusca vetorial únicaMúltiplas ferramentas, recuperação iterativa
AvaliaçãoNenhumaAuto-avaliação do contexto recuperado
RaciocínioChamada LLM únicaRaciocínio multi-passo com uso de ferramentas
Recuperação de errosNenhumaRetentativa com consultas refinadas
Fontes de dadosGeralmente um BD vetorialMúltiplas fontes (BD, web, APIs)

Fluxo de decisão do agente

Um sistema de RAG agêntico tipicamente segue este padrão de decisão:

  1. Analisar a pergunta: É simples (recuperação única) ou complexa (precisa de decomposição)?
  2. Planejar estratégia de recuperação: Quais fontes consultar? Em que ordem?
  3. Executar recuperação: Buscar na primeira fonte
  4. Avaliar resultados: Esses chunks contêm a resposta?
  5. Decidir próxima ação: Responder, refinar consulta ou buscar em outra fonte
  6. Sintetizar: Combinar informações de todos os passos de recuperação
# Loop conceitual de RAG agêntico (pseudocódigo)
def agentic_rag(query, tools, max_iterations=5):
    context = []
    plan = agent.plan(query)  # Decompor em sub-perguntas
 
    for step in plan:
        # Agente decide qual ferramenta usar
        tool = agent.select_tool(step, tools)
        results = tool.execute(step.query)
        context.extend(results)
 
        # Agente avalia se tem informação suficiente
        if agent.has_sufficient_context(query, context):
            break
 
        # Agente refina a consulta com base no que aprendeu
        step.query = agent.refine_query(step, results)
 
    return agent.synthesize(query, context)

Padrões chave no RAG Agêntico

1. Decomposição de consultas

Dividir perguntas complexas em sub-consultas mais simples:

Original: "Compare o crescimento de receita da Apple e Microsoft no Q3 2025
           e explique qual empresa teve melhores margens operacionais"

Decomposta:
  1. "Apple Q3 2025 crescimento de receita"
  2. "Microsoft Q3 2025 crescimento de receita"
  3. "Apple Q3 2025 margem operacional"
  4. "Microsoft Q3 2025 margem operacional"

Cada sub-consulta recupera documentos focados e relevantes em vez de esperar que uma única busca ampla retorne todas as informações necessárias.

2. Recuperação adaptativa

O agente decide como recuperar com base no tipo de consulta:

Tipo de consultaEstratégia de recuperação
Busca factualBusca vetorial única
ComparaçãoBuscas paralelas para cada entidade
Raciocínio multi-passoBuscas sequenciais, cada uma informada pela anterior
TemporalFiltrar por data, depois busca semântica
AgregaçãoConsulta SQL + busca de documentos

3. Auto-avaliação

Após cada passo de recuperação, o agente avalia:

  • Relevância: Os chunks recuperados são sobre o tópico correto?
  • Completude: Contêm informação suficiente para responder?
  • Consistência: Múltiplas fontes concordam?
  • Atualidade: A informação é suficientemente atual?

4. Seleção de ferramentas

O RAG agêntico não se limita à busca vetorial:

FerramentaQuando usar
Busca vetorialConsultas de similaridade semântica
Busca por palavras-chave (BM25)Correspondência exata de termos, consultas técnicas
Busca webEventos atuais, informações recentes
Consulta SQLDados estruturados, agregações
Chamada APIDados em tempo real (preços, clima)
Execução de códigoCálculos, transformações de dados

Abordagens de implementação

Agente LangChain

from langchain.agents import create_react_agent
from langchain_openai import ChatOpenAI
from langchain.tools import Tool
from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings
 
# Criar ferramenta de recuperação
vectorstore = FAISS.from_texts(documents, OpenAIEmbeddings())
retriever = vectorstore.as_retriever(search_kwargs={"k": 5})
 
def search_docs(query: str) -> str:
    results = retriever.invoke(query)
    return "\n".join([doc.page_content for doc in results])
 
tools = [
    Tool(
        name="SearchDocuments",
        func=search_docs,
        description="Search the knowledge base for relevant information"
    ),
]
 
llm = ChatOpenAI(model="gpt-4o", temperature=0)
agent = create_react_agent(llm, tools, prompt_template)

Agente LlamaIndex

from llama_index.core.agent import ReActAgent
from llama_index.core.tools import QueryEngineTool
from llama_index.core import VectorStoreIndex
 
# Criar ferramentas de motor de consulta
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine(similarity_top_k=5)
 
tools = [
    QueryEngineTool.from_defaults(
        query_engine=query_engine,
        name="knowledge_base",
        description="Search the company knowledge base"
    ),
]
 
agent = ReActAgent.from_tools(tools, llm=llm, verbose=True)
response = agent.chat("What were our Q3 results?")

Quando usar RAG Agêntico

CenárioRAG BásicoRAG Agêntico
Q&A simples de uma fonteMelhor escolhaExcessivo
Raciocínio multi-documentoTem dificuldadeExcelente
Perguntas que precisam de cálculosNão consegueUsa ferramentas de código
Dados dinâmicos (APIs, bancos de dados)LimitadoEncaixe natural
Consultas ambíguasResultados ruinsPode esclarecer e iterar
Sensibilidade a custosMais barato (1 chamada LLM)Mais caro (múltiplas chamadas)
Requisitos de latênciaMais rápidoMais lento (iterativo)

Compensações

VantagemDesvantagem
Maior qualidade de respostaMaior latência (múltiplas chamadas LLM)
Lida com consultas complexasMaior custo por consulta
Recuperação auto-corretivaMais complexo para construir e depurar
Integração multi-fonteAgente pode ficar preso em loops
Melhor para consultas ambíguasComportamento mais difícil de prever

Construindo pipelines de dados para RAG Agêntico

Configurar o pipeline de dados para RAG agêntico -- fragmentar documentos, criar embeddings, construir índices vetoriais -- é trabalho experimental iterativo. O RunCell (opens in a new tab) fornece um ambiente Jupyter com IA onde você pode prototipar pipelines RAG com assistência de IA, depurar a qualidade de recuperação interativamente e iterar sobre estratégias de fragmentação.

Para visualizar métricas de avaliação de recuperação (pontuações de relevância, distribuições de latência, qualidade de resposta), o PyGWalker (opens in a new tab) permite explorar seus conjuntos de dados de avaliação RAG interativamente no Jupyter.

FAQ

O que é RAG agêntico?

RAG agêntico combina Geração Aumentada por Recuperação com agentes de IA autônomos. Em vez de um pipeline estático de recuperar-depois-gerar, um agente de IA planeja estratégias de recuperação, executa múltiplas buscas, avalia resultados e itera até ter contexto suficiente para responder com precisão.

Como o RAG agêntico difere do RAG básico?

O RAG básico realiza uma única recuperação e gera uma resposta. O RAG agêntico usa um agente de IA que pode decompor consultas, selecionar diferentes ferramentas (busca vetorial, busca web, SQL), avaliar se o contexto recuperado é suficiente e iterar com consultas refinadas. Ele lida com perguntas complexas e multi-passo que o RAG básico não consegue.

O RAG agêntico é mais caro que o RAG básico?

Sim, o RAG agêntico tipicamente custa mais por consulta porque faz múltiplas chamadas LLM (planejamento, avaliação, síntese) e múltiplas operações de recuperação. A compensação é uma qualidade de resposta significativamente maior para consultas complexas. Para buscas factuais simples, o RAG básico é mais custo-efetivo.

Quais frameworks suportam RAG agêntico?

LangChain, LlamaIndex e Haystack todos suportam padrões de RAG agêntico. O LangChain fornece agentes ReAct com uso de ferramentas, o LlamaIndex oferece agentes de planejamento de consultas e o Haystack tem arquiteturas de agentes baseadas em pipelines. Você também pode construir agentes personalizados usando as APIs de function-calling da OpenAI ou Anthropic diretamente.

Quando devo usar RAG agêntico vs RAG básico?

Use RAG básico para Q&A factual simples de uma única base de conhecimento. Use RAG agêntico quando as consultas requerem raciocínio sobre múltiplos documentos, envolvem comparações, precisam de dados em tempo real ou quando o RAG básico retorna consistentemente respostas incompletas.

Conclusão

O RAG agêntico aborda as limitações centrais do RAG básico substituindo pipelines estáticos por agentes inteligentes que planejam, recuperam iterativamente e avaliam seus próprios resultados. Ele lida com consultas complexas que abrangem múltiplos documentos, requerem raciocínio ou precisam de dados de múltiplas fontes. A compensação é maior custo e latência por consulta. Para a maioria das aplicações, a melhor abordagem é começar com RAG básico para consultas simples e rotear perguntas complexas para o RAG agêntico -- usando o agente apenas quando o sistema mais simples teria dificuldade.

📚