RAGVector SearchProductionArchitecture

RAG em Produção: Da Prova de Conceito ao Sistema Real

João Oliveira 2025-12-20 8 min

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

  1. Chunking é arte, não ciência. Teste com dados reais do seu domínio.
  2. Sempre tenha fallback. Se o RAG falha, retorne para uma busca tradicional.
  3. 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.

Compartilhar artigo:

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.

Ver Mais Artigos