Para que um modelo de Inteligência Artificial seja verdadeiramente útil em cenários específicos, como chatbots de suporte ao cliente ou assistentes de análise jurídica, ele precisa de acesso a uma base de conhecimento. A abordagem padrão do mercado para expandir o conhecimento de uma IA é o Retrieval-Augmented Generation (RAG).
Embora o RAG seja excelente para escalar bases de conhecimento que não cabem em um único prompt, os sistemas tradicionais possuem uma falha fundamental: eles frequentemente destroem o contexto da informação.
Neste artigo, vamos explorar o que causa esse problema e como uma técnica chamada Contextual Retrieval pode reduzir as falhas de recuperação de dados em até 67%.
O Enigma do Contexto no RAG Tradicional
Em um sistema RAG padrão, uma grande base de conhecimento é dividida em fragmentos menores (chamados de chunks). Esses fragmentos são convertidos em embeddings (vetores que capturam o significado semântico) ou processados por funções de ranqueamento de correspondência exata, como o BM25, que usa a frequência de termos (TF-IDF) para encontrar palavras específicas.
O problema surge porque, ao fatiar um documento, os fragmentos isolados perdem o contexto. Imagine que a sua base de dados contenha relatórios financeiros e o sistema isole o seguinte fragmento: “A receita da empresa cresceu 3% em relação ao trimestre anterior.”.
Isoladamente, o sistema não sabe a qual empresa ou a qual trimestre o texto se refere, o que torna quase impossível que a IA recupere ou utilize essa informação corretamente para responder a uma pergunta.
A Solução: Contextual Retrieval
O Contextual Retrieval resolve esse gargalo adicionando um contexto explicativo específico no início de cada fragmento antes de criar os embeddings (Contextual Embeddings) e o índice de busca exata (Contextual BM25).
Anotar manualmente milhares ou milhões de fragmentos seria inviável, mas isso pode ser automatizado utilizando modelos de IA. É possível instruir um LLM a ler o documento completo e gerar um pequeno texto de 50 a 100 tokens explicando como aquele fragmento específico se encaixa no panorama geral do documento original. O texto gerado é então anexado ao fragmento de origem.
Mas isso não seria muito caro?
Historicamente, passar o documento inteiro como referência repetidas vezes geraria um custo alto. No entanto, com a funcionalidade de Prompt Caching (cache de prompt), você pode carregar o documento de referência na memória da IA apenas uma vez. Isso reduz drasticamente a latência e viabiliza um custo baixo, de aproximadamente US$ 1 por milhão de tokens do documento para gerar os fragmentos contextualizados.
Nota: se a sua base de dados for pequena (menos de 200.000 tokens), o RAG pode nem ser necessário. Você pode simplesmente colocar todo o material no prompt da IA usando o cache, reduzindo custos em até 90%.
Elevando o Desempenho ao Máximo
A implementação do Contextual Retrieval traz ganhos significativos. Ao combinar os Contextual Embeddings com o Contextual BM25, as pesquisas mostram uma redução de 49% na taxa de falhas na recuperação dos 20 fragmentos mais relevantes. O uso conjunto dos modelos semânticos e de correspondência exata de termos é fundamental para capturar tanto o sentido geral quanto os identificadores exclusivos.
Para sistemas que exigem precisão absoluta, é possível adicionar uma etapa final chamada Reranking (reclassificação). Funciona assim:
– O sistema faz a busca inicial e recupera os principais fragmentos potenciais (por exemplo, os 150 melhores).
– Esses fragmentos passam por um modelo de reclassificação, que atribui uma pontuação de relevância a cada um.
– O sistema filtra os fragmentos e envia apenas os mais relevantes (os top 20) para o modelo de IA gerar a resposta final.
Ao combinar o Contextual Retrieval com o Reranking, a taxa de falha na recuperação despenca impressionantes 67%.
Resumo das Melhores Práticas
Ao otimizar seu sistema de Inteligência Artificial, lembre-se de que todos os benefícios descritos se acumulam. Para obter resultados em estado da arte:
- Use Embeddings + BM25: É muito superior a usar embeddings isoladamente.
- Contextualize seus chunks: Adicionar resumos explicativos transforma a precisão do sistema.
- Passe os top-20 resultados para a IA: O número ideal de fragmentos para alimentar o modelo de resposta costuma ser 20, superando recortes menores como 5 ou 10.
- Adicione Reranking: Embora adicione um pouco de latência, filtrar os melhores fragmentos de uma amostra maior eleva drasticamente a qualidade final.
Escolha bons provedores: Experimente modelos robustos de embeddings (testes indicaram excelência no Voyage e Gemini).
David Matos
Referências:
Introducing Contextual Retrieval
Pipelines Para LLMs com ETL e Orquestração de Dados Não Estruturados
