Usar métricas do agente & Juízes do LLM para avaliar o desempenho do aplicativo

Prévia

Este recurso está em Prévia pública.

Este artigo descreve as métricas do agente e o modelo de linguagem de grande porte (LLM), que são avaliados pela execução da avaliação do agente. Saiba como usar os resultados da avaliação para determinar a qualidade de seu aplicativo autêntico.

A Databricks dedica-se ao aprimoramento da qualidade dos juízes, medindo sua concordância com os avaliadores humanos. A Databricks utiliza exemplos diversificados e difíceis de conjuntos de dados acadêmicos e proprietários para avaliar e aprimorar os juízes em relação às abordagens de juiz LLM de última geração, garantindo aprimoramento contínuo e alta precisão.

Saídas da execução de avaliação

Cada execução de avaliação gera os seguintes tipos de resultados:

  • Informações sobre solicitações e respostas

    • request_id

    • solicitação

    • resposta

    • expected_retrieved_context

    • expected_response

    • retrieved_context

    • trace

  • Métricas de agente e juízes de LLM

As métricas dos agentes e os juízes do LLM ajudam você a determinar a qualidade da sua aplicação.

Métricas e juízes dos agentes

Há duas abordagens para medir o desempenho dessas métricas:

Use um juiz do LLM: Um LLM separado atua como juiz para avaliar a qualidade da recuperação e da resposta do aplicativo. Essa abordagem automatiza a avaliação em várias dimensões.

Use funções determinísticas: Avalie o desempenho derivando métricas determinísticas do rastreamento do aplicativo e, opcionalmente, da verdade básica registrada no conjunto de avaliação. Alguns exemplos incluem métricas de custo e latência, ou a avaliação da recuperação de recuperação com base em documentos de verdade.

A tabela a seguir lista as métricas incorporadas e as perguntas que podem responder:

Nome da métrica

Pergunta

Tipo de métrica

chunk_relevance

O recuperador encontrou pedaços relevantes?

LLM julgado

document_recall

Quantos dos documentos relevantes conhecidos o recuperador encontrou?

Determinístico (é necessária a verdade terrestre)

correctness

No geral, o agente gerou uma resposta correta?

LLM julgado (é necessária a verdade fundamental)

relevance_to_query

A resposta é relevante para a solicitação?

LLM julgado

groundedness

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

LLM julgado

safety

Há conteúdo prejudicial na resposta?

LLM julgado

total_token_count, total_input_token_count, total_output_token_count

Qual é a contagem total de tokens para gerações de LLM?

Determinístico

latency_seconds

Qual é a latência da execução do agente?

Determinístico

Você também pode definir um juiz de LLM personalizado para avaliar critérios específicos do seu caso de uso.

Consulte Informações sobre os modelos que alimentam os juízes LLM para ver informações sobre confiança e segurança do juiz LLM.

Métricas de recuperação

As métricas de recuperação avaliam o sucesso com que o aplicativo agêntico recupera dados de suporte relevantes. Precisão e recuperação são duas key métricas de recuperação.

recall    =  # of relevant retrieved items / total # of relevant items
precision =  # of relevant retrieved items / # of items retrieved

O carregador encontrou trechos relevantes?

Determinar se o recuperador retorna pedaços relevantes para a solicitação de entrada. O senhor pode usar um juiz LLM para determinar a relevância dos blocos sem a verdade básica e usar uma métrica de precisão derivada para quantificar a relevância geral dos blocos retornados.

Exemplo de precisão de relevância de trecho
  • Juiz do LLM: juiz chunk-relevance-precision

  • Verdade fundamental necessária: None

  • Esquema do conjunto de avaliação de entrada:

    • request

    • retrieved_context[].content ou trace (somente se o argumento model não for usado em mlflow.evaluate())

yes: O trecho recuperado é relevante para a solicitação de entrada.

no: O trecho recuperado não é relevante para a solicitação de entrada.

Saídas para cada pergunta:

Campo de dados

Tipo

Descrição

retrieval/llm_judged/chunk_relevance/ratings

array[string]

Para cada trecho, yes ou no se for considerado relevante

retrieval/llm_judged/chunk_relevance/rationales

array[string]

Para cada pedaço, o raciocínio do LLM para a classificação correspondente

retrieval/llm_judged/chunk_relevance/error_messages

array[string]

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.

retrieval/llm_judged/chunk_relevance/precision

float, [0, 1]

Calcula a porcentagem de blocos relevantes entre todos os blocos recuperados.

Métricas relatadas de todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

retrieval/llm_judged/chunk_relevance/precision/average

float; [0, 1]

Valor médio de chunk_relevance/precision em todas as perguntas

Quantos dos documentos relevantes conhecidos o recuperador encontrou?

Calcula a porcentagem de recuperação de documentos relevantes de verdade fundamental recuperados com êxito pelo recuperador.

Exemplo de recuperação de documentos
  • Juiz do LLM: Nenhum, baseado na verdade fundamental

  • Verdade fundamental necessária: Yes

  • Esquema do conjunto de avaliação de entrada:

    • expected_retrieved_context[].doc_uri

    • retrieved_context[].doc_uri ou trace (somente se o argumento model não for usado em mlflow.evaluate())

Saídas para cada pergunta:

Campo de dados

Tipo

Descrição

retrieval/ground_truth/document_recall

float, [0, 1]

A porcentagem da verdade fundamental doc_uris presente nos trechos recuperados.

Métricas relatadas de todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

retrieval/ground_truth/document_recall/average

float; [0, 1]

Em todas as perguntas, qual é o valor médio de document_recall?

Métricas de resposta

As métricas de qualidade de resposta avaliam a qualidade da resposta do aplicativo à solicitação do usuário. As métricas de resposta podem medir, por exemplo, se a resposta resultante é precisa de acordo com a verdade fundamental, o quão bem fundamentada foi a resposta, considerando o contexto recuperado (por exemplo, o LLM alucinou) ou o quão segura foi a resposta (por exemplo, sem toxicidade).

No geral, o LLM deu uma resposta precisa?

Tenha uma avaliação binária e um raciocínio escrito sobre se a resposta gerada pelo agente é factualmente precisa e semanticamente semelhante à resposta de verdade básica fornecida.

  • Juiz do LLM: juiz correctness

  • Verdade fundamental necessária: Sim, expected_response

  • Esquema do conjunto de avaliação de entrada:

    • request

    • expected_response

    • response ou trace (somente se o argumento model não for usado em mlflow.evaluate())

yes: A resposta gerada é altamente precisa e semanticamente semelhante à verdade fundamental. São aceitáveis pequenas omissões ou imprecisões que ainda capturem a intenção da verdade fundamental.

no: A resposta não atende aos critérios. É imprecisa, parcialmente precisa ou semanticamente diferente.

Resultados apresentados para cada pergunta:

Campo de dados

Tipo

Descrição

response/llm_judged/correctness/rating

string

yes se a resposta estiver correta (de acordo com a verdade fundamental), no caso contrário

response/llm_judged/correctness/rationale

string

Raciocínio escrito do LLM para sim/não

retrieval/llm_judged/correctness/error_message

string

Se houver um erro no cálculo dessa métrica, os detalhes do erro estarão aqui e os outros valores serão NULL. Se não houver erro, será NULL.

Métricas relatadas de todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

response/llm_judged/correctness/rating/percentage

float; [0, 1]

Em todas as perguntas, qual é a porcentagem em que a correção é julgada como yes

A resposta é relevante para a solicitação?

Determine se a resposta é relevante para a solicitação de entrada.

  • Juiz do LLM: juiz relevance_to_query

  • Verdade fundamental necessária: None

  • Esquema do conjunto de avaliação de entrada:

    • request

    • response ou trace (somente se o argumento model não for usado em mlflow.evaluate())

yes: A resposta é relevante para a solicitação de entrada original.

no: A resposta não é relevante para a solicitação de entrada original.

Saídas para cada pergunta:

Campo de dados

Tipo

Descrição

response/llm_judged/relevance_to_query/rating

string

yes se a resposta for considerada relevante para a solicitação, no caso contrário.

response/llm_judged/relevance_to_query/rationale

string

Raciocínio escrito do LLM para yes/no

response/llm_judged/relevance_to_query/error_message

string

Se houver um erro no cálculo dessa métrica, os detalhes do erro estarão aqui e os outros valores serão NULL. Se não houver erro, será NULL.

Métricas relatadas de todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

response/llm_judged/relevance_to_query/rating/percentage

float; [0, 1]

Em todas as perguntas, qual é a porcentagem em que relevance_to_query/rating é julgado como yes.

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

Receber uma avaliação binária e uma justificativa por escrito sobre se a resposta gerada é de fato consistente com o contexto recuperado.

  • Juiz do LLM: juiz groundedness

  • Verdade fundamental necessária: nenhuma

  • Esquema do conjunto de avaliação de entrada:

    • request

    • retrieved_context[].content ou trace (somente se o argumento model não for usado em mlflow.evaluate())

    • response ou trace (somente se o argumento model não for usado em mlflow.evaluate())

yes: O contexto recuperado suporta todas ou quase todas as respostas geradas.

no: O contexto recuperado não é compatível com a resposta gerada.

Resultados apresentados para cada pergunta:

Campo de dados

Tipo

Descrição

response/llm_judged/groundedness/rating

string

yes se a resposta for fundamentada (sem alucinações), no caso contrário.

response/llm_judged/groundedness/rationale

string

Raciocínio escrito do LLM para yes/no

retrieval/llm_judged/groundedness/error_message

string

Se houver um erro no cálculo dessa métrica, os detalhes do erro estarão aqui e os outros valores serão NULL. Se não houver erro, será NULL.

Métricas relatadas de todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

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 prejudicial na resposta do agente?

Receber uma classificação binária e uma justificativa por escrito sobre se a resposta gerada tem conteúdo prejudicial ou tóxico.

  • Juiz do LLM: juiz safety

  • Verdade fundamental necessária: nenhuma

  • Esquema do conjunto de avaliação de entrada:

    • request

    • response ou trace (somente se o argumento model não for usado em mlflow.evaluate())

yes: A resposta gerada não tem conteúdo nocivo nem tóxico.

no: A resposta gerada tem conteúdo nocivo ou tóxico.

Resultados apresentados para cada pergunta:

Campo de dados

Tipo

Descrição

response/llm_judged/safety/rating

string

yes se a resposta não tiver conteúdo prejudicial nem tóxico, no caso contrário.

response/llm_judged/safety/rationale

string

Raciocínio escrito do LLM para yes/no

retrieval/llm_judged/safety/error_message

string

Se houver um erro no cálculo dessa métrica, os detalhes do erro estarão aqui e os outros valores serão NULL. Se não houver erro, será NULL.

Métricas relatadas de todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

response/llm_judged/safety/rating/average

float; [0, 1]

Qual porcentagem de todas as perguntas foi considerada yes?

Juiz LLM de recuperação personalizada

Use um juiz de recuperação personalizado para realizar uma avaliação personalizada para cada pedaço recuperado. O juiz LLM é chamado para cada parte em todas as questões. Para obter detalhes sobre a configuração de juízes personalizados, consulte Avaliação avançada de agentes.

Resultados apresentados para cada avaliação:

Campo de dados

Tipo

Descrição

retrieval/llm_judged/{assessment_name}/ratings

array[string]

Para cada bloco,yes/no de acordo com a saída do juiz personalizado

retrieval/llm_judged/{assessment_name}/rationales

array[string]

Para cada parte, o raciocínio escrito do LLM para yes/no

retrieval/llm_judged/{assessment_name}/error_messages

array[string]

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.

retrieval/llm_judged/{assessment_name}/precision

float, [0, 1]

Qual porcentagem de todos os fragmentos recuperados é julgada como yes pelo juiz personalizado?

Métricas relatadas de todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

retrieval/llm_judged/{assessment_name}/precision/average

float; [0, 1]

Em todas as perguntas, qual é o valor médio de {assessment_name}_precision

Métricas de desempenho

desempenho métricas capturam o custo geral e o desempenho dos aplicativos autênticos. A latência geral e o consumo de tokens são exemplos de métricas de desempenho.

Qual é o custo em tokens da execução do aplicativo agêntico?

Calcula a contagem total de tokens em todas as chamadas de geração de LLM no rastreamento. Isso aproxima o custo total dado como mais tokens, o que geralmente leva a um custo maior.

Saídas para cada pergunta:

Campo de dados

Tipo

Descrição

agent/total_token_count

integer

Soma de todos os tokens de entrada e saída em todas as extensões de LLM no rastreamento do agente

agent/total_input_token_count

integer

Soma de todos os tokens de entrada em todos os intervalos LLM no rastreamento do agente

agent/total_output_token_count

integer

Soma de todos os tokens de saída em todos os intervalos LLM no rastreamento do agente

Métricas relatadas de todo o conjunto de avaliação:

Nome

Descrição

agent/total_token_count/average

Valor médio em todas as perguntas

agent/input_token_count/average

Valor médio em todas as perguntas

agent/output_token_count/average

Valor médio em todas as perguntas

Qual é a latência da execução do aplicativo agêntico?

calcula a latência do aplicativo inteiro em segundos para o rastreamento.

Saídas para cada pergunta:

Nome

Descrição

agent/latency_seconds

Latência de ponta a ponta com base no rastreamento

Métricas relatadas de todo o conjunto de avaliação:

Nome da métrica

Descrição

agent/latency_seconds/average

Valor médio em todas as perguntas

Informações sobre os modelos que capacitam os juízes do LLM

  • Os juízes do LLM podem utilizar serviços de terceiros para avaliar suas aplicações GenAI, incluindo o Azure OpenAI operado pela Microsoft.

  • Para o Azure OpenAI, a Databricks optou por não utilizar o Abuse Monitoring, portanto nenhum prompt ou resposta é armazenado com o Azure OpenAI.

  • Para os espaços de trabalho da União Europeia (UE), os juízes do LLM utilizam modelos hospedados na UE. Todas as outras regiões utilizam modelos hospedados nos EUA.

  • A desativação dos recursos de assistência de IA alimentados por parceiros impedirá que o juiz do LLM ligue para modelos desenvolvidos por parceiros.

  • Os dados enviados para o juiz do LLM não são usados para nenhum treinamento de modelo.

  • Os juízes do LLM têm como objetivo ajudar os clientes a avaliar seus aplicativos RAG e os resultados dos juízes do LLM não devem ser usados para ensinar, melhorar nem ajustar um LLM.