🔎 RAG — Retrieval Augmented Generation
Faça perguntas em linguagem natural sobre seus dados tratados (camada Gold). Dados raw? Use o Notebook para tratá-los primeiro.
para começar a perguntar
Entenda passo a passo como transformamos seus dados em conhecimento consultável por IA. Clique em cada etapa para expandir e ler o conteúdo completo.
Um LLM (como Gemini ou GPT) não sabe responder isso — ele nunca viu seus dados. E mesmo que soubesse, não cabem 1 milhão de linhas na "memória" do LLM.
RAG resolve isso em 3 etapas:
LLMs têm limite de tokens (contexto). Enviar 10 mil linhas consumiria toda a memória e geraria erros ou respostas ruins. RAG busca somente o relevante.
all-MiniLM-L6-v2
— rápido e eficiente. Cada texto vira um vetor de 384 dimensões.
Textos com significado parecido geram vetores próximos no espaço numérico. Isso permite buscar por "receita de janeiro" e encontrar a linha que fala de "faturamento do mês 1".
Um vetor é uma lista de números. Exemplo simplificado: ["receita", "janeiro"] →
[0.23, -0.45, 0.78, ...] (384 números no modelo real).
A mágica: se "faturamento janeiro" gerar vetor similar a "receita janeiro",
significa que o modelo entendeu que são conceitos próximos!
Dados grandes precisam ser divididos em pedaços (chunks). Se cada chunk for uma linha de 100 caracteres, cada vetor representa uma linha. Se for grande demais, o vetor perde granularidade. Recomendamos 20-50 linhas por chunk.
No DataNow, cada coleção RAG é uma tabela no ChromaDB com:
- id — identificador único do chunk
- embedding — o vetor de 384 dimensões
- document — o texto original do chunk
- metadata — origem, linha, tabela, data...
O fluxo completo:
- Pergunta do usuário
- Embedding da pergunta (SentenceTransformer)
- Busca no ChromaDB (top-K similares)
- Montagem do prompt com contexto + pergunta
- Envio ao LLM (sua API key cadastrada)
- Resposta gerada com base nos dados reais
O RetrievalQA é prático mas pouco controlável. O prompt ingênuo (naive)
acima permite customizar exatamente o que o LLM recebe — incluindo a instrução de citar fontes.
Isso gera respostas mais precisas e auditáveis.
No Notebook,
carregue seus dados tratados (camada Gold), faça chunking,
gere embeddings, salve no ChromaDB e teste uma pergunta.
Por que fazer na mão? Porque assim você entende cada etapa —
e quando algo não funcionar, você saberá debugar. Engineering de dados é isso!
O sistema atual usa chain linear (busca → responde). Numa versão futura, poderíamos usar um agente LangChain que:
- Decide qual coleção consultar baseado na pergunta
- Refina a busca se a resposta for insuficiente
- Executa código Python para agregar dados antes de responder
- 交叉 valida respostas com múltiplas fontes