Olá! Bem-vindo à nossa próxima lição.
Na aula anterior, estabelecemos as permissões de segurança e os escopos de acesso para as fontes de conhecimento do nosso agente, garantindo que ele tenha a autorização necessária para acessar documentos no Google Drive e código nos repositórios Git. Agora que as portas estão abertas, precisamos verificar se o agente consegue, de fato, encontrar o caminho até a informação correta.
O objetivo desta lição é testar a capacidade do agente de recuperar informações relevantes tanto do Google Drive quanto dos repositórios de código para uma determinada tarefa. Este processo, conhecido como "Recuperação" (o "R" em RAG - Retrieval-Augmented Generation), é a espinha dorsal do nosso agente. Se a recuperação for falha ou imprecisa, a geração de código subsequente será, na melhor das hipóteses, irrelevante e, na pior, incorreta. Vamos garantir que a base do nosso sistema seja sólida.
1. Como a Recuperação Funciona no Rovo?
Antes de testar, é útil entender como o Rovo busca informações. Não se trata de uma simples busca por palavras-chave. A Atlassian implementou uma arquitetura de busca sofisticada para entregar resultados relevantes de múltiplas fontes.
A imagem a seguir ilustra o resultado final: um usuário faz uma pergunta, e o Rovo responde citando as fontes de conhecimento que usou para formular a resposta.

Para entender a tecnologia por trás disso, a Atlassian publicou um artigo técnico detalhado. Dado o seu background em engenharia e pesquisa, você achará esta exploração da arquitetura de busca do Rovo particularmente interessante.
Unraveling Rovo search relevance
Este artigo do blog de engenharia da Atlassian, intitulado 'Unraveling Rovo search relevance', detalha a pilha de tecnologia por trás da busca do Rovo. Ele nos dará uma visão sobre como o conteúdo do Google Drive e dos repositórios de código é processado.
Leia as seguintes seções: A introdução e a seção 'Terminologies' para se familiarizar com conceitos como 'Connector' e 'OpenSearch'. 'How we search across 50+ different SaaS applications' para entender como o Rovo ingere conteúdo de fontes como o Google Drive. 'How search works', focando na descrição das camadas da busca: Query intelligence (L0), OpenSearch retriever (L1), Semantic & Behavioral ranker (L2) e Interleaver (L3). A seção 'Index' dentro de 'Relevance' para ver como metadados e sinais de popularidade enriquecem o índice de busca. \nPreste atenção em como a busca combina correspondência lexical (BM25), similaridade semântica (KNN) e múltiplos estágios de reclassificação para encontrar os resultados mais pertinentes.
Em resumo, o Rovo não apenas busca, mas também entende, reclassifica e combina informações de todas as fontes conectadas, usando uma abordagem em várias camadas para garantir a máxima relevância. Nosso trabalho agora é verificar se essa poderosa máquina de busca está corretamente apontada para nossas fontes de dados.
2. Abordagem 1: Teste Interativo
A maneira mais direta de testar a recuperação é simular uma tarefa real e analisar a resposta do agente. Vamos criar um cenário e um prompt que forcem o agente a consultar tanto o Google Drive quanto um repositório de código.
Cenário de Teste:
- Tarefa: Um ticket do Jira (
PROJ-123) solicita a adição de uma nova regra de validação no endpoint de registro de usuário. - Fontes de Conhecimento:
- A regra de negócio específica está detalhada em um documento chamado "Regras de Negócio para Autenticação" no Google Drive.
- As diretrizes de arquitetura, que exigem o uso de
FluentValidationpara todas as validações de modelo, estão no arquivoAGENTS.mddo repositório de backend C#.
Para construir um prompt eficaz, podemos nos inspirar em algumas boas práticas.
Atlassian Rovo Dev — the King of Kontext
O artigo 'Atlassian Rovo Dev — the King of Kontext' oferece dicas práticas para a criação de prompts. Vamos focar em como incluir contexto automaticamente.
Examine a seção 'Pro Tips' no final do artigo, que sugere iniciar os prompts com IDs de tickets do Jira para puxar o contexto automaticamente. Além disso, revise a seção 'The AGENTS.md multiplier', que explica como o Rovo lê automaticamente este arquivo para obter contexto específico do repositório.
Com base nisso, podemos criar o seguinte prompt para o Rovo Dev CLI ou para o Rovo Chat:
PROJ-123: Gere um plano de implementação para a nova regra de validação. Consulte o documento 'Regras de Negócio para Autenticação' e as diretrizes de arquitetura no AGENTS.md do repositório de backend.
Análise do Resultado:
Ao executar este prompt, um resultado "bom" seria uma resposta que:
- Cita a fonte do Google Drive: "De acordo com o documento 'Regras de Negócio para Autenticação', a nova regra exige que o nome de usuário não contenha caracteres especiais."
- Cita a fonte do repositório: "Para a implementação, conforme o
AGENTS.md, deve-se criar uma nova classe de validador usando a bibliotecaFluentValidation."
Se o agente não mencionar uma das fontes ou alucinar informações, isso indica um problema na etapa de recuperação para aquela fonte específica.
3. Abordagem 2: Avaliação Sistemática da Qualidade de Recuperação
Testes interativos são ótimos para verificações pontuais, mas para uma avaliação mais rigorosa e escalável, podemos adotar métricas formais, semelhantes às usadas pela própria Atlassian. Isso será familiar ao seu background de pesquisa acadêmica.
Unraveling Rovo search relevance
Vamos voltar ao artigo 'Unraveling Rovo search relevance' para aprender como a Atlassian mede a eficácia de sua própria busca. Isso nos dará um framework para nossos próprios testes.
Leia atentamente a seção 'How we evaluate search relevance', focando especialmente na subseção 'Offline evaluation'. Entenda as definições de: Recall@k: A porcentagem de consultas que retornam o documento esperado nos k primeiros resultados. NDCG (Normalized Discounted Cumulative Gain): Uma métrica que avalia a qualidade do ranking, considerando a posição dos resultados relevantes. MRR (Mean Reciprocal Rank): Mede quão bem o documento alvo está classificado. LLM-as-a-Judge: O uso de outro LLM para avaliar a qualidade dos resultados.
Aplicação Prática:
Embora não vamos construir um sistema de avaliação automatizado completo agora, podemos aplicar o princípio do Recall@k manualmente. Crie um pequeno "conjunto de ouro" (golden set) de pares (consulta, documento_esperado):
- Consulta 1: "Quais são as regras de negócio para complexidade de senha?"
- Documento Esperado:
password_policy.gdoc(do Google Drive).
- Documento Esperado:
- Consulta 2: "Qual é a maneira padrão de implementar o padrão de repositório em nosso backend C#?"
- Documento Esperado:
backend-repo/AGENTS.md(do repositório Git).
- Documento Esperado:
- Consulta 3: "Descreva a arquitetura para o serviço de notificações mobile."
- Documento Esperado:
mobile-architecture.gdoc(do Google Drive) e/oumobile-repo/AGENTS.md.
- Documento Esperado:
Execute essas consultas no Rovo Chat. Se os documentos esperados (ou informações deles) aparecerem consistentemente entre as primeiras fontes citadas, seu Recall@k (com k pequeno, como 3 ou 5) é alto, indicando que a recuperação está funcionando bem.
4. Técnica de Teste Explícito: Saída Estruturada
Uma maneira poderosa de forçar o agente a provar de onde tirou suas informações é instruí-lo a retornar uma saída estruturada, como JSON. Esta técnica nos dá uma confirmação explícita da recuperação.
From zero to hero: Building Rovo agents
O vídeo 'From zero to hero: Building Rovo agents' demonstra como usar automações para obter saídas estruturadas em JSON de um agente. Podemos aplicar o mesmo princípio em um prompt interativo.
Assista ao trecho de 00:31:58 a 00:34:41. O foco aqui é o conceito de instruir o agente a responder em um formato JSON. Observe como o prompt especifica a estrutura desejada, com chaves e valores, permitindo que a automação subsequente processe os resultados de forma determinística. Usaremos essa ideia para o nosso teste.
Podemos adaptar essa ideia para criar um prompt de teste que exige prova de recuperação:
PROJ-123: Analise a tarefa e as fontes de conhecimento relevantes. Responda em formato JSON com uma chave 'analysis' contendo sua análise e uma chave 'sources' que é uma lista de strings, onde cada string é a URL ou caminho do arquivo da fonte que você consultou (Google Drive e AGENTS.md).
Uma resposta bem-sucedida se pareceria com:
{
"analysis": "A tarefa requer a implementação de uma nova regra de validação para nomes de usuário, conforme especificado nas regras de negócio. A implementação deve usar a biblioteca FluentValidation, de acordo com as diretrizes de arquitetura do repositório.",
"sources": [
"https://docs.google.com/document/d/...",
"backend-repo/AGENTS.md"
]
}
Este método não deixa ambiguidade: se as fontes estiverem listadas, a recuperação ocorreu.
5. Diagnóstico e Melhoria (Introdução)
E se os testes falharem? Se o agente não conseguir encontrar os documentos corretos, o problema geralmente reside na forma como a informação está estruturada ou como a consulta é formulada.
Um vídeo prático ilustra problemas comuns de recuperação e como resolvê-los.
2 Methods For Improving Retrieval in RAG
O vídeo '2 Methods For Improving Retrieval in RAG' aborda exatamente este problema. Ele fornecerá insights sobre por que a recuperação pode falhar e o que podemos fazer a respeito.
Assista aos trechos de 00:00:13 a 00:07:58. Preste atenção aos seguintes pontos: Por que a recuperação é crucial (seção 0). Problemas com buscas ingênuas, como correspondência difusa indesejada e problemas de frequência de palavras-chave (seção 1). Duas soluções poderosas: a. Enriquecer o índice extraindo metadados estruturados do texto (seção 2). b. Transformar a consulta do usuário em uma consulta de filtro estruturada (seção 3).
As principais conclusões são:
- A recuperação pode falhar se houver uma incompatibilidade semântica ou lexical entre a consulta e o conteúdo do documento.
- Podemos melhorar a recuperação seja melhorando o índice (ao segmentar e processar os documentos de forma mais inteligente) ou melhorando a consulta (ao reescrevê-la para ser mais precisa).
O Rovo já faz parte da melhoria da consulta através de sua camada de "Query Intelligence". A melhoria do índice é algo que exploraremos em detalhes na nossa próxima lição.
Exercício Prático
Vamos colocar a teoria em prática. Imagine que você está pronto para o primeiro teste real do seu agente com a seguinte tarefa:
- Ticket Jira:
SEC-42: Implementar autenticação de dois fatores (2FA) para logins de usuários. - Fonte 1 (Google Drive): Um documento chamado "Diretrizes de Negócio para 2FA" descreve os requisitos (ex: suporte para TOTP, códigos de backup).
- Fonte 2 (Git Repo): O arquivo
AGENTS.mddo repositório backend especifica que todos os novos recursos de segurança devem usar a bibliotecaCompany.Security.
Sua tarefa:
- Escreva um prompt para o Rovo que teste sua capacidade de recuperar informações de ambas as fontes para esta tarefa.
- Descreva como seria uma resposta "boa" do agente, indicando especificamente quais informações ele deveria ter extraído do Google Drive e do arquivo
AGENTS.md. - Liste 2-3 consultas específicas e direcionadas que você poderia usar para criar um "conjunto de ouro" e avaliar a recuperação de cada fonte de forma independente.
Conclusão
Nesta lição, passamos da configuração à validação. Aprendemos a testar se nosso agente consegue recuperar informações de forma eficaz do Google Drive e dos repositórios de código, um passo crítico para garantir a confiabilidade de todo o sistema.
Principais Pontos:
- A recuperação de informações no Rovo é um processo sofisticado em várias camadas, combinando busca lexical, semântica e reclassificação.
- O teste interativo com prompts direcionados é a primeira linha de validação para garantir que o agente possa acessar e usar múltiplas fontes de conhecimento.
- A avaliação sistemática com métricas como Recall@k fornece uma medida quantitativa da qualidade da recuperação.
- Exigir saídas estruturadas (como JSON) é uma técnica explícita para forçar o agente a provar quais fontes ele consultou.
- Falhas de recuperação geralmente podem ser atribuídas a uma incompatibilidade entre a consulta e o conteúdo indexado.
Na Próxima Lição:
Tendo tocado no tópico de melhoria de índice, a próxima lição, Refinar estratégias de chunking e indexação com base na estrutura específica de documentos de negócio e arquivos de código, mergulhará fundo neste conceito. Exploraremos como a maneira que dividimos (chunk) e preparamos nossos documentos e código para indexação pode impactar dramaticamente a qualidade da recuperação, tornando nosso agente ainda mais preciso e eficaz.