Montar um protótipo de RAG leva uma tarde; fazer busca semântica sobreviver à produção leva meses. O fracasso segue padrão: chunks de tamanho fixo cortando frases ao meio, documento antigo rankeando para sempre, recuperação mediana colocando teto na qualidade da resposta. Pipeline que funciona junta cinco peças.

Chunking semântico antes de janela fixa

Janela fixa de 512 tokens quebra ideia no meio. Chunk por estrutura respeita headers e parágrafos, com overlap de 10-15% entre vizinhos para o contexto atravessar a fronteira. Metadata acompanha cada chunk: origem, seção, data, título. É ela que habilita filtro por tenant e citação com link na resposta final.

Embedding: benchmark no seu corpus

text-embedding-3-small da OpenAI contra bge-m3 e e5-large open-source: o vencedor aparece no seu dado, no seu idioma, no seu domínio. Leaderboard de terceiro mente. Dimensão define custo de storage (1536 dims custam 3x mais que 512 em qualquer vector store). Rode recall@k num conjunto próprio de consultas antes de fechar contrato.

pgvector cobre a maioria dos casos

Índice HNSW dentro do Postgres, join SQL entre vetor e linha relacional, um sistema a menos para operar. O gatilho de formatura para vector DB dedicado chega perto de 50M+ de vetores ou com SLA de latência estrito (~30ms de p95). Antes desse ponto, complexidade extra custa mais do que devolve.

Híbrido com reranking: onde a qualidade mora

Busca 100% vetorial erra em nome próprio, código de produto e sigla; BM25 erra no resto. Combine as duas com Reciprocal Rank Fusion e ponha um cross-encoder por cima (cohere-rerank-3.5 ou bge-reranker-v2-m3) para reordenar os top-50 candidatos no top-k final. Ajuste top_k por tipo de consulta: FAQ segura com 5, análise jurídica pede 15.

Loop de avaliação desde o dia um

Golden set de 50-200 pares pergunta/resposta construído a partir de queries reais, guardado junto dos prompts. Meça hit-rate@k antes e depois de cada mudança no pipeline. Trocou o modelo de embedding? Tudo precisa de re-embedding de qualquer forma; aproveite e reexecute a suíte completa na mesma passada.

Chunking por estrutura, embedding benchmarkado no seu dado, busca híbrida com reranking e avaliação contínua: as quatro peças separam demo de produto.