Compartir a través de


Referencia de los jueces llm de evaluación del agente de AI de Mosaico

Importante

Esta característica está en versión preliminar pública.

En este artículo se describen los detalles de cada uno de los jueces de LLM integrados en la evaluación del agente de IA de Mosaico, incluidas las entradas necesarias y las métricas de salida. También abarca la salida producida por jueces personalizados.

Para obtener una introducción a los jueces de LLM, consulte Cómo la evaluación del agente evalúa la calidad, el costo y la latencia.

Jueces de respuesta

Las métricas de calidad de la respuesta evalúan la eficacia de la aplicación al responder a la solicitud de un usuario. Estas métricas evalúan factores como la precisión de la respuesta en comparación con la verdad básica, si la respuesta está bien fundamentada según el contexto recuperado (o si el LLM es alucinante) y si la respuesta es segura y libre de idioma tóxico.

En general, ¿proporcionó el LLM una respuesta precisa?

El juez de LLM correctness proporciona una evaluación binaria y una justificación escrita sobre si la respuesta generada del agente es objetivamente precisa y semánticamente similar a la respuesta de verdad básica proporcionada.

Entrada obligatoria para correctness

Es obligatoria la verdad básica expected_response.

El conjunto de evaluación de entrada debe tener las columnas siguientes:

  • request
  • expected_response

Además, si no usa el argumento model en la llamada a mlflow.evaluate(), también debe proporcionar response o trace.

Importante

La verdad básica expected_response debe incluir solo el conjunto mínimo de hechos necesarios para una respuesta correcta. Si copia una respuesta de otro origen, edite la respuesta para quitar cualquier texto que no sea necesario para que una respuesta se considere correcta.

Incluir solo la información necesaria y dejar fuera la información que no es estrictamente necesaria en la respuesta, permite a la evaluación del agente proporcionar una señal más sólida sobre la calidad de la salida.

Salida para correctness

Las métricas siguientes se calculan para cada pregunta:

campo Datos Tipo Descripción
response/llm_judged/correctness/rating string yes o no. yes: indica que la respuesta generada es altamente precisa y semánticamente similar a la verdad básica. Se aceptan omisiones o imprecisiones que aun así capturen la intención de la verdad básica. no: indica que la respuesta no cumple los criterios.
response/llm_judged/correctness/rationale string Razonamiento escrito del LLM para yes o no.
response/llm_judged/correctness/error_message string Si se ha producido un error al calcular esta métrica, los detalles del error están aquí. Si no hay ningún error, es NULL.

La métrica siguiente se calcula para todo el conjunto de evaluación:

Nombre de métrica Tipo Descripción
response/llm_judged/correctness/rating/percentage float, [0, 1] En todas las preguntas, el porcentaje en el que la corrección se considera yes.

¿Es pertinente la respuesta para la solicitud?

El juez de LLM relevance_to_query determina si la respuesta es pertinente para la solicitud de entrada..

Entrada obligatoria para relevance_to_query

No se necesita la verdad básica.

El conjunto de evaluación de entrada debe tener la columna siguiente:

  • request

Además, si no usa el argumento model en la llamada a mlflow.evaluate(), también debe proporcionar response o trace.

Salida para relevance_to_query

Las métricas siguientes se calculan para cada pregunta:

campo Datos Tipo Descripción
response/llm_judged/relevance_to_query/rating string yes si la respuesta se considera pertinente para la solicitud; en caso contrario, no.
response/llm_judged/relevance_to_query/rationale string Razonamiento escrito del LLM para yes o no.
response/llm_judged/relevance_to_query/error_message string Si se ha producido un error al calcular esta métrica, los detalles del error están aquí. Si no hay ningún error, es NULL.

La métrica siguiente se calcula para todo el conjunto de evaluación:

Nombre de métrica Tipo Descripción
response/llm_judged/relevance_to_query/rating/percentage float, [0, 1] En todas las preguntas, el porcentaje en el que relevance_to_query/rating se considera yes.

¿Es la respuesta una alucinación o se basa en el contexto recuperado?

El juez de LLM groundedness devuelve una evaluación binaria y una justificación escrita sobre si la respuesta generada es objetivamente coherente con el contexto recuperado.

Entrada obligatoria para groundedness

No se necesita la verdad básica.

El conjunto de evaluación de entrada debe tener la columna siguiente:

  • request

Además, si no usa el argumento model en la llamada a mlflow.evaluate(), también debe proporcionar trace, o bien response y retrieved_context[].content.

Salida para groundedness

Las métricas siguientes se calculan para cada pregunta:

campo Datos Tipo Descripción
response/llm_judged/groundedness/rating string yes si el contexto recuperado admite todas o casi todas las respuestas generadas, no en caso contrario.
response/llm_judged/groundedness/rationale string Razonamiento escrito del LLM para yes o no.
response/llm_judged/groundedness/error_message string Si se ha producido un error al calcular esta métrica, los detalles del error están aquí. Si no hay ningún error, es NULL.

La métrica siguiente se calcula para todo el conjunto de evaluación:

Nombre de métrica Tipo Descripción
response/llm_judged/groundedness/rating/percentage float, [0, 1] En todas las preguntas, ¿cuál es el porcentaje en el que groundedness/rating se considera yes?

¿Hay contenido dañino en la respuesta del agente?

El juez de LLM safety devuelve una clasificación binaria y una justificación escrita sobre si la respuesta generada tiene contenido dañino o tóxico.

Entrada obligatoria para safety

No se necesita la verdad básica.

El conjunto de evaluación de entrada debe tener la columna siguiente:

  • request

Además, si no usa el argumento model en la llamada a mlflow.evaluate(), también debe proporcionar response o trace.

Salida para safety

Las métricas siguientes se calculan para cada pregunta:

campo Datos Tipo Descripción
response/llm_judged/safety/rating string yes si la respuesta generada no tiene contenido dañino o tóxico; en caso contrario, no.
response/llm_judged/safety/rationale string Razonamiento escrito del LLM para yes o no.
response/llm_judged/safety/error_message string Si se ha producido un error al calcular esta métrica, los detalles del error están aquí. Si no hay ningún error, es NULL.

La métrica siguiente se calcula para todo el conjunto de evaluación:

Nombre de métrica Tipo Descripción
response/llm_judged/safety/rating/average float, [0, 1] Porcentaje de todas las preguntas que se han considerado yes.

Jueces de recuperación

Las métricas de calidad de recuperación evalúan el rendimiento del recuperador al buscar los documentos que son relevantes para la solicitud de entrada. Estas métricas evalúan factores como: ¿el recuperador encontró los fragmentos pertinentes? ¿Cuántos de los documentos relevantes conocidos encontraron? ¿Se encontraron los documentos suficientes para generar la respuesta esperada?

¿Encontró el recuperador fragmentos pertinentes?

El juez de LLM chunk-relevance-precision determina si los fragmentos devueltos por el recuperador son relevantes para la solicitud de entrada. La precisión se calcula como el número de fragmentos pertinentes devueltos dividido por el número total de fragmentos devueltos. Por ejemplo, si el recuperador devuelve cuatro fragmentos y el juez de LLM determina que tres de los cuatro documentos devueltos son pertinentes para la solicitud, entonces llm_judged/chunk_relevance/precision es 0,75.

Entrada obligatoria para llm_judged/chunk_relevance

No se necesita la verdad básica.

El conjunto de evaluación de entrada debe tener la columna siguiente:

  • request

Además, si no usa el argumento model en la llamada a mlflow.evaluate(), también debe proporcionar retrieved_context[].content o trace.

Salida para llm_judged/chunk_relevance

Las métricas siguientes se calculan para cada pregunta:

campo Datos Tipo Descripción
retrieval/llm_judged/chunk_relevance/ratings array[string] Para cada fragmento, yes o no, que indica si el fragmento recuperado es relevante para la solicitud de entrada.
retrieval/llm_judged/chunk_relevance/rationales array[string] Para cada fragmento, el razonamiento del LLM para la clasificación correspondiente.
retrieval/llm_judged/chunk_relevance/error_messages array[string] Para cada fragmento, si se ha producido un error al calcular la clasificación, los detalles del error están aquí y otros valores de salida serán NULL. Si no hay ningún error, es NULL.
retrieval/llm_judged/chunk_relevance/precision float, [0, 1] Calcula el porcentaje de fragmentos pertinentes entre todos los fragmentos recuperados.

Se notifica la métrica siguiente para todo el conjunto de evaluación:

Nombre de métrica Tipo Descripción
retrieval/llm_judged/chunk_relevance/precision/average float, [0, 1] Valor medio de chunk_relevance/precision en todas las preguntas.

¿Cuántos de los documentos pertinentes conocidos encontró el recuperador?

document_recall se calcula como el número de documentos pertinentes devueltos dividido por el número total de documentos pertinentes en función de la verdad básica. Por ejemplo, imagine que dos documentos son relevantes en función de la verdad básica. Si el recuperador devuelve uno de esos documentos, document_recall es 0,5. Esta métrica no se ve afectada por el número total de documentos devueltos.

Esta métrica es determinista y no usa un juez de LLM.

Entrada obligatoria para document_recall

La verdad básica es obligatoria.

El conjunto de evaluación de entrada debe tener la columna siguiente:

  • expected_retrieved_context[].doc_uri

Además, si no usa el argumento model en la llamada a mlflow.evaluate(), también debe proporcionar retrieved_context[].doc_uri o trace.

Salida para document_recall

La métrica siguiente se calcula para cada pregunta:

campo Datos Tipo Descripción
retrieval/ground_truth/document_recall float, [0, 1] Porcentaje de la verdad básica doc_uris presente en los fragmentos recuperados.

La métrica siguiente se calcula para todo el conjunto de evaluación:

Nombre de métrica Tipo Descripción
retrieval/ground_truth/document_recall/average float, [0, 1] Valor medio de document_recall en todas las preguntas.

¿El recuperador encontró documentos suficientes para generar la respuesta esperada?

El juez de LLM context_sufficiency determina si el recuperador ha recuperado documentos suficientes para generar la respuesta esperada.

Entrada obligatoria para context_sufficiency

Se requiere la verdad básica expected_response.

El conjunto de evaluación de entrada debe tener las columnas siguientes:

  • request
    • expected_response

Además, si no usa el argumento model en la llamada a mlflow.evaluate(), también debe proporcionar retrieved_context[].content o trace.

Salida para context_sufficiency

Las métricas siguientes se calculan para cada pregunta:

campo Datos Tipo Descripción
retrieval/llm_judged/context_sufficiency/rating string yes o no. yes indica que el contexto recuperado es suficiente para generar la respuesta esperada. no indica que la recuperación debe optimizarse para esta pregunta para que devuelva la información que falta. La justificación de la salida debe mencionar la información que falta.
retrieval/llm_judged/context_sufficiency/rationale string Razonamiento escrito del LLM para yes o no.
retrieval/llm_judged/context_sufficiency/error_message string Si se ha producido un error al calcular esta métrica, los detalles del error están aquí. Si no hay ningún error, es NULL.

La métrica siguiente se calcula para todo el conjunto de evaluación:

Nombre de métrica Tipo Descripción
retrieval/llm_judged/context_sufficiency/rating/percentage float, [0, 1] Porcentaje en el que la suficiencia del contexto se juzga como yes.

Métricas de juez personalizadas

Puede crear un juez personalizado para realizar evaluaciones específicas del caso de uso. Para más información, vea Creación de jueces de LLM personalizados.

La salida generada por un juez personalizado depende de su assessment_type, ANSWER o RETRIEVAL.

Juez de LLM personalizado para la evaluación de RESPUESTA

Un juez de LLM personalizado para la evaluación de RESPUESTA evalúa la respuesta para cada pregunta.

Salidas proporcionadas para cada evaluación:

campo Datos Tipo Descripción
response/llm_judged/{assessment_name}/rating string yes o no.
response/llm_judged/{assessment_name}/rationale string Razonamiento escrito del LLM para yes o no.
response/llm_judged/{assessment_name}/error_message string Si se ha producido un error al calcular esta métrica, los detalles del error están aquí. Si no hay ningún error, es NULL.

La métrica siguiente se calcula para todo el conjunto de evaluación:

Nombre de métrica Tipo Descripción
response/llm_judged/{assessment_name}/rating/percentage float, [0, 1] En todas las preguntas, el porcentaje en el que {nombre_de_evaluación} se juzga como yes.

Juez de LLM personalizado para la evaluación de RECUPERACIÓN

Un juez de LLM personalizado para la evaluación de RECUPERACIÓN evalúa cada fragmento recuperado en todas las preguntas.

Salidas proporcionadas para cada evaluación:

campo Datos Tipo Descripción
retrieval/llm_judged/{assessment_name}/ratings array[string] Evaluación del juez personalizado para cada fragmento, yes o no.
retrieval/llm_judged/{assessment_name}/rationales array[string] Para cada fragmento, el razonamiento escrito del LLM para yes o no.
retrieval/llm_judged/{assessment_name}/error_messages array[string] Para cada fragmento, si se ha producido un error al calcular esta métrica, los detalles del error están aquí y otros valores son NULL. Si no hay ningún error, es NULL.
retrieval/llm_judged/{assessment_name}/precision float, [0, 1] Porcentaje de todos los fragmentos recuperados que el juez personalizado ha evaluado como yes.

Métricas notificadas para todo el conjunto de evaluación:

Nombre de métrica Tipo Descripción
retrieval/llm_judged/{assessment_name}/precision/average float, [0, 1] Valor medio de {assessment_name}_precision en todas las preguntas.