Blog
Engenharia de RAGBasic RAG Pipeline
ragnlpai

Basic RAG Pipeline

Como funciona uma pipeline básica de RAG — dos documentos até a resposta gerada.

21 de maio de 20263 min read

RAG (Retrieval-Augmented Generation) é uma técnica que combina busca de informação com geração de texto. Em vez de depender apenas do conhecimento que o LLM absorveu durante o treinamento, você fornece contexto relevante em tempo real — o modelo responde com base nesse contexto.

Uma pipeline básica de RAG tem duas fases: indexação e consulta.

Fase 1: Indexação

É o processo offline de preparar os documentos para busca.

1. Carregamento dos documentos

Os documentos são carregados de alguma fonte — PDFs, páginas web, arquivos de texto, banco de dados, etc.

2. Chunking

Os documentos são divididos em pedaços menores chamados chunks. Isso é necessário porque LLMs têm limite de contexto e porque chunks menores aumentam a precisão da busca — um chunk bem delimitado tende a tratar de um único assunto.

A estratégia de chunking afeta diretamente a qualidade das respostas. Chunks muito grandes trazem ruído; chunks muito pequenos perdem contexto.

3. Embedding

Cada chunk é transformado em um vetor numérico (embedding) por um modelo de embedding. Vetores semanticamente próximos ficam próximos no espaço vetorial.

chunk de texto → modelo de embedding → vetor [0.12, -0.34, 0.87, ...]

4. Armazenamento na Vector Database

Os vetores são armazenados em uma vector database (Pinecone, Qdrant, Weaviate, pgvector, etc.) junto com o texto original do chunk e seus metadados.

Fase 2: Consulta

É o processo online que acontece a cada pergunta do usuário.

1. Embedding da query

A pergunta do usuário passa pelo mesmo modelo de embedding usado na indexação, gerando um vetor.

2. Busca por similaridade

O vetor da query é comparado com os vetores armazenados. Os chunks com maior similaridade (cosine similarity) são retornados — esses são os top-k chunks.

3. Construção do prompt

Os chunks recuperados são inseridos no prompt junto com a pergunta do usuário:

Contexto:
[chunk 1]
[chunk 2]
[chunk 3]

Pergunta: {query do usuário}

4. Geração

O LLM recebe o prompt e gera a resposta baseada no contexto fornecido.

Fluxo completo

[documentos] → chunking → embedding → vector db
                                           ↓
[query] → embedding → busca por similaridade → top-k chunks
                                           ↓
                              [chunks + query] → LLM → resposta

Limitações do RAG básico

  • Qualidade do chunking — chunks mal definidos degradam toda a pipeline.
  • Busca puramente semântica — pode falhar em queries com termos técnicos ou nomes próprios específicos. Por isso pipelines avançadas combinam busca densa (embeddings) com busca esparsa (BM25).
  • Contexto fragmentado — chunks recuperados de forma isolada podem perder o fio condutor do documento original.

Essas limitações motivam técnicas mais avançadas como hybrid search, reranking e HyDE, que abordaremos nos próximos artigos.

Exemplos práticos estão disponíveis neste repositório.