Referência de observabilidade de AI do Snowflake¶
Este documento fornece uma referência abrangente para o uso da observabilidade de AI do Snowflake Cortex para avaliar e monitorar o desempenho de seus aplicativos de AI generativa.
Ele abrange os seguintes conceitos:
Conjuntos de dados e atributos
Métricas de avaliação
Execuções
Controle de acesso e armazenamento
Conjunto de dados e atributos¶
Um conjunto de dados é um conjunto de entradas que você usa para testar o aplicativo. Ele também pode conter um conjunto de saídas esperadas (a verdade fundamental).
Você pode usar o TruLens Python SDK para especificar o conjunto de dados como uma tabela Snowflake ou um pandas DataFrame. Cada coluna do conjunto de dados deve ser mapeada para um dos seguintes atributos reservados:
Atributo de entrada |
Descrição |
---|---|
RECORD_ROOT.INPUT |
Aviso de entrada para o LLM. Tipo: cadeia de caracteres |
RECORD_ROOT.INPUT_ID |
Identificador exclusivo para o prompt de entrada. Se você não fornecer um ID de entrada, um ID será gerado automaticamente e atribuído a cada entrada. Tipo: cadeia de caracteres |
RETRIEVAL.QUERY_TEXT |
Consulta do usuário para um aplicativo RAG Tipo: cadeia de caracteres |
RECORD_ROOT.GROUND_TRUTH_OUTPUT |
Resposta esperada para o prompt de entrada. Tipo: cadeia de caracteres |
Para instrumentar o aplicativo, você deve mapear os parâmetros de entrada e saída da função (ou método) instrumentada para os atributos de entrada e saída relevantes. Use o decorador @instrument
para mapear os parâmetros e calcular as métricas. Além dos atributos de entrada especificados como parte do conjunto de dados, você também pode usar os seguintes atributos de saída para instrumentar as funções relevantes:
Atributo de saída |
Descrição |
---|---|
RETRIEVAL.RETRIEVED_CONTEXTS |
Saída gerada pelo LLM. Tipo: Lista [cadeia de caracteres] |
RECORD_ROOT.OUTPUT |
Resposta gerada pelo LLM. Tipo: cadeia de caracteres |
Métricas de avaliação¶
As métricas de avaliação fornecem uma maneira quantificável de medir a precisão e o desempenho de seu aplicativo. Essas métricas são computadas usando entradas específicas para o aplicativo, saídas geradas pelo LLM e qualquer informação intermediária (como resultados recuperados de um aplicativo RAG). Você também pode calcular métricas usando um conjunto de dados de verdade fundamental.
Você pode calcular as métricas com a abordagem “LLM como juiz”. Com essa abordagem, o LLM é usado para gerar uma pontuação (entre 0 e 1) com uma explicação para a saída do aplicativo, com base nas informações fornecidas. Você pode selecionar qualquer LLM disponível no Cortex AI como juiz. Se nenhum juiz LLM for especificado, o llama3.1-70b será usado como juiz padrão. A observabilidade de AI oferece suporte a uma variedade de métricas de avaliação.
Relevância de contexto¶
A relevância de contexto determina se o contexto recuperado do mecanismo de recuperação ou do serviço de pesquisa é relevante para a consulta do usuário. Dada a consulta do usuário e o contexto recuperado, um juiz LLM é usado para determinar a relevância do contexto recuperado com base na consulta.
Atributos necessários:
RETRIEVAL.QUERY_TEXT
: consulta do usuário em um aplicativo RAG ou de pesquisaRETRIEVAL.RETRIEVED_CONTEXTS
: contexto recuperado do serviço de pesquisa ou do mecanismo de recuperação
Fundamentação¶
A fundamentação determina se a resposta gerada é apoiada e fundamentada no contexto recuperado do mecanismo de recuperação ou do serviço de pesquisa. Com a resposta gerada e o contexto recuperado, um juiz LLM é usado para determinar a fundamentação. A implementação subjacente usa o raciocínio de cadeia de raciocínio ao gerar as pontuações de fundamentação.
Atributos necessários:
RETRIEVAL.RETRIEVED_CONTEXTS
: consulta do usuário em um aplicativo RAG ou de pesquisaRECORD_ROOT.OUTPUT
: resposta final gerada pelo LLM
Relevância da resposta¶
A relevância da resposta determina se a resposta gerada é relevante para a consulta do usuário. Dada a consulta do usuário e a resposta gerada, um juiz LLM é usado para determinar a relevância da resposta ao responder à consulta do usuário. Observe que isso não se baseia na referência de respostas de verdade fundamental e, portanto, não é equivalente a avaliar a correção das respostas.
Atributos necessários:
RECORD_ROOT.INPUT
: consulta do usuário em um aplicativo RAG ou de pesquisaRECORD_ROOT.OUTPUT
: resposta final gerada pelo LLM
Correção¶
A correção determina o grau de alinhamento da resposta gerada com a verdade fundamental. Uma pontuação de correção mais alta indica uma resposta mais precisa com maior alinhamento com a verdade fundamental.
Atributos necessários:
RECORD_ROOT.INPUT
: consulta ou prompt de usuário para o LLMRECORD_ROOT.GROUND_TRUTH_OUTPUT
: resposta esperada com base na consulta de usuárioRECORD_ROOT.OUTPUT
: resposta gerada pelo LLM
Coerência¶
A coerência mede se a resposta gerada pelo modelo é coerente e não apresenta lacunas lógicas, inconsistências ou contradições. Uma pontuação de coerência mais alta indica uma resposta altamente coerente.
Atributos necessários:
RECORD_ROOT.OUTPUT
: resposta gerada pelo LLM
Custo e latência¶
Custo de uso¶
O custo é calculado para cada chamada de invocação LLM que depende do Cortex LLMs com base nas informações de uso do token (prompt_tokens para entrada e completion_tokens para saída) retornadas pela função COMPLETE (SNOWFLAKE.CORTEX). Como parte das informações de rastreamento, você pode visualizar o uso do token e os custos correspondentes associados a cada chamada para LLM.
Latência¶
A latência é determinada pela medição do tempo necessário para concluir cada chamada de função no aplicativo. Os rastreamentos de aplicativos fornecem visibilidade granular da latência de cada função instrumentada usando o TruLens SDK. As latências de função individuais são agregadas para calcular a latência geral de todo o aplicativo correspondente a cada entrada. Cada execução também fornece uma latência média de todas as entradas para facilitar a comparação entre várias configurações de aplicativos.
Execuções¶
Uma execução é uma tarefa de avaliação usada para medir a precisão e o desempenho de um aplicativo. Ele ajuda você a selecionar a melhor configuração de aplicativo. A criação de um aplicativo de AI generativa envolve a experimentação de vários LLMs, prompts e parâmetros de inferência. Você mede sua precisão, latência e uso para encontrar a combinação ideal para a produção. Cada combinação corresponde a uma versão do aplicativo.
Uma execução usa o conjunto de dados que você especifica para executar uma avaliação em lote para uma versão do aplicativo. Você pode acionar várias execuções com o mesmo conjunto de dados para versões diferentes. Você pode comparar as diferenças agregadas e em nível de registro entre as versões para identificar as melhorias necessárias e selecionar a melhor versão a ser implementada.
A criação e a execução de uma execução envolvem quatro etapas principais:
Criação: após criar um aplicativo e uma versão, adicione uma nova execução à versão especificando um conjunto de dados.
Invocação: inicie a execução, que lê as entradas do conjunto de dados, invoque o aplicativo para cada entrada, gere rastreamentos e armazene as informações em sua conta Snowflake.
Computação: após a invocação, acione o cálculo especificando as métricas a serem computadas. Você pode acionar vários cálculos e adicionar novas métricas posteriormente para uma execução existente.
Exibição: visualize os resultados da execução no Snowsight fazendo login em sua conta Snowflake. As execuções estão listadas em seus aplicativos relevantes em AI & ML em Evaluations.
Você pode rotular cada execução para categorizar execuções comparáveis entre diferentes versões de aplicativo com o mesmo conjunto de dados. Use os rótulos para gerenciar e filtrar as execuções.
Uma execução pode ter um dos seguintes status:
Status |
Descrição |
---|---|
CREATED |
A execução foi criada, mas não iniciada. |
INVOCATION_IN_PROGRESS |
A invocação de execução está no processo de gerar a saída e os rastreamentos. |
INVOCATION_COMPLETED |
A invocação de execução foi concluída com todas as saídas e rastreamentos criados. |
INVOCATION_PARTIALLY_COMPLETED |
A invocação de execução foi parcialmente concluída devido a falhas na invocação do aplicativo e na geração de rastreamento. |
COMPUTATION_IN_PROGRESS |
O cálculo da métrica está em andamento. |
COMPLETED |
O cálculo da métrica é concluído com saídas e rastreamentos detalhados. |
PARTIALLY_COMPLETED |
A execução é parcialmente concluída devido a falhas durante o cálculo da métrica. |
CANCELLED |
A execução foi cancelada. |
Controle de acesso e armazenamento¶
Privilégios obrigatórios¶
Você precisa dos seguintes privilégios para usar a observabilidade de AI.
Para usar a observabilidade de AI, sua função deve ter a função de banco de dados CORTEX_USER. A função CORTEX_USER é necessária para as funções do banco de dados. Para obter informações sobre como conceder e revogar essa função, consulte Privilégios obrigatórios.
Para registrar um aplicativo, sua função deve ter os privilégios CREATE EXTERNAL AGENT no esquema. Para obter mais informações, consulte Aplicativos.
Para criar e realizar execuções, sua função deve ter os privilégios USAGE no objeto EXTERNAL AGENT criado para o aplicativo e a função de aplicativo AI_OBSERVABILITY_EVENTS_LOOKUP ou AI_OBSERVABILITY_ADMIN. Para obter mais informações, consulte Execuções e Dados de observabilidade.
O exemplo a seguir usa a função ACCOUNTADMIN para conceder ao usuário some_user
o seguinte:
A função de banco de dados CORTEX_USER
A função do aplicativo AI_OBSERVABILITY_EVENTS_LOOKUP
O privilégio CREATE EXTERNAL AGENT no esquema
app_schema
USE ROLE ACCOUNTADMIN;
CREATE ROLE observability_user_role;
GRANT DATABASE ROLE SNOWFLAKE.CORTEX_USER TO ROLE observability_user_role;
GRANT APPLICATION ROLE SNOWFLAKE.AI_OBSERVABILITY_EVENTS_LOOKUP TO ROLE observability_user_role;
GRANT CREATE EXTERNAL AGENT ON SCHEMA app_schema TO ROLE observability_user_role;
GRANT ROLE observability_user_role TO USER some_user;
O exemplo anterior usou a função observability_user_role
para conceder os privilégios a some_user
.
Aplicativos¶
A criação de um aplicativo para avaliação cria um objeto EXTERNAL AGENT para representar o aplicativo no Snowflake. A função necessária para criar e modificar um aplicativo deve ter os seguintes requisitos de controle de acesso.
Uma função usada para criar um aplicativo deve ter, no mínimo, os seguintes privilégios:
Privilégio |
Objeto |
Notas |
---|---|---|
OWNERSHIP |
Agent externo |
OWNERSHIP é um privilégio especial para um objeto que é automaticamente concedido à função que criou o objeto, mas também pode ser transferido usando o comando GRANTOWNERSHIP para uma função diferente pela função proprietária (ou qualquer função com o privilégio MANAGE GRANTS). |
CREATE EXTERNAL AGENT |
Esquema |
O privilégio USAGE no banco de dados e no esquema pai é necessário para executar operações em qualquer objeto de um esquema.
A modificação e a exclusão do aplicativo exigem os privilégios OWNERSHIP no objeto EXTERNAL AGENT.
Se a função de um usuário tiver privilégios USAGE ou OWNERSHIP em um aplicativo (EXTERNAL AGENT), o aplicativo aparecerá em Evaluations em AI & ML no Snowsight.
Execuções¶
Uma função usada para adicionar, modificar ou excluir uma execução em um aplicativo deve ter os privilégios USAGE no objeto EXTERNAL AGENT que representa o aplicativo no Snowflake.
A exclusão de uma execução exclui os metadados associados a ela. Os registros criados como parte da execução não são excluídos e permanecem armazenados. Consulte Dados de observabilidade para obter mais informações sobre o armazenamento dos registros e rastreamentos.
Para obter instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas. Para informações gerais sobre concessões de funções e privilégios para executar ações SQL em objetos protegíveis, consulte Visão geral do controle de acesso.
LLMs como juízes¶
A observabilidade de AI usa os LLMs do Cortex como juízes para calcular as métricas de avaliação de seus aplicativos. Para calcular essas métricas com sucesso, você precisa de permissões para acessar o Cortex LLMs. Para conceder acesso às funções de usuário ao Cortex LLMs, consulte os privilégios necessários. O usuário deve ter acesso ao modelo configurado como juiz LLM. O modelo padrão usado para o juiz LLM é o llama3.1-70b. O modelo padrão do juiz LLM está sujeito a alterações no futuro.
Dados de observabilidade¶
Os dados de observabilidade de AI representam registros que contêm entradas, saídas, pontuações de avaliação e rastreamentos associados para seus aplicativos de AI generativa. Todos os registros são armazenados em uma tabela de eventos dedicada AI_OBSERVABILITY_EVENTS em sua conta no esquema SNOWFLAKE.LOCAL.
Os dados de observabilidade de AI inseridos na tabela de eventos não podem ser modificados. Os administradores com a função de aplicativo AI_OBSERVABILITY_ADMIN têm acesso exclusivo para excluir os dados da tabela de eventos SNOWFLAKE.LOCAL.AI_OBSERVABILITY_EVENTS.
Os dados de observabilidade de AI podem ser acessados usando o Trulens Python SDK ou Snowsight. Os privilégios a seguir são necessários para visualizar os registros de um aplicativo e as execuções associadas:
A função do usuário deve ter a função de aplicativo SNOWFLAKE.AI_OBSERVABILITY_ADMIN ou SNOWFLAKE.AI_OBSERVABILITY_EVENTS_LOOKUP
A função do usuário deve ter o privilégio USAGE no objeto EXTERNAL AGENT que representa o aplicativo.
Por exemplo, para visualizar as execuções de um aplicativo RAG instrumentado externamente, a função de usuário requer o privilégio USAGE em “my-db.my-schema.rag-application1”, em que rag-application1 é o objeto EXTERNAL AGENT que representa o aplicativo RAG externo no Snowflake.
Os metadados associados a execuções e agentes externos (como nome da execução, descrição, nome do conjunto de dados etc.) são classificados como metadados.