다음을 통해 공유


기본 제공 AI 심사위원

Important

이 기능은 공개 미리 보기 상태입니다.

이 문서에서는 필수 입력 및 출력 메트릭을 포함하여 Mosaic AI 에이전트 평가에 기본 제공되는 각 AI 심사위원의 세부 정보를 다룹니다.

참고 항목:

AI 심사위원 개요

메모

모든 심사위원이 지상 진실 라벨을 필요로 하는 것은 아닙니다. 레이블이 필요하지 않은 심사위원은 에이전트를 평가하기 위한 요청 집합만 있는 경우에 유용합니다.

판사의 이름 판사가 평가하는 품질 측면 필수 입력 지상 진리가 필요합니다.
global_guideline_adherence 생성된 응답이 전역 지침을 준수하나요? request, response, global_guidelines(evaluator_config) 아니요, 하지만 global_guidelines 필요합니다.
guideline_adherence 생성된 응답이 제공된 질문별 지침을 준수하나요? request, response, guidelines
correctness 생성된 응답이 정확합니까(지상 진리에 비해)? response, expected_facts[] 또는 expected_response
relevance_to_query 응답 주소가 사용자의 요청과 관련이 있나요? response, request 아니요
context_sufficiency 검색기가 예상 응답을 생성하기에 충분한 정보가 있는 문서를 찾았나요? retrieved_context, expected_response
safety 응답에 유해하거나 독성이 있는 콘텐츠가 있습니까? response 아니요
chunk_relevance 검색 엔진이 사용자의 요청을 해결하는 데 유용한 데이터를 찾았나요?

참고: 이 평가는 검색된 각 청크에 별도로 적용되어, 각 청크에 대한 점수와 & 근거를 생성합니다. 이러한 점수는 관련된 청크의 % 나타내는 각 행에 대한 chunk_relevance/precision 점수로 집계됩니다.
retrieved_context, request 아니요
groundedness 생성된 응답이 검색된 컨텍스트에 기반하고 있나요(환각이 아님)? response, trace[retrieved_context] 아니요
document_recall 리트리버가 찾은 알려진 관련 문서는 몇 개입니까? retrieved_context, expected_retrieved_context[].doc_uri

메모

멀티 턴 대화의 경우 AI 심사위원은 대화의 마지막 항목만 평가합니다.

AI 판사의 출력

평가에 사용되는 각 판사는 다음 열을 출력합니다.

데이터 필드 Type 설명
response/llm_judged/{judge_name}/rating string yes 판사가 통과하면, no 판사가 실패하면.
response/llm_judged/{judge_name}/rationale string yes 또는 no에 대한 LLM의 서면 추론.
response/llm_judged/{judge_name}/error_message string 이 평가를 계산하는 동안 오류가 발생한 경우 오류에 대한 세부 정보가 여기에 있습니다. 오류가 없으면 NULL입니다.

또한 각 판사는 전체 실행에 대한 집계 메트릭을 생성합니다.

메트릭 이름 Type 설명
response/llm_judged/{judge_name}/rating/average float, [0, 1] 모든 평가 중 yes으로 판단된 평가의 비율입니다.

지침 준수

정의: 응답이 제공된 지침을 준수하나요?

실제 데이터필요: global_guidelines을 사용할 때는 필요 없습니다. 예, 행별 guidelines을 사용할 때.

지침 준수는 에이전트의 응답이 지침에 제공된 특정 제약 조건 또는 지침을 따르는지 여부를 평가합니다.

지침은 다음 방법 중 하나를 통해 정의할 수 있습니다.

  • 행별: 특정 요청의 응답은 해당 평가 행에 정의된 지침을 따라야 합니다.
  • 전역적으로: 모든 요청에 대한 모든 응답은 전역 지침을 준수해야 합니다.

필수 입력

입력 평가 집합에는 다음 열이 있어야 합니다.

  • request
  • responsemlflow.evaluate()model 매개 변수를 지정하지 않은 경우입니다.
  • 구성에서 각 행에 대해 정의된 guidelines 또는 global_guidelines.

예제

평가 세트에서 행별 지침 준수를 사용하십시오.

import mlflow

eval_set = [{
  "request": "What is the capital of France?",
  "response": "The capital of France is Paris.",
  "guidelines": ["The response must be in English", "The response must be concise"]
}]

mlflow.evaluate(
  data=eval_set,
  model_type="databricks-agent",
  evaluator_config={
      "databricks-agent": {
          "metrics": ["guideline_adherence"]
      }
  }
)

평가 집합에서 글로벌 지침 준수를 따르십시오.

import mlflow

eval_set = [{
  "request": "What is the capital of France?",
  "response": "The capital of France is Paris.",
}]

mlflow.evaluate(
  data=eval_set,
  model_type="databricks-agent",
  evaluator_config={
      "databricks-agent": {
          "metrics": ["guideline_adherence"],
          "global_guidelines": ["The response must be in English", "The response must be concise"]
      }
  }
)

호출 가능한 판사 SDK지침을 준수하여 사용하기:

from databricks.agents.evals import judges

assessment = judges.guideline_adherence(
  request="What is the capital of France?",
  response="The capital of France is Paris.",
  guidelines=["The response must be in English", "The response must be concise"]
)
print(assessment)

응답이 지침을 준수하지 않는 경우 어떻게 해야 할까요?

응답이 지침을 위반하는 경우:

  • 위반된 지침을 식별하고 에이전트가 이를 준수하지 못한 이유를 분석합니다.
  • 프롬프트를 조정하여 특정 지침 준수를 강조하거나 원하는 동작에 맞는 추가 예제를 사용하여 모델을 다시 학습시킵니다.
  • 전역 지침의 경우 평가기 구성에 올바르게 지정되어 있는지 확인합니다.

정확성

정의: 에이전트가 실제로 정확한 답변으로 응답했나요?

근거필요: 예, expected_facts[] 또는 expected_response.

정확성은 에이전트의 실제 응답을 근거리 레이블과 비교하며 사실 오류를 감지하는 좋은 방법입니다.

필수 입력

입력 평가 집합에는 다음 열이 있어야 합니다.

Important

Databricks는 expected_response대신 expected_facts[] 사용하는 것이 좋습니다. expected_facts[] 올바른 응답에 필요한 최소한의 사실 집합을 나타내며 주제 전문가가 큐레이팅하는 것이 더 쉽습니다.

사용해야 하는 경우 올바른 응답에 필요한 최소한의 팩트 집합만 포함해야 합니다. 다른 원본에서 응답을 복사하는 경우 응답을 편집하여 응답이 올바른 것으로 간주될 필요하지 않은 텍스트를 제거합니다.

필요한 정보만 포함하고 답변에 꼭 필요하지 않은 정보를 제외하면 에이전트 평가에서 출력 품질에 대한 보다 강력한 신호를 제공할 수 있습니다.

예제

평가 집합의 정확성을 사용합니다.

import mlflow

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.",
  "expected_facts": [
    "reduceByKey aggregates data before shuffling",
    "groupByKey shuffles all data",
  ]
}]

mlflow.evaluate(
  data=eval_set,
  model_type="databricks-agent",
  evaluator_config={
      "databricks-agent": {
          "metrics": ["correctness"]
      }
  }
)

호출 가능한 판사 SDK의 정확성을 보장하기 위해 을(를) 사용하세요.

from databricks.agents.evals import judges

assessment = judges.correctness(
  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.",
  expected_facts=[
    "reduceByKey aggregates data before shuffling",
    "groupByKey shuffles all data",
  ]
)
print(assessment)

응답이 올바르지 않으면 어떻게 해야 할까요?

에이전트가 정확하지 않은 답변으로 응답하는 경우 다음을 수행해야 합니다.

  • 에이전트에서 검색한 컨텍스트가 관련이 없거나 부정확한지를 파악합니다. RAG 애플리케이션의 경우 컨텍스트 충분성 판단을 사용하여 컨텍스트가 expected_facts 생성하기에 충분한지 또는 expected_response생성하기에 충분한지 확인할 수 있습니다.
  • 컨텍스트가 충분한 경우 관련 정보를 포함하도록 프롬프트를 조정합니다.

쿼리에 대한 관련성

정의: 응답이 입력 요청과 관련이 있나요?

근거필요: 아니요.

관련성을 통해 에이전트의 응답이 관련 없는 항목으로 벗어나지 않고 사용자의 입력을 직접 해결할 수 있습니다.

필수 입력

입력 평가 집합에는 다음 열이 있어야 합니다.

  • request
  • response 당신이 mlflow.evaluate()model 매개 변수를 지정하지 않은 경우.

예제

평가 집합의 관련성 사용:

import mlflow

eval_set = [{
  "request": "What is the capital of France?",
  "response": "The capital of France is Paris."
}]

mlflow.evaluate(
  data=eval_set,
  model_type="databricks-agent",
  evaluator_config={
      "databricks-agent": {
          "metrics": ["relevance_to_query"]
      }
  }
)

호출 가능한 판사 SDK관련성 사용:

from databricks.agents.evals import judges

assessment = judges.relevance_to_query(
  request="What is the capital of France?",
  response="The capital of France is Paris."
)
print(assessment)

응답과 관련이 없는 경우 어떻게 해야 할까요?

에이전트가 관련 없는 응답을 제공하는 경우 다음 단계를 고려합니다.

  • 요청에 대한 모델의 이해를 평가하고 그에 따라 검색기, 학습 데이터 또는 프롬프트 지침을 조정합니다.

맥락의 충분성

정의: 검색된 문서가 예상 응답을 생성하기에 충분합니까?

실제 데이터필요: 예, expected_facts 또는 expected_response.

컨텍스트 충분성은 검색된 문서가 예상 응답을 생성하는 데 필요한 모든 정보를 제공하는지 여부를 평가합니다.

필수 입력

입력 평가 집합에는 다음 열이 있어야 합니다.

  • request
  • mlflow.evaluate() model 매개 변수를 지정하지 않은 경우 response.
  • model 매개 변수를 mlflow.evaluate()에 지정하지 않은 경우 retrieved_context[].content.

예제

평가 집합의 컨텍스트 충분성을 사용합니다.

import mlflow

eval_set = [{
  "request": "What is the capital of France?",
  "response": "The capital of France is Paris.",
  "retrieved_context": [
    {"content": "Paris is the capital city of France."}
  ],
  "expected_facts": [
    "Paris"
  ]
}]

mlflow.evaluate(
  data=eval_set,
  model_type="databricks-agent",
  evaluator_config={
      "databricks-agent": {
          "metrics": ["context_sufficiency"]
      }
  }
)

호출 가능한 판사 SDK에서 컨텍스트 충분성을 활용합니다.

from databricks.agents.evals import judges

assessment = judges.context_sufficiency(
  request="What is the capital of France?",
  retrieved_context=[
    {"content": "Paris is the capital city of France."}
  ]
)
print(assessment)

컨텍스트가 부족한 경우 어떻게 해야 할까요?

컨텍스트가 부족한 경우:

  • 필요한 모든 문서가 포함되도록 검색 메커니즘을 향상시킵니다.
  • 누락된 정보를 명시적으로 참조하거나 관련 컨텍스트의 우선 순위를 지정하도록 모델 프롬프트를 수정합니다.

안전

정의: 응답에서 유해하거나 유독한 콘텐츠를 방지하나요?

실측값 필요: 아니요.

안전을 통해 에이전트의 응답에 유해하거나 공격적이거나 독성이 있는 콘텐츠가 포함되지 않습니다.

필수 입력

입력 평가 집합에는 다음 열이 있어야 합니다.

  • request
  • response model 매개 변수를 지정하지 않은 경우 mlflow.evaluate().

예제

평가 집합에서 안전성 사용

import mlflow

eval_set = [{
  "request": "What is the capital of France?",
  "response": "The capital of France is Paris."
}]

mlflow.evaluate(
  data=eval_set,
  model_type="databricks-agent",
  evaluator_config={
      "databricks-agent": {
          "metrics": ["safety"]
      }
  }
)

안전하게 호출 가능한 판사 SDK을 사용하십시오.

from databricks.agents.evals import judges

assessment = judges.safety(
  request="What is the capital of France?",
  response="The capital of France is Paris."
)
print(assessment)

응답이 안전하지 않은 경우 어떻게 해야 할까요?

응답에 유해한 콘텐츠가 포함된 경우:

  • 요청을 분석하여 실수로 안전하지 않은 응답으로 이어질 수 있는지 확인합니다. 필요한 경우 입력을 수정합니다.
  • 유해하거나 유독한 콘텐츠가 생성되는 것을 명시적으로 방지하도록 모델 또는 프롬프트를 구체화합니다.
  • 콘텐츠 필터와 같은 추가 안전 메커니즘을 사용하여 사용자에게 도달하기 전에 안전하지 않은 응답을 가로챌 수 있습니다.

안정성

정의: 응답이 실제로 검색된 컨텍스트와 일치합니까?

기준 진실필요: 아니요.

Groundedness는 에이전트의 응답이 검색된 컨텍스트에 제공된 정보와 일치하는지 여부를 평가합니다.

필수 입력

입력 평가 집합에는 다음 열이 있어야 합니다.

  • request
  • mlflow.evaluate() model 매개 변수를 지정하지 않은 경우 response.
  • mlflow.evaluate()호출에서 model 인수를 사용하지 않는 경우 retrieved_context[].content.

예제

평가 세트에서 도출된 기초 정보를 사용합니다.

import mlflow

eval_set = [{
  "request": "What is the capital of France?",
  "response": "The capital of France is Paris.",
  "retrieved_context": [
    {"content": "Paris is the capital city of France."}
  ]
}]

mlflow.evaluate(
  data=eval_set,
  model_type="databricks-agent",
  evaluator_config={
      "databricks-agent": {
          "metrics": ["groundedness"]
      }
  }
)

호출 가능한 판사 SDK에서 근거 기반을 사용하세요.

from databricks.agents.evals import judges

assessment = judges.groundedness(
  request="What is the capital of France?",
  response="The capital of France is Paris.",
  retrieved_context=[
    {"content": "Paris is the capital city of France."}
  ]
)
print(assessment)

응답에 근거가 없는 경우 어떻게 해야 할까요?

응답이 기초가 없는 경우:

  • 검색된 컨텍스트를 검토하여 예상 응답을 생성하는 데 필요한 정보가 포함되어 있는지 확인합니다.
  • 컨텍스트가 부족한 경우 검색 메커니즘 또는 데이터 세트를 개선하여 관련 문서를 포함합니다.
  • 응답을 생성할 때 검색된 컨텍스트를 사용하여 우선 순위를 지정하도록 모델에 지시하도록 프롬프트를 수정합니다.

청크 관련성

정의: 검색된 청크가 입력 요청과 관련이 있나요?

실제 데이터필요: 아니요.

청크 관련성은 각 청크가 입력 요청과 관련이 있는지 여부를 측정합니다.

필수 입력

입력 평가 집합에는 다음 열이 있어야 합니다.

  • request
  • retrieved_context[].content model 매개 변수를 지정하지 않은 경우 mlflow.evaluate().

mlflow.evaluate()호출에서 model 인수를 사용하지 않는 경우 retrieved_context[].content 또는 trace제공해야 합니다.

예제

평가 집합의 청크 관련성 정밀도를 사용합니다.

import mlflow

eval_set = [{
  "request": "What is the capital of France?",
  "retrieved_context": [
    {"content": "Paris is the capital of France."},
    {"content": "France is a country in Europe."}
  ]
}]

mlflow.evaluate(
  data=eval_set,
  model_type="databricks-agent",
  evaluator_config={
      "databricks-agent": {
          "metrics": ["chunk_relevance_precision"]
      }
  }
)

검색된 청크가 관련이 없는 경우 어떻게 해야 할까요?

관련이 없는 청크가 검색되는 경우:

  • 검색자의 구성을 평가하고 매개 변수를 조정하여 관련성의 우선 순위를 지정합니다.
  • 더 다양하거나 정확한 예제를 포함하도록 검색자의 학습 데이터를 구체화합니다.

문서 회수

정의: 리트리버가 찾은 알려진 관련 문서는 몇 개입니까?

실제 데이터 요구: 예, expected_retrieved_context[].doc_uri.

문서 회수는 지상 진리에 있는 관련 문서의 총 수에 비해 검색된 지상 진리 관련 문서의 비율을 측정합니다.

필수 입력

입력 평가 집합에는 다음 열이 있어야 합니다.

  • expected_retrieved_context[].doc_uri

또한 model로 호출할 때 mlflow.evaluate() 인수를 사용하지 않는 경우 retrieved_context[].doc_uri 또는 trace도 제공해야 합니다.

예제

평가 집합에서 문서 회수를 활용합니다.

import mlflow

eval_set = [{
  "request": "What is the capital of France?",
  "expected_retrieved_context": [
    {"doc_uri": "doc_123"},
    {"doc_uri": "doc_456"}
  ],
  "retrieved_context": [
    {"doc_uri": "doc_123"}
  ]
}]

mlflow.evaluate(
  data=eval_set,
  model_type="databricks-agent",
  evaluator_config={
      "databricks-agent": {
          "metrics": ["document_recall"]
      }
  }
)

이 메트릭에는 AI 판사를 사용하지 않으므로 호출 가능한 판사 SDK가 없습니다.

문서 회수가 부족하면 어떻게 해야 할까요?

회상률이 낮을 때:

  • 지상 진리 데이터가 관련 문서를 정확하게 반영하는지 확인합니다.
  • 검색기를 개선하거나 검색 매개 변수를 조정하여 회수를 증가시킵니다.

사용자 지정 AI 심사위원

사용자 지정 판사를 만들어 사용 사례와 관련된 평가를 수행할 수도 있습니다.

자세한 내용은 다음을 참조하세요.