EXP / 001
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.