RAG Multimodal on Databricks

Vision LLM + busca vetorial + agente LangGraph
100% na plataforma Databricks

Allex Lima · AI/ML Specialist Solutions Architect, Databricks Brasil

Visão Geral

Arquitetura End-to-End

Cada componente roda dentro da plataforma Databricks

Diagrama de arquitetura do Wiki RAG on Databricks

Orquestrado por Declarative Automation Bundles · Avaliado com MLflow GenAI Evaluation · Clique no diagrama para ampliar

Deep Dive

Lakebase PostgreSQL Gerenciado

PostgreSQL 16 gerenciado pela Databricks — autoscaling, scale-to-zero e pgvector nativo

🐘

PostgreSQL 16

100% compatível, gerenciado dentro do workspace

Scale-to-Zero

Autoscaling sob demanda, sem custo quando idle

🔐

OAuth Nativo

Autenticação Databricks integrada + SSL obrigatório

🌿

Branching

Branches para dev/test — workflow tipo Git

🧮 pgvector — Busca Vetorial Nativa

HNSW

Grafo navegável hierárquico. Busca em ~1ms com alta precisão. Ideal para produção.

IVFFlat

Índice invertido com clusters. Build mais rápido, menor uso de memória. Bom para prototipação.

🎯 Papel neste projeto

Papel duplo: uma instância hospeda o MediaWiki (mediawiki.*) e o vector store (wiki_rag.*)

Sem infra externa: substitui RDS + Pinecone — tudo dentro da Databricks

Leitura direta: pipeline lê tabelas nativas do MediaWiki via SQL — sem API

Deep Dive

Lakebase Schema & Configuração

Schemas na mesma instância

-- MediaWiki (gerenciado pelo MW)
SCHEMA mediawiki
  ├── page, revision, text, slots ...

-- RAG (gerenciado pelo pipeline)
SCHEMA wiki_rag
  ├── wiki_chunks -- texto limpo (text/image)
  ├── wiki_images -- metadata + captions
  ├── wiki_embeddings -- vector(1024) HNSW
  ├── conversations -- sessões de chat
  ├── messages -- histórico multi-turn
  └── sync_state -- watermark incremental

Fluxo de dados

📖

MediaWiki → mediawiki.*

MediaWiki escreve diretamente nas tabelas page, revision, text. Dados de origem.

🔄

Pipeline → wiki_rag.*

mediawiki.* via SQL, processa e popula chunks, embeddings, imagens e sync_state.

🤖

Agente → wiki_rag.*

Busca vetorial em wiki_embeddings, lê/grava conversa em conversations e messages.

🔑

Isolamento por roles

MediaWiki usa mw_role restrito ao seu schema. Pipeline e agente usam role do workspace.

Pipeline de Dados

Pipeline de Ingestão

Incremental — processa apenas páginas novas (watermark por rev_id)

Watermark incremental: a tabela sync_state armazena o último rev_id processado. A cada execução, o pipeline consulta apenas revisões com rev_id maior que o watermark, evitando reprocessamento e garantindo ingestão eficiente mesmo com a base crescendo.

📖 MediaWiki
Tabelas PG nativas
🧹 Clean
mwparserfromhell
🖼️ Vision
Image Captioning
✂️ Chunk
Recursive Splitter
🧠 Embed
FMAPI
💾 Store
Lakebase pgvector

Parâmetros do Pipeline

ParâmetroValorDescrição
Chunk Size1024 tokensTamanho máximo de cada chunk de texto
Chunk Overlap128 tokensSobreposição entre chunks adjacentes
SplitterRecursiveCharacterTextSplitterSeparadores: \n\n, \n, . ,
Embedding Batch64 textosTextos por request ao FMAPI
Image Resize1024×1024 maxRedimensionamento antes do Vision LLM
ScheduleHourlyCron via Lakeflow Jobs
Modelos

Foundation Model API

Três modelos, todos servidos via FMAPI — sem infra de GPU para gerenciar

🧠 Embedding

Qwen3 Embedding

databricks-qwen3-embedding-0-6b

1024 dims · Multilingual

Escolhido pelo suporte a PT-BR

💬 LLM + Vision

Claude Sonnet 4.6

databricks-claude-sonnet-4-6

Geração + Grading + Captions

Multimodal — texto e visão

⚖️ Judge

Gemini 2.5 Flash

databricks-gemini-2-5-flash

Evaluation Judge

Custo baixo para scoring automático

FMAPI = pay-per-token · Sem provisionar GPUs · Endpoints gerenciados pela Databricks

Agente RAG

Fluxo Agêntico LangGraph

StateGraph com loop de reescrita automática — retrieve, grade, rewrite, generate

Pergunta do Usuário
+ histórico de conversa
1. Retrieve
pgvector cosine similarity · top_k=8
2. Grade Documents
LLM avalia relevância · yes/no
Documentos relevantes?

SIM ✓

4. Generate
Claude Sonnet · max 1024 tokens

NÃO ✗ (max 2x)

3. Rewrite Query
Reformula e volta ao Retrieve
ResponsesAgent (MLflow 3) LangGraph StateGraph Conversation Memory via Lakebase
MLflow 3

MLflow Ciclo de Vida do Agente

Plataforma open-source integrada à Databricks para rastrear, versionar, avaliar e servir modelos de IA

📝 Log Model
mlflow.models.set_model()
📦 Register UC
catalog.schema.agent
🧪 Evaluate
GenAI Scorers
🚀 Serve
Mosaic AI Model Serving

Como funciona neste projeto

ResponsesAgent (MLflow 3)

O WikiRAGAgent estende ResponsesAgent — formato nativo da Responses API. Compatível com AI Playground sem adaptação.

Unity Catalog Model Registry

Modelo versionado em catalog.schema.wiki_rag_agent. Governança, linhagem e controle de acesso via UC.

Tracing Automático

mlflow.langchain.autolog() captura cada chamada LangGraph — latência, tokens, erros — sem código extra.

Vantagens

🔄

Versionamento Completo

Cada deploy gera uma nova versão. Rollback instantâneo para qualquer versão anterior.

👁️

Observabilidade Total

Traces de cada request: spans por nó do LangGraph, uso de tokens e latência por etapa.

🧪

Avaliação Automatizada

Scorers: Correctness, RelevanceToQuery, Safety e Guidelines customizadas em PT-BR.

💰

Gratuito & Open-Source

MLflow é 100% open-source. Tracking e registry integrados ao workspace sem custo adicional.

Serving

Mosaic AI Model Serving

Endpoint serverless que serve o agente RAG em tempo real — escala de zero a milhares de requests

Como funciona

Serverless & Autoscale

Sem provisionar infra. O endpoint escala automaticamente com base no tráfego — inclusive para zero quando ocioso.

🔌

Responses API Nativa

O endpoint expõe a Responses API — compatível diretamente com AI Playground, SDKs e aplicações customizadas.

🔒

Segurança Integrada

Autenticação OAuth/PAT, rede privada, logging de auditoria — tudo gerenciado pelo workspace.

📈

Monitoramento Nativo

Métricas de latência, throughput e erros no dashboard do endpoint + MLflow Traces integrado.

Configuração do Endpoint

ConfiguraçãoValor
Endpointwiki-rag-endpoint
Modelocatalog.schema.wiki_rag_agent
FormatoResponses API
ComputeServerless (autoscale)
Deploy viaPython SDK (notebook)
InterfaceAI Playground

Precificação

ComponenteModelo de Custo
Model ServingPay-per-request (DBU por tempo de compute)
FMAPI (LLMs)Pay-per-token (input + output)
MLflow100% gratuito (tracking, tracing, eval)
Orquestração

Declarative Automation Bundles

Infraestrutura como código para a Databricks, com databricks.yml como source of truth

O que são DABs?

Formato declarativo para definir, versionar e deployar recursos Databricks (jobs, pipelines, dashboards, apps) como código. Substitui configuração manual no workspace.

📦

Declarativo

YAML define o estado desejado. A CLI aplica o diff automaticamente.

🔄

Versionável

Vive no Git junto com o código. CI/CD nativo com targets dev/prod.

🎯

Multi-environment

Targets isolados (dev/prod) com variáveis parametrizáveis por ambiente.

Lakeflow Jobs do projeto

setup_lakebase

Provisiona instância, cria DB, roles, DDL, indexes. One-time.

deploy_agent

Log no MLflow, registro no UC, cria/atualiza endpoint de serving.

wiki_rag_ingestion

ETL incremental: MW → clean → chunk → embed → store. Cron horário.

rag_evaluation

Avalia endpoint contra ground truth via MLflow GenAI scorers.

Developer Experience

Makefile Automação da Demo/PoC

Um único make deploy provisiona toda a stack. Sem etapas manuais.

Deploy completo

# Stack inteira em um comando
$ make deploy

# Executa em sequência:
  1. setup-lakebase # Provisiona Lakebase + DDL
  2. setup-wiki # Sobe MediaWiki (Docker)
  3. deploy-agent # MLflow + Serving Endpoint
  4. ingest # Pipeline de ingestão

# Teardown com confirmação granular
$ make destroy

Por que Makefile?

Zero fricção

Qualquer SA replica a demo em minutos. Sem documentação de 20 páginas.

🛡️

Idempotente e seguro

Validação de pré-requisitos, confirmação antes de destruir recursos.

🔧

Granular

Cada etapa é um target individual. Override com TARGET=prod.

Demo

Vamos ver o sistema funcionando end-to-end:
da ingestão à conversa no AI Playground

Databricks Galáctica Aerospace · Dataset 100% sintético

Dataset Sintético

Databricks Galáctica Aerospace

Manual técnico fictício de uma espaçonave. Conteúdo 100% sintético, super específico, rico em diagramas.

Estrutura do Dataset

Páginas wiki15 artigos técnicos + Main Page
Imagens75 diagramas (PNG)
Tipos de figuraFluxogramas, organogramas, cortes dimensionais, cronogramas
IdiomaPortuguês brasileiro (PT-BR)
Ground truth30 pares pergunta/resposta para avaliação

Por que sintético?

  • ✅ Sem dados sensíveis de clientes
  • ✅ Conteúdo que nenhum LLM "sabe de cor"
  • ✅ Testa de verdade a capacidade de retrieval
  • ✅ Imagens com texto real para testar visão multimodal

Exemplo de diagrama

Fluxograma de diagnóstico do Conversor de Antimatéria

Fluxograma de diagnóstico do Conversor de Antimatéria

Teste do Agente

Perguntas baseadas em texto

O agente precisa recuperar e sintetizar informações de artigos wiki em português

Texto Motor de Propulsão Iônica

"Qual é o impulso específico nominal do Motor de Propulsão Iônica e qual gás é utilizado como propelente?"

Esperado: Isp de 4.220 s, gás xênon (Xe), empuxo nominal de 236 mN

Texto Escudo Deflector de Partículas

"Quais são os modos de operação do escudo deflector e qual o consumo de cada modo?"

Esperado: Cruzeiro 18 kW, Cinturão de Asteroides 45 kW, Economia 8 kW, Emergência 72 kW

Texto Conversor de Antimatéria

"Descreva os parâmetros de desempenho do Conversor de Antimatéria, incluindo capacidade energética e rendimento de conversão."

Esperado: Potência de 4,8 GW, eficiência de 78,4%, temperatura da câmara 2.850 K

Teste Multimodal

Perguntas baseadas em imagens

O agente interpreta diagramas que foram captioned pelo Vision LLM durante a ingestão. Clique nas imagens para ampliar.

Fluxograma de diagnóstico
Imagem Conversor de Antimatéria

"No fluxograma de diagnóstico do conversor de antimatéria, em que situação o sistema recomenda desligamento imediato (SCRAM)?"

Esperado: Quando a contenção magnética está comprometida, o sistema recomenda SCRAM

Desenho dimensional do emissor
Imagem Escudo Deflector de Partículas

"De acordo com o desenho dimensional do emissor de campo NE-DEF-4400, quais são as dimensões e componentes visíveis?"

Esperado: Diâmetro externo 80 mm, comprimento 150 mm, núcleo magnético de ferrite 35 mm, bobinas primária e secundária

Cronograma de manutenção preventiva
Imagem Motor de Propulsão Iônica

"Conforme o diagrama de intervalos de manutenção preventiva do motor iônico, quais são as tarefas e seus intervalos?"

Esperado: Inspeção visual a cada 500h, substituição do cátodo a cada 5.000h, grades a cada 10.000h, overhaul a cada 20.000h

Qualidade

MLflow GenAI Evaluation

Avaliação automatizada do agente RAG com LLM-as-a-Judge e scorers customizados

📋 Ground Truth
30 pares Q&A (JSONL)
🔌 Endpoint
Envia perguntas ao agente
⚖️ LLM Judge
Gemini 2.5 Flash
📊 MLflow Experiment
Métricas + Traces

Scorers Built-in

Correctness

Compara a resposta com os fatos esperados do ground truth

🎯

RelevanceToQuery

A resposta endereça diretamente a pergunta feita?

🛡️

Safety

Detecta conteúdo tóxico, enviesado ou prejudicial

Guidelines Customizadas (PT-BR)

A resposta deve ser predominantemente em português brasileiro. Termos técnicos em outros idiomas são aceitáveis.

Deve indicar de onde vem a informação, seja por citação direta de páginas ou referência contextual.

Dados numéricos e termos técnicos devem ser razoavelmente precisos. Pequenas variações de formatação são aceitáveis.

Não deve fabricar informações. Quando o contexto é parcial, é aceitável responder com o que está disponível e sugerir consulta adicional.

Obrigado!

Allex Lima

AI/ML Specialist Solutions Architect, Databricks Brasil

allex@databricks.com linkedin.com/in/allexlimas github.com/allexlima/wiki-rag-dtbricks
Appendix · Pricing

Estimativa de Custos

Valores em USD

Cenários baseados no uso real dos serviços Databricks deste projeto RAG

🌱 Low

Baixa Utilização

5 usuários · 10 queries/dia · ~100 páginas

~$30
por mês
~$360 /ano
🗄️ Lakebase 0.5 CU · 6h/dia
🧠 ~300 queries LLM/mês
⚙️ Jobs 1x/dia · 5 min
🤖 Endpoint ~2h ativo/dia
Medium

Utilização Padrão

25 usuários · 100 queries/dia · ~500 páginas

~$200
por mês
~$2,400 /ano
🗄️ Lakebase 1.0 CU · 10h/dia
🧠 ~3,000 queries LLM/mês
⚙️ Jobs 1x/dia · 15 min
🤖 Endpoint ~8h ativo/dia
🔥 High

Alta Utilização

100+ usuários · 500 queries/dia · ~2,000 páginas

~$1,065
por mês
~$12,780 /ano
🗄️ Lakebase 1.5 CU · 16h/dia
🧠 ~15,000 queries LLM/mês
⚙️ Jobs horário · 24/7
🤖 Endpoint ~14h ativo/dia
💬 FMAPI = maior driver de custo
📉 Scale-to-zero em todos os serviços
🏷️ Pay-per-token = sem GPU ociosa
Nota: Estes valores são estimativas baseadas em cenários hipotéticos de uso e não refletem necessariamente a realidade exata de faturamento. Recomendamos consultar o time de contas da Databricks para uma precificação personalizada e mais acurada.
Appendix · Pricing Detail

Detalhamento por Serviço

Valores em USD
💬 Claude Sonnet 4.6
$3.00 / 1M input · $15.00 / 1M output
42.857 | 214.286 DBU/1M · $0.07/DBU
🧩 Qwen3 Embedding 0.6B
~$0.13 / 1M tokens
~1.857 DBU/1M · $0.07/DBU (ref: GTE)
⚖️ Gemini 2.5 Flash (Eval)
~$0.15 / 1M input · ~$0.60 / 1M output
~2.143 | ~8.571 DBU/1M · $0.07/DBU
Serviço Databricks Rate ($/DBU) 🌱 Low /mês ⚡ Medium /mês 🔥 High /mês
FMAPI — Claude Sonnet 4.6
Geração de respostas, grading de docs e reescrita de queries no agente RAG
$0.07 180 DBU
$12.60
1,800 DBU
$126.00
9,000 DBU
$630.00
FMAPI — Gemini 2.5 Flash
LLM Judge para avaliação de qualidade (MLflow GenAI Evaluation)
$0.07 ~1 DBU
$0.07
~11 DBU
$0.75
~26 DBU
$1.80
FMAPI — Qwen3 Embedding
Vetorização de chunks na ingestão e queries do usuário para busca semântica
$0.07 1 DBU
$0.07
9 DBU
$0.65
37 DBU
$2.60
Lakebase Compute
PostgreSQL gerenciado: armazena wiki, embeddings (pgvector) e histórico de conversas
$0.40 19 DBU
$7.67
64 DBU
$25.56
153 DBU
$61.34
Model Serving (Agent CPU)
Endpoint serverless que hospeda o agente RAG (ResponsesAgent + LangGraph)
$0.07 60 DBU
$4.20
480 DBU
$33.60
1,680 DBU
$117.60
Serverless Jobs
Executa o pipeline de ingestão: leitura da wiki, chunking, embedding e captioning
$0.35 15 DBU
$5.25
45 DBU
$15.75
720 DBU
$252.00
TOTAL MENSAL $29.86 $202.31 $1,065.34
TOTAL ANUAL ~$358 ~$2,428 ~$12,784
Premissas: ~7.5K input + ~1.3K output tokens por query (grading + rewrite + geração). Embedding: ~50 tokens/query. Scale-to-zero ativo em todos os serviços.
Nota: Estes valores são estimativas baseadas em cenários hipotéticos de uso e não refletem necessariamente a realidade exata de faturamento. Recomendamos consultar o time de contas da Databricks para uma precificação personalizada e mais acurada.