기본 제공 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
-
response
은mlflow.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
.
정확성은 에이전트의 실제 응답을 근거리 레이블과 비교하며 사실 오류를 감지하는 좋은 방법입니다.
필수 입력
입력 평가 집합에는 다음 열이 있어야 합니다.
request
-
model
매개 변수를mlflow.evaluate()
에 지정하지 않은 경우response
. - 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 심사위원
사용자 지정 판사를 만들어 사용 사례와 관련된 평가를 수행할 수도 있습니다.
자세한 내용은 다음을 참조하세요.