Snowflake AI Observability 참조

이 문서는 생성형 AI 애플리케이션의 성능을 평가하고 모니터링하기 위해 Snowflake Cortex AI Observability를 사용하기 위한 포괄적인 참조를 제공합니다.

다음 개념을 다룹니다.

  • 데이터 세트 및 특성

  • 평가 메트릭

  • 실행

  • 액세스 제어 및 저장소

데이터 세트 및 특성

데이터 세트는 애플리케이션을 테스트하는 데 사용하는 입력 세트입니다. 또한 예상 출력 세트(ground truth)를 포함할 수도 있습니다.

TruLens Python SDK 를 사용하여 데이터 세트를 Snowflake 테이블 또는 pandas 데이터프레임 으로 지정할 수 있습니다. 데이터 세트의 각 열은 다음 예약 특성 중 하나에 매핑되어야 합니다.

예약 특성

입력 특성

설명

RECORD_ROOT.INPUT

LLM 에 대한 입력 프롬프트입니다.

유형: 문자열

RECORD_ROOT.INPUT_ID

입력 프롬프트의 고유 식별자입니다.

ID 입력을 제공하지 않으면 ID 가 자동으로 생성되어 각 입력에 할당됩니다.

유형: 문자열

RETRIEVAL.QUERY_TEXT

RAG 애플리케이션에 대한 사용자 쿼리

유형: 문자열

RECORD_ROOT.GROUND_TRUTH_OUTPUT

입력 프롬프트에 대한 예상 응답입니다.

유형: 문자열

애플리케이션을 계측하려면 계측할 함수(또는 메서드)의 입력 및 출력 매개 변수를 관련 입력 및 출력 특성에 매핑해야 합니다. @instrument 데코레이터를 사용하여 매개 변수를 매핑하고 메트릭을 계산하십시오. 데이터 세트의 일부로 지정된 입력 특성 외에도 다음 출력 특성을 사용하여 관련 함수를 계측할 수 있습니다.

출력 특성

출력 특성

설명

RETRIEVAL.RETRIEVED_CONTEXTS

LLM 에 의해 생성된 출력.

유형: 목록 [string]

RECORD_ROOT.OUTPUT

LLM 에서 생성된 응답입니다.

유형: 문자열

평가 메트릭

평가 메트릭은 애플리케이션의 정확성과 성능을 측정할 수 있는 정량화 가능한 방법을 제공합니다. 이러한 메트릭은 애플리케이션에 대한 특정 입력, LLM 생성 출력 및 중간 정보(예: RAG 애플리케이션에서 검색된 결과)를 사용하여 계산됩니다. 또한 ground truth 데이터 세트를 사용하여 메트릭을 계산할 수도 있습니다.

“LLM as-a-judge” 접근법을 사용하여 메트릭을 계산할 수 있습니다. 이 접근법에서는 제공된 정보를 기반으로 애플리케이션의 출력에 대한 설명과 함께 점수(0~1)를 생성하기 위해 LLM 을 사용합니다. Cortex AI 에서 사용 가능한 LLM 을 평가자로 선택할 수 있습니다. LLM 평가자를 지정하지 않으면 llama3.1-70b가 기본 평가자로 사용됩니다. AI Observability는 다양한 평가 메트릭을 지원합니다.

컨텍스트 관련성

컨텍스트 관련성은 가져오기 또는 검색 서비스에서 검색된 컨텍스트가 사용자 쿼리와 관련이 있는지 여부를 결정합니다. 사용자 쿼리와 검색된 컨텍스트가 주어지면 LLM 평가자를 사용하여 쿼리를 기반으로 검색된 컨텍스트의 관련성을 결정합니다.

필수 특성:

  • RETRIEVAL.QUERY_TEXT: RAG 또는 검색 애플리케이션의 사용자 쿼리

  • RETRIEVAL.RETRIEVED_CONTEXTS: 검색 서비스 또는 가져오기에서 검색된 컨텍스트

근거성

근거성은 생성된 응답이 가져오기 또는 검색 서비스에서 검색된 컨텍스트에 의해 지원되고 근거가 있는지를 결정합니다. 생성된 응답과 검색된 컨텍스트가 주어지면 LLM 판단을 사용하여 근거 여부를 결정합니다. 기본 구현에서는 근거 점수를 생성할 때 연쇄 추론(Chain-of-thought)을 사용합니다.

필수 특성:

  • RETRIEVAL.RETRIEVED_CONTEXTS: RAG 또는 검색 애플리케이션의 사용자 쿼리

  • RECORD_ROOT.OUTPUT: LLM 에 의해 생성된 최종 응답

답변 관련성

응답 관련성은 생성된 응답이 사용자 쿼리와 관련이 있는지 여부를 결정합니다. 사용자 쿼리와 생성된 응답이 주어지면 LLM 판정을 사용하여 사용자의 쿼리에 응답할 때 응답이 얼마나 관련성이 있는지 판단합니다. 참고로, 이 방법은 실제 정답 참조에 의존하지 않으며, 따라서 이는 답변의 정답 여부를 평가하는 것과 동일하지 않습니다.

필수 특성:

  • RECORD_ROOT.INPUT: RAG 또는 검색 애플리케이션의 사용자 쿼리

  • RECORD_ROOT.OUTPUT: LLM 에 의해 생성된 최종 응답

정확성

정확도는 생성된 응답이 ground truth와 얼마나 일치하는지를 결정합니다. 정확도 점수가 높을수록 응답이 더 정확하고 ground truth와 더 많이 일치함을 나타냅니다.

필수 특성:

  • RECORD_ROOT.INPUT: LLM 에 대한 사용자 쿼리 또는 프롬프트

  • RECORD_ROOT.GROUND_TRUTH_OUTPUT: 사용자 쿼리 기반 예상 응답

  • RECORD_ROOT.OUTPUT: LLM 에 의해 생성된 응답

일관성

일관성은 모델의 생성된 응답이 일관성이 있고 논리적 격차, 불일치 또는 모순이 없는지 여부를 측정합니다. 일관성 점수가 높을수록 응답의 일관성이 높음을 나타냅니다.

필수 특성:

  • RECORD_ROOT.OUTPUT: LLM 에 의해 생성된 응답

비용 및 지연 시간

사용 비용

비용은 Cortex LLMs 을 활용하는 각 LLM 호출에 대해 COMPLETE (SNOWFLAKE.CORTEX) 함수에서 반환된 토큰 사용 정보(입력용 prompt_tokens 및 출력용 completion_tokens)를 기반으로 계산됩니다. 추적 정보의 일부로 토큰 사용량과 각 LLM 호출과 관련된 해당 비용을 볼 수 있습니다.

대기 시간

지연 시간은 애플리케이션에서 각 함수 호출을 완료하는 데 걸리는 시간을 측정하여 결정됩니다. 애플리케이션 추적은 TruLens SDK 를 사용하여 계측된 각 함수의 지연 시간에 대한 세부적인 표시 여부를 제공합니다. 개별 함수 지연 시간을 합산하여 각 입력에 해당하는 전체 애플리케이션의 전체 지연 시간을 계산합니다. 또한 각 실행은 여러 애플리케이션 구성에서 쉽게 비교할 수 있도록 모든 입력에 대한 평균 지연 시간을 제공합니다.

실행

실행은 애플리케이션의 정확도와 성능을 측정하는 데 사용되는 평가 작업입니다. 최적의 애플리케이션 구성을 선택할 수 있도록 도와줍니다. 생성형 AI 애플리케이션을 구축하려면 다양한 LLMs, 프롬프트 및 추론 매개 변수를 실험해야 합니다. 정확도, 지연 시간, 사용량을 측정하여 프로덕션에 최적화된 조합을 찾습니다. 각 조합은 애플리케이션 버전에 해당합니다.

실행은 지정한 데이터 세트를 사용하여 애플리케이션 버전에 대한 배치 평가를 실행합니다. 서로 다른 버전에 대해 동일한 데이터세트로 여러 번 실행을 트리거할 수 있습니다. 버전 간의 집계 및 레코드 수준 차이를 비교하여 개선이 필요한 사항을 식별하고 배포할 최적의 버전을 선택할 수 있습니다.

실행을 생성하고 실행하는 데는 크게 네 가지 단계가 있습니다.

  1. 생성: 애플리케이션과 버전을 생성한 후 데이터 세트를 지정하여 해당 버전에 대한 새 실행을 추가합니다.

  2. 호출: 실행을 시작하면 데이터 세트에서 입력을 읽고, 각 입력에 대해 애플리케이션을 호출하고, 추적을 생성하고, 정보를 Snowflake 계정에 저장합니다.

  3. 계산: 호출 후 계산할 메트릭을 지정하여 계산을 트리거합니다. 여러 계산을 트리거하고 나중에 기존 실행에 대해 새 메트릭을 추가할 수 있습니다.

  4. 시각화: Snowflake 계정에 로그인하여 실행 결과를 Snowsight에서 시각화합니다. 실행은 Evaluations 의 관련 애플리케이션 내에 AI & ML 에 목록이 나열되어 있습니다.

각 실행에 레이블을 지정하여 동일한 데이터 세트으로 서로 다른 애플리케이션 버전 간의 비교 가능한 실행을 분류할 수 있습니다. 레이블을 사용하여 런을 관리하고 필터링할 수 있습니다.

런은 다음 상태 중 하나를 가질 수 있습니다.

실행 상태

상태

설명

CREATED

실행이 생성되었지만 시작되지 않았습니다.

INVOCATION_IN_PROGRESS

실행 호출은 출력과 추적을 생성하는 중입니다.

INVOCATION_COMPLETED

모든 출력과 추적이 생성된 상태에서 실행 호출이 완료되었습니다.

INVOCATION_PARTIALLY_COMPLETED

애플리케이션 호출 및 추적 생성에 실패하여 실행 호출이 부분적으로 완료되었습니다.

COMPUTATION_IN_PROGRESS

메트릭 계산이 진행 중입니다.

COMPLETED

메트릭 계산은 상세한 출력과 추적을 통해 완료됩니다.

PARTIALLY_COMPLETED

메트릭 계산 중 오류로 인해 실행이 부분적으로 완료되었습니다.

CANCELLED

실행이 취소되었습니다.

액세스 제어 및 저장소

필수 권한

AI Observability를 사용하려면 다음 권한이 필요합니다.

  • AI Observability를 사용하려면 역할에 CORTEX_USER 데이터베이스 역할이 있어야 합니다. CORTEX_USER 역할은 데이터베이스 함수에 필수입니다. 이 역할 부여 및 취소에 대한 자세한 내용은 필수 권한 섹션을 참조하십시오.

  • 애플리케이션을 등록하려면 역할에 스키마에 대한 CREATE EXTERNAL AGENT 권한이 있어야 합니다. 자세한 내용은 애플리케이션 섹션을 참조하십시오.

  • 실행을 생성하고 실행하려면 역할에 애플리케이션용으로 생성한 EXTERNAL AGENT 오브젝트에 대한 USAGE 권한 및 AI_OBSERVABILITY_EVENTS_LOOKUP 또는 AI_OBSERVABILITY_ADMIN 애플리케이션 역할이 있어야 합니다. 자세한 내용은 실행Observability 데이터 섹션을 참조하십시오.

다음 예제에서는 ACCOUNTADMIN 역할을 사용하여 some_user 사용자에게 다음과 같은 권한을 부여합니다.

  • CORTEX_USER 데이터베이스 역할

  • AI_OBSERVABILITY_EVENTS_LOOKUP 애플리케이션 역할

  • app_schema 스키마에 대한 CREATE EXTERNAL AGENT 권한.

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;
Copy

앞의 예제에서는 observability_user_role 역할을 사용하여 some_user 에 권한을 부여했습니다.

애플리케이션

평가용 애플리케이션을 생성하면 해당 애플리케이션을 나타내는 EXTERNAL AGENT 오브젝트가 Snowflake에 생성됩니다. 애플리케이션을 만들고 수정하는 데 필요한 역할에는 다음과 같은 액세스 제어 필수가 있어야 합니다.

애플리케이션을 생성하는 데 사용되는 역할에는 최소한 다음 권한이 있어야 합니다.

권한

오브젝트

참고

OWNERSHIP

External Agent

OWNERSHIP 은 오브젝트에 대한 특수 권한으로 오브젝트를 생성한 역할에 자동으로 부여되지만 GRANT OWNERSHIP 명령을 사용하여 소유하는 역할(또는 MANAGE GRANTS 권한을 보유한 역할)에 의해 다른 역할로 이전될 수도 있습니다.

CREATE EXTERNAL AGENT

스키마

스키마의 모든 오브젝트에 대해 작업을 수행하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한.

애플리케이션을 수정하고 삭제하려면 EXTERNAL AGENT 오브젝트에 대한 OWNERSHIP 권한이 필요합니다.

사용자의 역할에 애플리케이션에 대한 USAGE 또는 OWNERSHIP 권한이 있는 경우(EXTERNAL AGENT), 해당 애플리케이션은 Snowsight 내 AI & ML 아래의 Evaluations 에 표시됩니다.

실행

애플리케이션에 실행을 추가, 수정 또는 삭제하는 데 사용되는 역할은 Snowflake에서 애플리케이션을 나타내는 EXTERNAL AGENT 오브젝트에 대한 USAGE 권한이 있어야 합니다.

런을 삭제하면 해당 런과 관련된 메타데이터도 삭제됩니다. 실행의 일부로 생성된 레코드는 삭제되지 않고 계속 저장됩니다. 레코드 및 추적 데이터 저장소에 대한 자세한 내용은 Observability 데이터를 참조하십시오.

지정된 권한 세트로 사용자 지정 역할을 만드는 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오. 보안 오브젝트에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.

평가자로서의 LLMs

AI Observability는 Cortex LLMs 을 평가자로 사용하여 애플리케이션을 평가하기 위한 메트릭을 계산합니다. 이러한 메트릭을 성공적으로 계산하려면 Cortex LLMs 에 액세스할 수 있는 권한이 필요합니다. 사용자 역할에 Cortex LLMs 에 대한 액세스 권한을 부여하려면, 필수 권한을 참조하십시오. 사용자는 LLM 평가자로 구성된 모델에 대한 액세스 권한이 있어야 합니다. LLM 판단에 사용되는 기본 모델은 llama3.1-70b입니다. 기본 LLM 평가자 모델은 향후 변경될 수 있습니다.

Observability 데이터

AI 관찰 가능성 데이터는 생성된 AI 애플리케이션에 대한 입력, 출력, 평가 점수 및 관련 추적을 포함하는 레코드를 나타냅니다. 모든 레코드는 SNOWFLAKE.LOCAL 스키마에 있는 계정의 전용 이벤트 테이블 AI_OBSERVABILITY_EVENTS 에 저장됩니다.

이벤트 테이블에 수집된 AI Observability 데이터는 수정할 수 없습니다. AI_OBSERVABILITY_ADMIN 애플리케이션 역할이 있는 관리자는 SNOWFLAKE.LOCAL.AI_OBSERVABILITY_EVENTS 이벤트 테이블의 데이터를 삭제할 수 있는 독점 액세스 권한이 있습니다.

AI Observability 데이터는 Trulens Python SDK 또는 Snowsight를 사용하여 액세스할 수 있습니다. 애플리케이션 및 관련 실행에 대한 레코드를 보려면 다음 권한이 필요합니다.

  • 사용자 역할에는 애플리케이션 역할 SNOWFLAKE.AI_OBSERVABILITY_ADMIN 또는 SNOWFLAKE.AI_OBSERVABILITY_EVENTS_LOOKUP 이 있어야 합니다.

  • 사용자 역할은 애플리케이션을 나타내는 EXTERNAL AGENT 오브젝트에 대한 USAGE 권한이 있어야 합니다.

예를 들어, 외부 측정된 RAG 애플리케이션의 실행을 보려면 사용자 역할에 “my-db.my-schema.rag-application1”에 대한 USAGE 권한이 필요하며, 여기서 rag-application1은 Snowflake에서 외부 RAG 애플리케이션을 나타내는 EXTERNAL AGENT 오브젝트입니다.

실행 및 외부 에이전트와 관련된 메타데이터(예: 실행 이름, 설명, 데이터 세트 이름 등)는 메타데이터로 분류됩니다.