Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Definição dos Metadados

Olá,

De acordo com o que o professor apresentou em aula, os metadados auxiliam o modelo a decidir qual seria a melhor resposta, dados os atributos de origem, categoria, etc. Por isso, foi atribuído, em modo hardcoded, as categorias. Porém, não seria mais interessante permitir que o próprio modelo avalie e atribua uma categoria para cada chunk, conforme o seu conteúdo? Pois, no exemplo do projeto de bulas de medicamentos, a lógica para a atribuição da categoria "como_funciona", por exemplo, inclui a ocorrência da palavra "ação" no conteúdo do texto, o que, em diversos casos, poderia provocar erros semânticos para os chunks.

1 resposta
solução!

OI, Nelson!

É muito bom ver sua análise crítica sobre o projeto. Sua percepção toca em um ponto fundamental da engenharia de dados para IA: a transição entre sistemas baseados em regras e sistemas baseados em compreensão semântica.

Você tem razão ao apontar que o método hardcoded (baseado em palavras-chave) é frágil. Palavras como "ação" podem aparecer em contextos de "ações judiciais", "ação do tempo" ou "modo de ação", gerando classificações incorretas.

O Desafio da escala e precisão:

Em projetos iniciais ou com volumes pequenos de dados, as regras manuais são usadas porque são rápidas e não geram custos de API. Mas, para sistemas profissionais, o que você sugeriu, usar o próprio modelo para classificar, é o caminho ideal.

Pra evitar os erros semânticos que você mencionou, existem três abordagens principais que superam o uso de if/else:

  1. LLM como Classificador (a sua sugestão):
    Antes de salvar o chunk no banco vetorial, você envia o texto para um modelo (como o GPT-4o-mini) com um prompt específico: "Classifique o trecho da bula abaixo em uma destas categorias: [lista]. Responda apenas o nome da categoria."

    • Pró: Alta precisão semântica.
    • Contra: Aumenta o custo e o tempo de processamento inicial (ingestão).
  2. Modelos de Zero-Shot Classification:
    Utilizar modelos menores e especializados em classificação (disponíveis no Hugging Face) que conseguem entender o tópico sem precisar de treinamento específico, sendo mais baratos que uma LLM generalista.

  3. Self-Querying Retriever (LangChain):
    Em vez de classificar no momento da criação, você pode usar uma técnica onde o LLM transforma a pergunta do usuário em uma busca estruturada. Se o usuário pergunta "Como a dipirona age?", o LLM percebe a intenção e filtra os metadados automaticamente.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!