Quando os LLMs produzem dados estruturados, podem fabricar factos com aparência plausível. O Entity Enricher utiliza 8 camadas de defesa para garantir que obtém dados precisos ou nenhum dado — nunca ficção com ar de certeza.
Em texto livre, uma frase alucinada é obviamente vaga. Num output estruturado, um campo alucinado como "founded_year": 1987 parece fidedigno e é quase impossível de distinguir de um valor correto. Três fatores tornam isto particularmente perigoso:
Um valor JSON alucinado parece exatamente igual a um real. Não há reservas, não há “aproximadamente” — apenas um dado limpo e confiante que, por acaso, está errado.
Os campos obrigatórios forçam o LLM a produzir um valor mesmo quando não tem conhecimento. O modelo inventa dados em vez de deixar uma lacuna na estrutura.
Os dados estruturados alimentam diretamente bases de dados, análises e automações. Um valor incorreto propaga-se pelos pipelines sem revisão humana.
| Padrão | Exemplo | Causa |
|---|---|---|
| Fabricação confiante | "ceo": "John Smith" | O LLM preenche um campo obrigatório com um nome plausível |
| Confusão temporal | "revenue": "$2.3B" | Data-limite dos dados de treino ou fusão de períodos |
| Conflação de entities | Atributos da Empresa A na Empresa B | Nomes semelhantes em dados de treino sobrepostos |
| Valores predefinidos plausíveis | "employees": 500 | O LLM escolhe um número “razoável” em vez de admitir que não sabe |
| Relações inventadas | "subsidiary_of": "Alphabet" | O LLM infere uma relação que não existe |
O Entity Enricher não depende de uma única técnica. Empilha 8 camadas de defesa independentes, cada uma visando um modo de falha diferente. Se uma camada deixar passar uma alucinação, a seguinte apanha-a.
Antes de o enriquecimento começar, um LLM rápido classifica se a entidade corresponde ao tipo do esquema. Isto bloqueia a alucinação de entidades inteiras na origem.
Exemplo: “Titan” contra um schema de “Planeta” é assinalado como uma lua — os modelos de enriquecimento recebem este contexto e usam null nos campos específicos de planetas.
Todas as estratégias instruem o LLM: «Seja preciso e conservador — prefira null a adivinhar.» Os campos de schema anuláveis dão ao modelo permissão explícita para dizer «Não sei.»
Isto aborda diretamente a pressão do esquema — a causa n.º 1 de alucinação estruturada.
As propriedades do esquema são agrupadas por domínio de especialização. Cada chamada ao LLM só vê os campos do seu domínio, com instruções para se focar exclusivamente nessa área.
Um âmbito mais restrito significa menos oportunidades de alucinar. Um especialista financeiro nunca adivinha dados regulatórios.
As propriedades-chave (marcadas com is_key: true) são destacadas nos prompts para ancorar o LLM na informação de identificação antes de preencher os restantes campos.
Isto assenta o modelo em factos conhecidos, reduzindo o desvio em direção a detalhes fabricados.
8 regras de validação verificam a saída do LLM em busca de incompatibilidades de tipo, referências inválidas e erros estruturais. Uma validação falhada aciona o ModelRetry — os erros são reenviados ao LLM para correção.
Até 6 tentativas automáticas de correção numa única execução do agente. O LLM corrige os seus próprios erros.
Os campos marcados com preserve: true (IDs, SKUs, timestamps) são restaurados para os seus valores de entrada originais após o enriquecimento. O LLM não pode substituir os dados de referência.
Campos protegidos: IDs de entidade, códigos de sistema (EAN, SKU), identificadores de importação, marcas temporais de criação.
Executar a mesma entidade em 2 ou mais modelos independentes e comparar os resultados campo a campo. As discordâncias são assinaladas como potenciais alucinações.
Se o Claude disser que a receita é de 2,3 mil milhões de dólares e o GPT-4 disser 1,8 mil milhões — esse conflito é detetado e apresentado.
Os conflitos detetados são resolvidos por votação baseada em regras (maioria, mediana, união) ou por um arbitrador LLM dedicado que avalia a exatidão, a completude e a consistência.
Cada decisão de arbitragem inclui o raciocínio e o nível de confiança — total transparência sobre como os conflitos foram resolvidos.
Princípio Fundamental
Dados em falta são sempre melhores do que dados errados. Cada camada reforça este princípio — o sistema foi concebido para devolver null em vez de uma invenção plausível.