RAG em Produção: Da Prova de Conceito ao Sistema Real
O Problema dos RAGs de Tutorial
A maioria dos tutoriais sobre RAG (Retrieval-Augmented Generation) ensina o básico: embeddings + vector store + GPT. Mas quando você coloca isso em produção, descobre problemas críticos:
- Chunking ingênuo quebra contexto (cortar no meio de uma frase técnica)
- Recall baixo (não encontra documentos relevantes em 40% das queries)
- Latência inaceitável (5-10 segundos por query)
- Custo explosivo (re-embeddar tudo a cada update)
Nossa Arquitetura de RAG Enterprise
No MeAssessoraAI, construímos um pipeline que processa milhares de páginas de legislação e jurisprudência. Aqui está como resolvemos cada problema:
1. Chunking Semântico com LLMs
Ao invés de dividir documentos a cada 512 tokens, usamos um modelo menor (GPT-3.5-turbo) para identificar "quebras naturais" como:
- Mudanças de assunto
- Início de nova seção legal
- Fim de um argumento completo
Resultado: Precisão de recall aumentou de 62% para 89%.
2. Hybrid Search: Dense + Sparse
Combinamos:
- Embeddings densos (text-embedding-3-large) para similaridade semântica
- BM25 (busca por palavras-chave) para termos técnicos específicos
Usamos um fusion score ponderado que prioriza matches exatos em termos legais (como "Lei 8.666/93").
3. Reranking com Cross-Encoders
Após recuperar os top 20 chunks, usamos um modelo Cohere Rerank para reordenar baseado na query específica do usuário.
Impacto: Redução de 35% em "respostas corretas, mas irrelevantes".
4. Cache Inteligente de Embeddings
Armazenamos embeddings no Qdrant com metadados incluindo:
- Hash MD5 do chunk original
- Timestamp de última atualização
- Referência à página do documento fonte
Quando um documento é atualizado, só re-embeddamos os chunks modificados.
Stack Técnica
- Vector DB: Qdrant (self-hosted em AWS EC2)
- Embeddings: OpenAI text-embedding-3-large (3072 dimensões)
- Reranking: Cohere Rerank v3
- Chunking: Recursive Character Text Splitter + GPT-3.5-turbo
- Monitoring: Langfuse para observabilidade de LLM calls
Lições Aprendidas
- Chunking é arte, não ciência. Teste com dados reais do seu domínio.
- Sempre tenha fallback. Se o RAG falha, retorne para uma busca tradicional.
- Meça tudo. Precision, Recall, Latency P95, custo por query.
Próximos Passos
Estamos experimentando com HyDE (Hypothetical Document Embeddings) para queries complexas e Query Rewriting com LLMs para melhorar a formulação da busca.
A diferença entre um RAG de tutorial e um RAG de produção é a mesma entre um CRUD app e um sistema distribuído: os detalhes importam.
Gostou deste artigo?
Vamos conversar sobre como podemos aplicar essas técnicas no seu projeto. Nossa equipe está pronta para transformar sua visão em realidade.