RAG multimodal com camada de governança
Responde perguntas a partir de textos, tabelas e gráficos em PDFs, e audita cada prompt e resposta contra vazamento de dados e alucinação.
- Unstructured
- Qdrant
- LangGraph
- RabbitMQ
- vLLM
- FastAPI
Demo interativa
Você é
Arraste para girar · passe o mouse num formato para ler o trecho · ● texto · ■ tabela · ◆ figura · apagado = restrito ao RH
Resposta
Escolha uma pergunta acima. Você vai vê-la cair no espaço vetorial, puxar os trechos mais próximos e passar pelos guardas.
Trechos recuperados
Log de auditoria
O que experimentar
- Pergunte o salário da Carla Mendes como Colaborador e depois como RH. O controle de acesso acontece na recuperação (o trecho nem vira candidato), não pedindo ao modelo para guardar segredo.
- Como RH, repare que os CPFs voltam como tarjas pretas: PII é mascarada na saída, mesmo para quem pode ver o documento.
- Ligue o LLM mentiroso e pergunte sobre o relatório de despesas. A checagem de aderência pega o número alterado, porque ele não aparece em nenhuma fonte.
- Pergunte a mesma coisa duas vezes: a segunda resposta vem do cache e custa zero tokens. Clique rápido o bastante e você bate no limite de requisições.
O problema
O conhecimento corporativo vive em PDFs cheios de tabelas e gráficos que a extração de texto simples destrói. E quando um LLM consegue ler esses documentos, algo precisa impedir que ele repita um salário ou invente um número.
Como funciona
- Os documentos são separados em elementos tipados (parágrafo, tabela, figura); tabelas mantêm a estrutura e figuras ganham uma descrição gerada.
- Os elementos viram embeddings e vão para o Qdrant com a página de origem, para que toda resposta possa citar a fonte.
- Um agente em LangGraph decide se busca, lê uma tabela ou pede esclarecimento.
- Um gateway na frente do modelo faz cache, limita requisições e envia cada troca para uma fila de auditoria assíncrona: detecção de PII, aderência às fontes recuperadas, toxicidade.
O que é real, o que é simulado
Real
- A recuperação é real: vetores TF-IDF com similaridade de cosseno sobre 20 trechos, e o layout 3D é um PCA desses vetores calculado no seu navegador.
- O filtro de ACL, o cache, o limite de requisições por balde de tokens, as regras de prompt injection, o mascaramento de PII e a checagem de aderência são a lógica de verdade.
- Os tempos em milissegundos no rastro são medidos na sua máquina.
Simulado nesta demo
- Os documentos são de uma empresa fictícia; nomes, CPFs e contatos são inventados.
- Não há LLM: as respostas são extrativas (frases copiadas das fontes). O botão do “LLM mentiroso” altera um número de propósito, para a checagem de aderência ter o que pegar.
- TF-IDF substitui embeddings densos, e a fila de auditoria é uma lista na página, não o RabbitMQ.
Ainda não construído
- Parsing de PDFs com tabelas e gráficos reais (Unstructured)
- Qdrant com embeddings densos e filtros de ACL no payload
- Agente em LangGraph e um LLM de verdade atrás do gateway
- Modelos de PII e aderência (no lugar de regras) consumindo do RabbitMQ