Mosaic AI Agent Evaluation LLM judges reference
Prévia
Esse recurso está em Pré-lançamento público.
Este artigo aborda os detalhes de cada um dos juízes do LLM que estão integrados 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 do LLM, consulte Como a qualidade, o custo e a latência são avaliados pela Avaliação de agentes.
Observação
Para conversas com vários turnos, os juízes do LLM avaliam apenas a última entrada na conversa.
A tabela a seguir lista os juízes integrados:
Nome do juiz |
Passo |
Aspecto de qualidade que o juiz avalia |
---|---|---|
|
Resposta |
A resposta aborda (é relevante para) a solicitação do usuário? |
|
Resposta |
A resposta gerada está baseada no contexto recuperado (não é alucinante)? |
|
Resposta |
|
|
Resposta |
A resposta gerada é precisa (em comparação com a verdade básica)? |
|
Resposta |
|
|
Recuperação |
O retriever encontrou partes que são úteis (relevantes) para responder à solicitação do usuário? |
|
Recuperação |
Quantos dos documentos relevantes conhecidos o recuperador encontrou? |
|
Recuperação |
O retriever encontrou documentos com informações suficientes para produzir a resposta esperada? |
Juízes de resposta
As métricas de qualidade de resposta avaliam a qualidade da resposta do aplicativo à solicitação do usuário. Essas métricas avaliam fatores como a precisão da resposta em comparação com a verdade básica, se a resposta é bem fundamentada, considerando 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 juiz do correctness
LLM fornece uma avaliação binária e uma justificativa por escrito sobre se a resposta gerada pelo agente é factualmente precisa e semanticamente semelhante à resposta da verdade fundamental fornecida.
Entrada necessária para correctness
A verdade fundamental expected_response
é 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 argumento model
na chamada para mlflow.evaluate()
, também deverá fornecer response
ou trace
.
Importante
A verdade básica expected_response
deve incluir apenas o conjunto mínimo de fatos necessários para uma resposta correta. Se você copiar uma resposta de outra fonte, edite a resposta 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 as informações que não são estritamente necessárias na resposta permite que a Avaliação de agentes forneça um sinal mais robusto sobre a qualidade do resultado.
Saída para correctness
As métricas a seguir são calculadas para cada pergunta:
Campo de dados |
Tipo |
Descrição |
---|---|---|
|
|
|
|
|
A justificativa por escrito do LLM para |
|
|
Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL. |
As seguintes métricas são calculadas para todo o conjunto de avaliação:
Nome da métrica |
Tipo |
Descrição |
---|---|---|
|
|
Em todas as perguntas, a porcentagem em que a correção é avaliada como |
A resposta é relevante para a solicitação?
O juiz do relevance_to_query
LLM determina se a resposta é relevante para a solicitação 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 argumento model
na chamada para mlflow.evaluate()
, também deverá fornecer response
ou trace
.
Saída para relevance_to_query
As métricas a seguir são calculadas para cada pergunta:
Campo de dados |
Tipo |
Descrição |
---|---|---|
|
|
|
|
|
A justificativa por escrito do LLM para |
|
|
Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL. |
As seguintes métricas são calculadas para todo o conjunto de avaliação:
Nome da métrica |
Tipo |
Descrição |
---|---|---|
|
|
Em todas as perguntas, a porcentagem em que |
A resposta é uma alucinação ou está baseada no contexto recuperado?
O juiz do groundedness
LLM retorna uma avaliação binária e uma justificativa por escrito sobre se a resposta gerada é de fato 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 argumento model
na chamada para mlflow.evaluate()
, também deverá fornecer trace
ou response
e retrieved_context[].content
.
Saída para groundedness
As métricas a seguir são calculadas para cada pergunta:
Campo de dados |
Tipo |
Descrição |
---|---|---|
|
|
|
|
|
A justificativa por escrito do LLM para |
|
|
Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL. |
As seguintes métricas são calculadas para todo o conjunto de avaliação:
Nome da métrica |
Tipo |
Descrição |
---|---|---|
|
|
Em todas as perguntas, qual é a porcentagem em que |
A resposta gerada segue as diretrizes fornecidas?
O juiz do guideline_adherence
LLM retorna uma avaliação binária e uma justificativa por escrito sobre se a resposta gerada está de acordo com o guidelines
.
Entrada necessária para guideline_adherence
A verdade fundamental não é necessária.
O conjunto de avaliação de entrada deve ter as seguintes colunas:
request
guidelines
Além disso, se você não usar o argumento model
na chamada para mlflow.evaluate()
, também deverá fornecer trace
ou response
. Algumas diretrizes podem ser aplicadas globalmente a todo o seu conjunto de avaliação. Em vez de copiar essas diretrizes para cada avaliação, você pode especificar global_guidelines
na configuração do avaliador da seguinte forma:
eval_set = [
{
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
"guidelines": [
"The response must be in English",
"The response must be clear, coherent, and concise",
]
}
]
mlflow.evaluate(
data=pd.DataFrame(eval_set),
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"global_guidelines": [
"The response must be in English",
"The response must be clear, coherent, and concise",
],
}
}
)
Saída para guideline_adherence
As métricas a seguir são calculadas para cada pergunta:
Campo de dados |
Tipo |
Descrição |
---|---|---|
|
|
|
|
|
A justificativa por escrito do LLM para |
|
|
Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL. |
|
|
|
|
|
A justificativa por escrito do LLM para |
|
|
Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL. |
As seguintes métricas são calculadas para todo o conjunto de avaliação:
Nome da métrica | Tipo | Descrição | | |--|--|--| | response/llm_judged/guideline_adherence/rating/percentage
| float, [0, 1]
| Em todas as perguntas, qual é a porcentagem em que guideline_adherence/rating
é julgado como yes
. | response/llm_judged/global_guideline_adherence/rating/percentage
| float, [0, 1]
| Em todas as perguntas, qual é a porcentagem em que global_guideline_adherence/rating
é julgado como yes
.
Há conteúdo prejudicial na resposta do agente?
O juiz do safety
LLM retorna uma classificação binária e uma justificativa por escrito sobre se a resposta gerada tem conteúdo prejudicial 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 argumento model
na chamada para mlflow.evaluate()
, também deverá fornecer response
ou trace
.
Saída para safety
As métricas a seguir são calculadas para cada pergunta:
Campo de dados |
Tipo |
Descrição |
---|---|---|
|
|
|
|
|
A justificativa por escrito do LLM para |
|
|
Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL. |
As seguintes métricas são calculadas para todo o conjunto de avaliação:
Nome da métrica |
Tipo |
Descrição |
---|---|---|
|
|
Porcentagem de todas as perguntas que foram consideradas |
Juízes de recuperação
As métricas de qualidade de recuperação avaliam o desempenho do recuperador em encontrar os documentos relevantes para a solicitação de entrada. Essas métricas avaliam fatores como: O recuperador encontrou os blocos relevantes? Quantos dos documentos relevantes conhecidos ele encontrou? Os documentos encontrados foram suficientes para produzir a resposta esperada?
O carregador encontrou trechos relevantes?
O juiz do chunk-relevance-precision
LLM determina se os blocos retornados pelo recuperador são relevantes para a solicitação de entrada. A precisão é calculada como o número de partes relevantes retornadas dividido pelo número total de partes retornadas. Por exemplo, se o recuperador retornar quatro blocos e o juiz do LLM determinar que três dos quatro documentos retornados 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 argumento model
na chamada para mlflow.evaluate()
, também deverá fornecer retrieved_context[].content
ou trace
.
Saída para llm_judged/chunk_relevance
As métricas a seguir são calculadas para cada pergunta:
Campo de dados |
Tipo |
Descrição |
---|---|---|
|
|
Para cada bloco, |
|
|
Para cada bloco, o raciocínio do LLM para a classificação correspondente. |
|
|
Para cada pedaço, se houve um erro no cálculo da classificação, os detalhes do erro estão aqui e os outros valores de saída serão NULL. Se não houver erro, será NULL. |
|
|
Calcula a porcentagem de blocos relevantes entre todos os blocos recuperados. |
As seguintes métricas são relatadas para todo o conjunto de avaliação:
Nome da métrica |
Tipo |
Descrição |
---|---|---|
|
|
Valor médio de |
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. Por exemplo, suponha que dois documentos sejam relevantes com base na verdade fundamental. Se o recuperador retornar um desses documentos, document_recall
será 0,5. Essa métrica não é afetada pelo número total de documentos devolvidos.
Essa 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 argumento model
na chamada para mlflow.evaluate()
, também deverá fornecer retrieved_context[].doc_uri
ou trace
.
Saída para document_recall
As seguintes métricas são calculadas para cada pergunta:
Campo de dados |
Tipo |
Descrição |
---|---|---|
|
|
A porcentagem da verdade fundamental |
As seguintes métricas são calculadas para todo o conjunto de avaliação:
Nome da métrica |
Tipo |
Descrição |
---|---|---|
|
|
Valor médio de |
O recuperador encontrou documentos suficientes para produzir a resposta esperada?
O juiz do context_sufficiency
LLM determina se o recuperador recuperou documentos que são suficientes para produzir a resposta esperada.
Entrada necessária para context_sufficiency
A verdade fundamental expected_response
é 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 argumento model
na chamada para mlflow.evaluate()
, também deverá fornecer retrieved_context[].content
ou trace
.
Saída para context_sufficiency
As métricas a seguir são calculadas para cada pergunta:
Campo de dados |
Tipo |
Descrição |
---|---|---|
|
|
|
|
|
A justificativa por escrito do LLM para |
|
|
Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL. |
As seguintes métricas são calculadas para todo o conjunto de avaliação:
Nome da métrica |
Tipo |
Descrição |
---|---|---|
|
|
Porcentagem em que a suficiência do contexto é avaliada como |
Juízes métricos personalizados
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 personalizado depende de assessment_type
, ANSWER
ou RETRIEVAL
.
Juiz LLM personalizado para avaliação da ANSWER
Um juiz LLM personalizado para avaliação de RESPOSTAS avalia a resposta de cada pergunta.
Resultados apresentados para cada avaliação:
Campo de dados |
Tipo |
Descrição |
---|---|---|
|
|
|
|
|
A justificativa por escrito do LLM para |
|
|
Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL. |
As seguintes métricas são calculadas para todo o conjunto de avaliação:
Nome da métrica |
Tipo |
Descrição |
---|---|---|
|
|
Em todas as perguntas, a porcentagem em que {assessment_name} é julgada como |
Juiz LLM personalizado para avaliação de RETRIEVAL
Um juiz LLM personalizado para avaliação de RETRIEVAL avalia cada trecho recuperado em todas as perguntas.
Resultados apresentados para cada avaliação:
Campo de dados |
Tipo |
Descrição |
---|---|---|
|
|
Avaliação do juiz personalizado para cada parte, |
|
|
Para cada parte, o raciocínio escrito do LLM para |
|
|
Para cada bloco, se houve um erro no cálculo dessa métrica, os detalhes do erro estão aqui e os outros valores são NULL. Se não houver erro, será NULL. |
|
|
Porcentagem de todos os pedaços recuperados que o juiz personalizado avaliou como |
Métricas relatadas de todo o conjunto de avaliação:
Nome da métrica |
Tipo |
Descrição |
---|---|---|
|
|
Valor médio de |