Ir para o conteúdo
Bruno Lucildo
Todos os experimentos

EXP / 001

Prova de conceitoEm desenvolvimento

Respostas fundamentadas em relatórios (RAG)

Responder perguntas sobre relatórios de observação usando só os trechos recuperados, mostrando quanto de cada resposta pode ser rastreado até eles.

Modelo: gpt-4o-mini, OpenAI embeddings

Tecnologias

  • TypeScript
  • Node.js
  • OpenAI API
  • SQLite
  • RAG

Objetivo

Responder perguntas sobre relatórios de observação usando só o que os relatórios dizem, e deixar visível quanto de cada resposta tem suporte de fato.

Problema investigado

Um modelo perguntado sobre relatórios que não leu inventa detalhes plausíveis: números, fontes e ações. Citar uma fonte não prova que a fonte diga aquilo.

Abordagem

Os PDFs dos relatórios viram texto, são traduzidos do espanhol para o português do Brasil, divididos em trechos e guardados com embeddings no SQLite. Uma pergunta recupera os cinco trechos mais relevantes, ordenados por uma nota híbrida que combina a similaridade dos embeddings com a coincidência de palavras-chave e descarta os trechos fracos. O prompt exige uma fonte depois de cada afirmação e roda com temperatura 0. Toda resposta termina com um relatório de fundamentação: uma checagem lexical de quantas afirmações, números e fontes citadas aparecem no texto recuperado, seguida de uma checagem semântica feita por uma segunda chamada ao modelo.

Resultados

Na avaliação, uma pergunta com suporte nos relatórios foi respondida com a checagem semântica aprovada, e as perguntas que os relatórios não respondem (o campeão de um torneio passado, o salário de um jogador) foram recusadas como esperado. Uma pergunta escrita depois falhou: a busca colocou o relatório certo em primeiro, mas preencheu as outras quatro vagas com trechos sobre outros atletas, e o modelo recusou. Só poucas perguntas de RAG foram testadas, então isto mostra comportamento, não uma taxa de falha.

Limitações

O índice não tem metadados do atleta para filtrar, então uma pergunta sobre um atleta pode recuperar trechos de outros. A extração de PDF não usa OCR, então relatórios escaneados podem não render texto. A nota de relevância ordena trechos; não mede confiança nem verdade. A checagem lexical não é semântica, e as respostas não são comparadas com estatísticas oficiais.

O que aprendi

Uma citação não prova nada sozinha: o que ajudou foi mostrar, ao lado da resposta, o que pôde e o que não pôde ser rastreado. Uma falha de busca parece uma falha do modelo, então vale medir as duas separadamente.