O Ciclo de Hype do RAG e a Realidade

RAG (Retrieval-Augmented Generation) era para ser a resposta para as alucinações dos LLMs. O artigo de 2020 de Lewis et al. prometia respostas fundamentadas com citações. Mas na produção empresarial, os resultados muitas vezes decepcionam. Os usuários não confiam nas respostas, as citações são vagas e os trechos recuperados erram o alvo.

O reflexo da indústria é empilhar mais infraestrutura: modelos mais fortes, janelas de contexto maiores, melhores rerankers. Mas o problema real não é infraestrutural. É sobre disciplina de engenharia, expertise de domínio e entender o que RAG realmente é.

Este artigo, baseado na série Document Intelligence, argumenta que RAG empresarial não é um problema de ML. É um problema de busca e extração com uma camada de geração por cima. O segredo é construir brick by brick, com foco em auditabilidade e amplificação de especialistas.

Developer debugging a RAG pipeline with structured JSON output and source citations Coding Session Visual

Os Quatro Blocos: Uma Abordagem Relacional

A série propõe quatro componentes principais, cada um produzindo dados estruturados para auditoria:

  1. Parsing: Converter PDFs em tabelas (linhas, tabelas, sumário).
  2. Parsing de Perguntas: Estruturar a consulta do usuário em tabelas relacionais.
  3. Recuperação: Filtrar e buscar usando uma combinação de sumário, palavras-chave e embeddings.
  4. Geração: Usar um schema Pydantic para produzir JSON tipado com citações.

Aqui está um exemplo mínimo da etapa de recuperação + geração, mostrando como manter verificável:

from pydantic import BaseModel
from typing import List
import fitz  # PyMuPDF

# Define o schema de saída
class Resposta(BaseModel):
    resposta: str
    citacoes: List[str]

# Recuperação simples: palavra-chave + fallback de embedding
def recuperar(caminho_pdf: str, pergunta: str, top_k: int = 3):
    doc = fitz.open(caminho_pdf)
    passagens = []
    for num_pagina in range(len(doc)):
        texto = doc[num_pagina].get_text()
        # Pontuação simples de palavra-chave; na prática, combine com embeddings
        pontuacao = sum(1 for palavra in pergunta.split() if palavra.lower() in texto.lower())
        passagens.append((pontuacao, num_pagina, texto))
    passagens.sort(reverse=True)
    return passagens[:top_k]

# Gera com citações
def gerar(passagens, pergunta):
    # Na prática, isso chamaria um LLM com o schema
    contexto = "\n".join([f"Página {p}: {t}" for _, p, t in passagens])
    return Resposta(resposta="A resposta é...", citacoes=[f"página {p}" for _, p, _ in passagens])

# Executa o pipeline
passagens = recuperar("contrato.pdf", "Qual é a franquia?")
resultado = gerar(passagens, "Qual é a franquia?")
print(resultado.json())

Esse script tem ~100 linhas e é mais verificável do que muitos sistemas de produção.

Data analyst reviewing a table of retrieved passages and relevance scores Programming Illustration

Limites e Cuidados

  • Não é para QA de domínio aberto: Essa abordagem assume que você tem especialistas de domínio que conhecem o corpus.
  • Foco apenas em PDF: Outros formatos (Word, Excel) precisam de lógica de parsing diferente.
  • Sem bala de prata: Não vai consertar um processo de parsing de documentos fundamentalmente quebrado.

Próximos Passos para Aprender

Comece com o pipeline mínimo e depois melhore cada bloco sistematicamente. Foque em construir uma trilha de auditoria relacional e dicionários orientados por especialistas. A série também cobre tópicos avançados como parsing adaptativo, referências cruzadas e indexação em escala de corpus.

Para mais sobre tópicos relacionados, veja como funcionam os pseudo-elementos CSS de destaque ou veja um exemplo real de IA em diagnóstico de câncer na AWS.

Server room with document processing pipeline and audit logs Algorithm Concept Visual

Conclusão

RAG empresarial não é sobre treinar um modelo ou comprar um banco de dados vetorial. É sobre entender seus documentos, seus especialistas e construir um pipeline transparente. A abordagem brick by brick garante que cada etapa seja auditável e cada resposta seja fundamentada.

Principal lição: Pare de tratar RAG como um problema de ML. Trate como uma disciplina de engenharia. Comece com o básico e você construirá sistemas em que os usuários realmente confiam.

Este conteúdo foi elaborado com o auxílio de ferramentas de IA, com base em fontes confiáveis, e revisado pela nossa equipe editorial antes da publicação. Não substitui o aconselhamento de um profissional especializado.