Voltar para Trilha 2
Modulo 2.4

RAG e sistemas com base de conhecimento

Retrieval-Augmented Generation aplicado a codigo. Chunking, busca, reranking e infraestrutura de indice.

1

📚 Fundamentos de RAG - Retrieval-Augmented Generation e quando faz sentido

O que e:

RAG e a tecnica de buscar informacao relevante de uma base de dados e injetar no contexto do LLM antes de gerar a resposta. Em vez de depender apenas do conhecimento treinado no modelo, voce da acesso a documentacao atualizada, codigo do projeto e dados especificos do dominio.

Por que aprender:

LLMs tem knowledge cutoff e nao conhecem seu codigo privado. RAG resolve os dois problemas: da acesso a informacao atualizada e ao contexto especifico do seu projeto. Para codebases grandes (100k+ linhas), RAG e a unica forma viavel de dar contexto relevante sem estourar a context window.

Conceitos-chave:

Retrieval pipeline, embedding models, vector stores, semantic search vs keyword search, context injection, relevance scoring, RAG vs fine-tuning trade-offs.

2

🌳 Chunking inteligente - AST boundaries, nao contagem de linhas

O que e:

Chunking e como voce divide o codigo fonte em pedacos para indexar. Chunking burro divide por linhas fixas (500 linhas por chunk). Chunking inteligente usa AST (Abstract Syntax Tree) para dividir por funcoes, classes e modulos, respeitando os limites semanticos do codigo.

Por que aprender:

Chunking por linhas corta funcoes no meio, mistura contextos e produz resultados irrelevantes na busca. Chunking por AST mantem a coerencia semantica: cada chunk e uma funcao completa, uma classe inteira, um modulo com seus imports. A qualidade do RAG depende diretamente da qualidade do chunking.

Conceitos-chave:

Tree-sitter para parsing multi-linguagem, AST node types, hierarchical chunking, overlap strategies, chunk size vs retrieval quality, docstring inclusion, import resolution.

3

🔎 Two-stage retrieval - Vector search seguido de LLM reranking

O que e:

Um pipeline de busca em dois estagios: primeiro, vector search retorna os top-K candidatos (rapido e barato). Depois, um LLM reranker avalia esses candidatos e reordena por relevancia real (mais preciso mas mais caro). Combina velocidade com precisao.

Por que aprender:

Vector search sozinho retorna resultados por similaridade semantica, mas "similaridade" nao e "relevancia". Um chunk sobre autenticacao pode ser semanticamente similar a um sobre autorizacao sem ser relevante. O LLM reranker entende a intencao da query e filtra o que realmente importa.

Conceitos-chave:

Bi-encoder vs cross-encoder, retrieval recall vs precision, top-K selection, reranking prompts, hybrid search (vector + BM25), Reciprocal Rank Fusion, cost vs quality curve.

4

🏷️ Metadata annotation - Tags de linguagem, tipo de funcao, dependencias

O que e:

Enriquecer cada chunk de codigo com metadata estruturada: linguagem, tipo (funcao, classe, test, config), dependencias, camada arquitetural (controller, service, repository), ultimo autor, frequencia de mudanca. Essa metadata permite filtros na busca e melhora drasticamente a precisao.

Por que aprender:

Sem metadata, uma busca por "funcao de autenticacao" retorna testes, configs e implementacoes misturados. Com metadata, voce filtra "tipo=implementacao, camada=service" e recebe exatamente o que precisa. A metadata transforma busca generica em busca precisa.

Conceitos-chave:

Metadata schema design, automated tagging com AST, git blame integration, dependency extraction, filtered search, faceted retrieval, metadata freshness.

5

🧰 Ferramentas RAG - CodeRAG + MCP, code-graph-rag, CocoIndex, Tree-sitter

O que e:

O ecossistema de ferramentas para implementar RAG em codebases. CodeRAG integra com MCP para servir contexto. Code-graph-rag usa grafos de dependencia. CocoIndex faz indexacao incremental. Tree-sitter faz parsing multi-linguagem para chunking estrutural.

Por que aprender:

Implementar RAG do zero e um projeto de meses. Essas ferramentas resolvem os problemas ja conhecidos (chunking, indexacao, busca, serving) e deixam voce focar no que importa: a qualidade do contexto que chega ao LLM. Saber qual ferramenta usar pra cada caso acelera em 10x.

Conceitos-chave:

CodeRAG server via MCP, graph-based retrieval, incremental indexing, Tree-sitter grammars, embedding models para codigo, vector databases (Qdrant, Chroma, Pinecone), self-hosted vs managed.

6

♻️ Indice como infraestrutura - CI/CD re-index, embeddings atualizados, MCP serve contexto

O que e:

Tratar o indice RAG como infraestrutura de primeira classe: atualizado automaticamente no CI/CD a cada merge, com embeddings regenerados para arquivos modificados, e servido via MCP para que qualquer agente tenha acesso ao contexto atualizado.

Por que aprender:

Um indice desatualizado e pior que nenhum indice: o LLM recebe contexto obsoleto e gera codigo baseado em APIs que mudaram. Integrar re-indexacao no CI/CD garante que o indice esta sempre fresco. Servir via MCP garante que qualquer agente pode consumir.

Conceitos-chave:

Incremental re-indexing, CI/CD hooks para indexacao, embedding invalidation, MCP resource serving, cache de embeddings, monitoring de freshness, cost of re-indexing.

📝 Exercicios

Projeto: RAG do zero sem frameworks (4h)

Python puro para entender cada peca: (1) carregar arquivos .md e .py do repo, (2) chunking 512 tokens com overlap 50, (3) embedding com OpenAI/Ollama, (4) storage em FAISS/ChromaDB, (5) retrieval por similaridade cosine, (6) generation com contexto recuperado. Pergunta obrigatoria de debrief: "onde o seu RAG falhou e por que?"

Projeto: Developer Knowledge Base (8h)

Indexar documentacao interna real (ADRs, READMEs, wikis, PRs, postmortems). Interface de chat que responde: "por que escolhemos Postgres?", "como funciona o deploy?", "qual foi o incidente de novembro?". Demonstrar casos onde RAG acertou E onde alucionou, propor mitigacao.

Lab: RAG em codigo (3h)

Indexar codebase com tree-sitter para chunking semantico por funcao/classe. Agente que responde: "onde e feita a autenticacao?", "mostre todos os usos da funcao X", "explique o fluxo de checkout". Comparar chunking por funcao vs. por caracteres.

Exercicio: Avaliacao quantitativa de RAG (60 min)

Dataset de 20 perguntas com respostas conhecidas. Medir: precision, recall, fidelidade. Iterar chunking e retrieval strategy ate melhorar metricas. Documentar o que mudou em cada iteracao.