Partilhar via


Referência dos juízes do Mosaic AI Agent Evaluation LLM

Importante

Esta funcionalidade está em Pré-visualização Pública.

Este artigo aborda os detalhes de cada um dos juízes de LLM incorporados ao Mosaic AI Agent Evaluation, incluindo as métricas de entrada e saída necessárias. Também abrange a produção produzida por juízes personalizados.

Para obter uma introdução aos juízes de LLM, consulte Como a qualidade, o custo e a latência são avaliados pela Avaliação do agente.

Juízes de resposta

As métricas de qualidade de resposta avaliam o quão bem o aplicativo responde à solicitação de um usuário. Essas métricas avaliam fatores como a precisão da resposta em comparação com a verdade do solo, se a resposta está bem fundamentada dado o contexto recuperado (ou se o LLM está alucinando) e se a resposta é segura e livre de linguagem tóxica.

No geral, o LLM deu uma resposta precisa?

O correctness juiz LLM dá uma avaliação binária e uma fundamentação escrita sobre se a resposta gerada pelo agente é factualmente precisa e semanticamente semelhante à resposta de verdade-base fornecida.

Entrada necessária para correctness

A verdade expected_response fundamental é necessária.

O conjunto de avaliação de entrada deve ter as seguintes colunas:

  • request
  • expected_response

Além disso, se você não usar o model argumento na chamada para mlflow.evaluate(), você também deve fornecer um response ou trace.

Importante

A verdade expected_response fundamental deve incluir apenas o conjunto mínimo de fatos que é necessário para uma resposta correta. Se você copiar uma resposta de outra fonte, edite-a para remover qualquer texto que não seja necessário para que uma resposta seja considerada correta.

Incluir apenas as informações necessárias, e deixar de fora informações que não são estritamente exigidas na resposta, permite que a Avaliação do Agente forneça um sinal mais robusto sobre a qualidade da saída.

Saída para correctness

As seguintes métricas são calculadas para cada pergunta:

Campo de dados Tipo Description
response/llm_judged/correctness/rating string yes ou no. yes indica que a resposta gerada é altamente precisa e semanticamente semelhante à verdade básica. São aceitáveis pequenas omissões ou imprecisões que ainda captam a intenção da verdade fundamental. no indica que a resposta não cumpre os critérios.
response/llm_judged/correctness/rationale string Raciocínio escrito de LLM para yes ou no.
response/llm_judged/correctness/error_message string Se houve um erro ao calcular essa métrica, os detalhes do erro estão aqui. Se nenhum erro, isso é NULL.

A seguinte métrica é calculada para todo o conjunto de avaliação:

Nome da métrica Tipo Description
response/llm_judged/correctness/rating/percentage float, [0, 1] Em todas as perguntas, porcentagem em que a correção é julgada como yes.

A resposta é relevante para o pedido?

O relevance_to_query juiz LLM determina se a resposta é relevante para o pedido de entrada.

Entrada necessária para relevance_to_query

A verdade fundamental não é necessária.

O conjunto de avaliação de entrada deve ter a seguinte coluna:

  • request

Além disso, se você não usar o model argumento na chamada para mlflow.evaluate(), você também deve fornecer um response ou trace.

Saída para relevance_to_query

As seguintes métricas são calculadas para cada pergunta:

Campo de dados Tipo Description
response/llm_judged/relevance_to_query/rating string yes se a resposta for considerada relevante para o pedido, no caso contrário.
response/llm_judged/relevance_to_query/rationale string Raciocínio escrito de LLM para yes ou no.
response/llm_judged/relevance_to_query/error_message string Se houve um erro ao calcular essa métrica, os detalhes do erro estão aqui. Se nenhum erro, isso é NULL.

A seguinte métrica é calculada para todo o conjunto de avaliação:

Nome da métrica Tipo Description
response/llm_judged/relevance_to_query/rating/percentage float, [0, 1] Em todas as perguntas, porcentagem onde relevance_to_query/rating é julgado como yes.

A resposta é uma alucinação ou está fundamentada no contexto recuperado?

O groundedness juiz LLM retorna uma avaliação binária e um raciocínio escrito sobre se a resposta gerada é factualmente consistente com o contexto recuperado.

Entrada necessária para groundedness

A verdade fundamental não é necessária.

O conjunto de avaliação de entrada deve ter a seguinte coluna:

  • request

Além disso, se você não usar o model argumento na chamada para mlflow.evaluate(), você também deve fornecer um trace ou ambos de response e retrieved_context[].content.

Saída para groundedness

As seguintes métricas são calculadas para cada pergunta:

Campo de dados Tipo Description
response/llm_judged/groundedness/rating string yes se o contexto recuperado suportar todas ou quase todas as respostas geradas, no caso contrário.
response/llm_judged/groundedness/rationale string Raciocínio escrito de LLM para yes ou no.
response/llm_judged/groundedness/error_message string Se houve um erro ao calcular essa métrica, os detalhes do erro estão aqui. Se nenhum erro, isso é NULL.

A seguinte métrica é calculada para todo o conjunto de avaliação:

Nome da métrica Tipo Description
response/llm_judged/groundedness/rating/percentage float, [0, 1] Em todas as perguntas, qual é a porcentagem em que groundedness/rating é julgado como yes.

Há conteúdo nocivo na resposta do agente?

O safety juiz LLM retorna uma classificação binária e uma justificativa escrita sobre se a resposta gerada tem conteúdo nocivo ou tóxico.

Entrada necessária para safety

A verdade fundamental não é necessária.

O conjunto de avaliação de entrada deve ter a seguinte coluna:

  • request

Além disso, se você não usar o model argumento na chamada para mlflow.evaluate(), você também deve fornecer um response ou trace.

Saída para safety

As seguintes métricas são calculadas para cada pergunta:

Campo de dados Tipo Description
response/llm_judged/safety/rating string yes se a resposta não tiver conteúdo nocivo ou tóxico, no caso contrário.
response/llm_judged/safety/rationale string Raciocínio escrito de LLM para yes ou no.
response/llm_judged/safety/error_message string Se houve um erro ao calcular essa métrica, os detalhes do erro estão aqui. Se nenhum erro, isso é NULL.

A seguinte métrica é calculada para todo o conjunto de avaliação:

Nome da métrica Tipo Description
response/llm_judged/safety/rating/average float, [0, 1] Percentagem de todas as perguntas que foram julgadas como .yes

Juízes de recuperação

As métricas de qualidade de recuperação avaliam o desempenho do recuperador na localização dos documentos que são relevantes para a solicitação de entrada. Essas métricas avaliam fatores como: O retriever encontrou os pedaços relevantes? Quantos dos documentos relevantes conhecidos encontrou? Os documentos que considerou foram suficientes para produzir a resposta esperada?

O retriever encontrou pedaços relevantes?

O chunk-relevance-precision juiz LLM determina se as partes devolvidas pelo recuperador são relevantes para a solicitação de entrada. A precisão é calculada como o número de blocos relevantes devolvidos dividido pelo número total de blocos devolvidos. Por exemplo, se o recuperador retornar quatro partes, e o juiz LLM determinar que três dos quatro documentos devolvidos são relevantes para a solicitação, então llm_judged/chunk_relevance/precision é 0,75.

Entrada necessária para llm_judged/chunk_relevance

A verdade fundamental não é necessária.

O conjunto de avaliação de entrada deve ter a seguinte coluna:

  • request

Além disso, se você não usar o model argumento na chamada para mlflow.evaluate(), você também deve fornecer um retrieved_context[].content ou trace.

Saída para llm_judged/chunk_relevance

As seguintes métricas são calculadas para cada pergunta:

Campo de dados Tipo Description
retrieval/llm_judged/chunk_relevance/ratings array[string] Para cada bloco, yes ou no, indicando se o bloco recuperado é relevante para a solicitação de entrada.
retrieval/llm_judged/chunk_relevance/rationales array[string] Para cada parte, o raciocínio do LLM para a classificação correspondente.
retrieval/llm_judged/chunk_relevance/error_messages array[string] Para cada bloco, se houve um erro ao calcular a classificação, os detalhes do erro estão aqui, e outros valores de saída serão NULL. Se nenhum erro, isso é NULL.
retrieval/llm_judged/chunk_relevance/precision float, [0, 1] Calcula a porcentagem de partes relevantes entre todas as partes recuperadas.

A seguinte métrica é relatada para todo o conjunto de avaliação:

Nome da métrica Tipo Description
retrieval/llm_judged/chunk_relevance/precision/average float, [0, 1] Valor médio de chunk_relevance/precision todas as perguntas.

Quantos dos documentos relevantes conhecidos o recuperador encontrou?

document_recall é calculado como o número de documentos relevantes devolvidos dividido pelo número total de documentos relevantes com base na verdade dos fundamentos. Por exemplo, suponha que dois documentos são relevantes com base na verdade fundamental. Se o recuperador devolver um desses documentos, document_recall é 0,5. Essa métrica não é afetada pelo número total de documentos retornados.

Esta métrica é determinística e não usa um juiz LLM.

Entrada necessária para document_recall

A verdade fundamental é necessária.

O conjunto de avaliação de entrada deve ter a seguinte coluna:

  • expected_retrieved_context[].doc_uri

Além disso, se você não usar o model argumento na chamada para mlflow.evaluate(), você também deve fornecer um retrieved_context[].doc_uri ou trace.

Saída para document_recall

A seguinte métrica é calculada para cada pergunta:

Campo de dados Tipo Description
retrieval/ground_truth/document_recall float, [0, 1] A porcentagem de verdade doc_uris do solo presente nos pedaços recuperados.

A seguinte métrica é calculada para todo o conjunto de avaliação:

Nome da métrica Tipo Description
retrieval/ground_truth/document_recall/average float, [0, 1] Valor médio de document_recall todas as perguntas.

O recuperador encontrou documentos suficientes para produzir a resposta esperada?

O context_sufficiency juiz LLM determina se o recuperador recuperou documentos suficientes para produzir a resposta esperada.

Entrada necessária para context_sufficiency

A verdade expected_response fundamental é necessária.

O conjunto de avaliação de entrada deve ter as seguintes colunas:

  • request
    • expected_response

Além disso, se você não usar o model argumento na chamada para mlflow.evaluate(), você também deve fornecer um retrieved_context[].content ou trace.

Saída para context_sufficiency

As seguintes métricas são calculadas para cada pergunta:

Campo de dados Tipo Description
retrieval/llm_judged/context_sufficiency/rating string yes ou no. yes indica que o contexto recuperado é suficiente para produzir a resposta esperada. no indica que a recuperação precisa ser ajustada para essa pergunta para que ela traga de volta as informações faltantes. A fundamentação dos resultados deve mencionar as informações em falta.
retrieval/llm_judged/context_sufficiency/rationale string Raciocínio escrito de LLM para yes ou no.
retrieval/llm_judged/context_sufficiency/error_message string Se houve um erro ao calcular essa métrica, os detalhes do erro estão aqui. Se nenhum erro, isso é NULL.

A seguinte métrica é calculada para todo o conjunto de avaliação:

Nome da métrica Tipo Description
retrieval/llm_judged/context_sufficiency/rating/percentage float, [0, 1] Percentagem em que a suficiência do contexto é julgada como yes.

Métricas de juiz personalizadas

Você pode criar um juiz personalizado para realizar avaliações específicas para seu caso de uso. Para obter detalhes, consulte Criar juízes LLM personalizados.

A saída produzida por um juiz aduaneiro depende do seu assessment_type, ANSWER ou RETRIEVAL.

Juiz LLM personalizado para avaliação ANSWER

Um juiz LLM personalizado para avaliação ANSWER avalia a resposta para cada pergunta.

Resultados fornecidos para cada avaliação:

Campo de dados Tipo Description
response/llm_judged/{assessment_name}/rating string yes ou no.
response/llm_judged/{assessment_name}/rationale string Raciocínio escrito de LLM para yes ou no.
response/llm_judged/{assessment_name}/error_message string Se houve um erro ao calcular essa métrica, os detalhes do erro estão aqui. Se nenhum erro, isso é NULL.

A seguinte métrica é calculada para todo o conjunto de avaliação:

Nome da métrica Tipo Description
response/llm_judged/{assessment_name}/rating/percentage float, [0, 1] Em todas as perguntas, porcentagem em que {assessment_name} é julgado como yes.

Juiz LLM personalizado para avaliação de RECUPERAÇÃO

Um juiz LLM personalizado para avaliação RETRIEVAL avalia cada parte recuperada em todas as perguntas.

Resultados fornecidos para cada avaliação:

Campo de dados Tipo Description
retrieval/llm_judged/{assessment_name}/ratings array[string] Avaliação do juiz personalizado para cada parte,yes ou no.
retrieval/llm_judged/{assessment_name}/rationales array[string] Para cada pedaço, o raciocínio escrito de LLM para yes ou no.
retrieval/llm_judged/{assessment_name}/error_messages array[string] Para cada bloco, se houve um erro ao calcular essa métrica, os detalhes do erro estão aqui, e outros valores são NULL. Se nenhum erro, isso é NULL.
retrieval/llm_judged/{assessment_name}/precision float, [0, 1] Porcentagem de todos os pedaços recuperados que o juiz personalizado avaliou como yes.

Métricas reportadas para todo o conjunto de avaliação:

Nome da métrica Tipo Description
retrieval/llm_judged/{assessment_name}/precision/average float, [0, 1] Valor médio de {assessment_name}_precision todas as perguntas.