Inteligência artificial, sem ruído.
Tutoriais4 min

As 6 Lições Não Contadas da Recuperação em RAG: Por Que Cosseno Não É a Base

Esqueça chunk-embed-cosseno-top-k. Uma série sobre Enterprise Document Intelligence revela que recuperação é filtragem em tabelas estruturadas, embeddings vêm por último, e palavras-chave provam ausência — seis lições que a maioria dos tutoriais de RAG omite.

As 6 Lições Não Contadas da Recuperação em RAG: Por Que Cosseno Não É a Base
Imagem gerada por IA via Nano Banana / Gemini 2.5 Flash

A história dominante sobre recuperação em RAG é “embede a pergunta, retorne top-k por similaridade de cosseno, opcionalmente reordene”. Kezhan Shi, autor da série Enterprise Document Intelligence no Towards Data Science, discorda de quase todas as partes dessa narrativa. Em um artigo-manifesto, ele apresenta seis lições que a maioria dos tutoriais omite.

Recuperação é filtragem, não busca

A diferença não é semântica — é mecânica. Busca pontua cada candidato por similaridade contínua (cosseno, BM25), força um corte top-k e sempre retorna algo, mesmo quando a resposta não está no documento. Filtro aplica uma condição booleana (linha.contém("X"), toc.titulo em [...]), retém cada linha que corresponde e nada mais, e pode retornar zero linhas quando o documento não contém a resposta.

A consequência de auditoria é a maior diferença: a condição de um filtro é uma linha de código inspecionável que roda igual daqui a seis meses; o ranking de uma busca depende de quais dimensões do embedding importaram, e você não pode reproduzir esse julgamento sem reexecutar o modelo.

Âncora e contexto, mantidos separados

Você ancora na única linha que menciona “prêmio” (precisão), mas passa a seção inteira ao redor para a geração (contexto suficiente). Confundir os dois quebra precisão e cobertura de uma vez. O top-k força uma escolha: chunks pequenos perdem contexto, chunks grandes perdem precisão. Separando âncora e contexto como um par tipado, o sistema obtém ambos.

Embeddings vêm por último, não primeiro

Palavras-chave sempre rodam (barato, determinístico); o índice (TOC) do próprio documento é um método de recuperação de primeira classe; embeddings são o sinal final opcional, usado apenas quando há divergência de vocabulário esperada. O reflexo da era 2024 começa com embeddings; Shi os deixa para os casos onde os sinais mais baratos falharam.

Exemplo concreto: “Qual é a data de vigência?” em uma apólice de seguro. O RAG ingênuo embebe e retorna 5 chunks. O método da série roda palavra-chave em “vigência” e “data” → 1 linha encontrada → pronto. Embeddings nunca rodaram. Custo: uma passada de regex; milissegundos. A busca de cosseno de 2 centavos não aconteceu.

Palavras-chave provam ausência; embeddings não podem

Zero em uma busca por palavra-chave significa que a resposta genuinamente não está lá. Zero em similaridade de embedding pode ser ausência ou apenas palavras diferentes. Essa assimetria é o caso para palavras-chave como sinal primário em RAG empresarial. Exemplo: “este contrato cobre danos por terremoto?” em uma apólice só de inundação. Palavra-chave “terremoto” retorna zero — o pipeline pode responder “não encontrado” com confiança. Embeddings retornariam 5 chunks sobre “desastres naturais” e o LLM poderia inferir um “sim” errado.

Co-ocorrência supera BM25 em corpora estreitos

BM25 ranqueia por frequência de termo, mas em documentos empresariais o formato da resposta é uma menção de um tópico ao lado de um valor específico. Co-ocorrência e âncoras de regex de alto valor batem IDF estatístico em corpora de 20 documentos onde todo termo é “raro” pelos padrões da Wikipedia.

Uma passada de LLM sobre o índice (TOC)

Entregar as 20-100 linhas do TOC a um modelo pequeno e perguntar quais seções respondem à pergunta custa uma chamada cacheada e captura as paráfrases (“saída antecipada” ≈ “Rescisão”) que correspondência de substring perde. O raciocínio sobre o TOC é um dos sinais de recuperação mais subutilizados em RAG de produção.

Um padrão, múltiplos setores

O mesmo padrão de três sinais (palavra-chave no line_df + raciocínio no toc_df + embedding como fallback) se mantém em qualquer domínio. O vocabulário e a profundidade do TOC mudam; a hierarquia de sinais, não. Em cinco setores testados — jurídico, financeiro, médico, seguros e compliance — apenas a linha médica precisou de embeddings, porque o vocabulário do usuário (“taquicardia”) divergia do documento (“frequência cardíaca rápida”).

As seis lições compartilham um movimento: recuse o reflexo chunk-embed-cosseno e trate a recuperação como filtragem em tabelas estruturadas. Os notebooks executáveis que acompanham a série estão disponíveis em github.com/doc-intel/notebooks-vol1.


Descubra mais sobre noticiAI

Assine para receber nossas notícias mais recentes por e-mail.

R
Sobre o autorRedação Noticiai

Equipe editorial dedicada a explicar inteligência artificial com clareza, independência e contexto.