Retrieval-Augmented 세대 (RAG) 평가자 (클래식)

현재 보기:Foundry(클래식) 포털 버전 - 새 Foundry 포털의 버전으로 전환

Note

평가 및 Foundry 포털용 Microsoft Foundry SDK는 공개 미리 보기로 제공되지만 API는 일반적으로 모델 및 데이터 세트 평가에 사용할 수 있습니다(에이전트 평가는 공개 미리 보기로 유지됨). 이 문서에서 표시된 Azure AI 평가 SDK 및 평가자는 현재 모든 곳에서 공개 미리 보기로 제공됩니다.

RAG(Retrieval-Augmented 생성) 시스템은 사용자의 쿼리에 대한 응답으로 접지 문서와 일치하는 가장 관련성이 큰 답변을 생성하려고 합니다. 사용자의 쿼리는 접지 문서 모음에서 검색 검색을 트리거하여 AI 모델에 대한 접지 컨텍스트를 제공하여 응답을 생성합니다.

평가하는 것이 중요합니다:

이 평가자들은 세 가지 측면에 집중합니다:

  • 검색 결과의 관련성 결과는 사용자의 쿼리에 따라 다릅니다: 쿼리별 문서 관련성 라벨이 있다면 문서 검색(Document Retrieval )을, 더 정확한 측정을 위해서는 쿼리 관련성 판단(qrels)을 사용하세요. 검색된 맥락만 가지고 있지만 라벨이 없고 덜 세밀한 측정에 대한 허용 오차가 높다면 검색 을 사용하세요.
  • 생성된 응답의 일관성에 대해, 기반성 문서와 관련된 것: 오픈소스 대형 언어 모델 심판자(LLM-judge) 프롬프트에서 근거성 정의를 맞춤화하고 싶다면 Groundedness 를 사용하세요. 명확한 정의를 원한다면 Groundedness Pro(미리보기) 를 사용하세요.
  • 질문에 대한 최종 답변의 관련성: 근거가 없다면 Relevance 를 사용하세요. 근거가 있고 중요한 정보를 놓치고 싶지 않다면 응답 완전성을 사용하세요.

접지성응답 완전성에 대해 다음과 같이 생각해 보세요.

  • 접지성은 응답의 정밀도 측면에 중점을 둡니다. 접지 컨텍스트 외부의 콘텐츠는 포함되지 않습니다.
  • 응답 완성도는 응답의 회수 측면에 중점을 둡니다. 예상된 응답 또는 지상 진실에 비해 중요한 정보를 놓치지 않습니다.

AI 지원 평가자를 위한 모델 구성

참고로, 다음 스니펫에서 Groundedness Pro를 제외한 AI 지원 품질 평가자들은 LLM 심사위원을 위한 모델 구성을 사용합니다:

import os
from azure.ai.evaluation import AzureOpenAIModelConfiguration
from dotenv import load_dotenv
load_dotenv()

model_config = AzureOpenAIModelConfiguration(
    azure_endpoint=os.environ["AZURE_ENDPOINT"],
    api_key=os.environ.get("AZURE_API_KEY"),
    azure_deployment=os.environ.get("AZURE_DEPLOYMENT_NAME"),
    api_version=os.environ.get("AZURE_API_VERSION"),
)

평가자 모델 지원

평가자는 평가자에 따라 AzureOpenAI 또는 OpenAI 추론 모델 과 LLM 심사위원의 비추론 모델을 지원합니다:

Evaluators 판단 모델 추론(예: Azure OpenAI/OpenAI의 o 시리즈 모델) 비추론 모델(비추론 모델)을 판사로 사용하는 경우(예: gpt-4.1, gpt-4o) To enable
IntentResolution, TaskAdherence, ToolCallAccuracy, ResponseCompleteness, Coherence, Fluency, SimilarityGroundedness, RetrievalRelevance Supported Supported 계산기 초기화에 추가 매개 변수 is_reasoning_model=True 설정
Other evaluators Not Supported Supported --

정교한 추론이 필요한 복잡한 평가의 경우, 추론 성능과 비용 효율성의 균형을 맞춘 강력한 추론 모델을 4.1-mini 사용하세요.

Retrieval

RAG에서 상류 역할 때문에 검색 품질이 매우 중요합니다. 검색 품질이 낮고 응답이 말뭉치 특화의 지식을 요구한다면, 언어 모델은 만족스러운 답변을 제공할 가능성이 낮아집니다. RetrievalEvaluator 근거 진실을 필요로 하지 않고도 언어 모델을 이용한 검색 결과의 텍스트 품질을 측정하는 것으로, 쿼리 관련성 판단(query relevance judgment)이라고도 합니다.

이 접근법은 , , xdcg, fidelity, , 그리고 실제 진실이 필요한 고전적 정보 검색 지표를 측정ndcg하는 데 비해 DocumentRetrievalEvaluator가치를 더합니다. 이 지표는 쿼리 처리에 얼마나 관련 있는 문맥 청크가 얼마나 중요한지, 그리고 가장 관련 있는 문맥 청크가 목록 상단에 어떻게 나타나는지에 초점을 맞춥니다. 컨텍스트 청크는 문자열로 인코딩됩니다.

Retrieval example

from azure.ai.evaluation import RetrievalEvaluator

retrieval = RetrievalEvaluator(model_config=model_config, threshold=3)
retrieval(
    query="Where was Marie Curie born?", 
    context="Background: 1. Marie Curie was born in Warsaw. 2. Marie Curie was born on November 7, 1867. 3. Marie Curie is a French scientist. ",
)

Retrieval output

수치 점수는 리커트 척도(정수 1부터 5까지)를 기준으로 하며, 점수가 높을수록 더 좋은 성과를 나타냅니다. 수치 임계값(기본값이 설정됨)이 주어지면, 점수 >= 임계값일 경우 평가자는 통과를 출력하고, 그렇지 않으면 실패합니다. 이유 필드는 점수가 높거나 낮은 이유를 설명합니다.

{
    "retrieval": 5.0,
    "gpt_retrieval": 5.0,
    "retrieval_reason": "The context contains relevant information that directly answers the query about Marie Curie's birthplace, with the most pertinent information placed at the top. Therefore, it fits the criteria for a high relevance score.",
    "retrieval_result": "pass",
    "retrieval_threshold": 3
}

Document retrieval

RAG에서 상류 역할 때문에 검색 품질이 매우 중요합니다. 검색 품질이 낮으면 특히 말뭉치 특정 지식을 요구하는 경우 언어 모델이 만족스러운 답변을 제공할 가능성을 낮춥니다. 검색 품질을 평가하고 RAG의 검색 매개변수를 최적화하는 데 사용 DocumentRetrievalEvaluator 하세요.

  • 문서 검색 평가기는 RAG가 문서 저장소에서 올바른 문서를 얼마나 잘 검색하는지 측정합니다. RAG 시나리오에 유용한 복합 평가기로, RAG 파이프라인을 디버깅하기 위한 유용한 검색 품질 메트릭 목록을 계산합니다.

    Metric Category Description
    Fidelity Search Fidelity 상위 n개 검색된 청크가 지정된 쿼리의 콘텐츠를 얼마나 잘 반영하는지: 데이터 세트의 알려진 양호한 문서의 총 개수에서 반환된 양호한 문서 수
    NDCG Search NDCG 모든 관련 항목이 목록의 맨 위에 있는 이상적인 순서에 대한 순위는 얼마나 좋은가요?
    XDCG Search XDCG 다른 인덱스 문서의 점수 매기기와 관계없이 상위 K 문서에 결과가 얼마나 좋은지
    최대 관련성 N 최대 관련성 검색 상위 k 청크의 최대 관련성
    Holes 검색 레이블 온전성 쿼리 관련성 판단이 누락된 문서 수 또는 근거 진실
  • 매개 변수 스윕이라는 시나리오에서 RAG를 최적화하려면 이러한 메트릭을 사용하여 최적의 RAG 결과에 대한 검색 매개 변수를 보정할 수 있습니다. 벡터, 의미론, top_k, 청크 크기 등 다양한 검색 매개변수에 대한 검색 결과를 생성합니다. 그 다음 가장 높은 검색 품질을 제공하는 매개변수를 식별 DocumentRetrievalEvaluator 합니다.

문서 검색 예제

from azure.ai.evaluation import DocumentRetrievalEvaluator

# These query_relevance_labels are given by your human- or LLM-judges.
retrieval_ground_truth = [
    {
        "document_id": "1",
        "query_relevance_label": 4
    },
    {
        "document_id": "2",
        "query_relevance_label": 2
    },
    {
        "document_id": "3",
        "query_relevance_label": 3
    },
    {
        "document_id": "4",
        "query_relevance_label": 1
    },
    {
        "document_id": "5",
        "query_relevance_label": 0
    },
]
# The min and max of the label scores are inputs to document retrieval evaluator
ground_truth_label_min = 0
ground_truth_label_max = 4

# These relevance scores come from your search retrieval system
retrieved_documents = [
    {
        "document_id": "2",
        "relevance_score": 45.1
    },
    {
        "document_id": "6",
        "relevance_score": 35.8
    },
    {
        "document_id": "3",
        "relevance_score": 29.2
    },
    {
        "document_id": "5",
        "relevance_score": 25.4
    },
    {
        "document_id": "7",
        "relevance_score": 18.8
    },
]

document_retrieval_evaluator = DocumentRetrievalEvaluator(
    # Specify the ground truth label range
    ground_truth_label_min=ground_truth_label_min, 
    ground_truth_label_max=ground_truth_label_max,
    # Optionally override the binarization threshold for pass/fail output
    ndcg_threshold = 0.5,
    xdcg_threshold = 50.0,
    fidelity_threshold = 0.5,
    top1_relevance_threshold = 50.0,
    top3_max_relevance_threshold = 50.0,
    total_retrieved_documents_threshold = 50,
    total_ground_truth_documents_threshold = 50
)
document_retrieval_evaluator(retrieval_ground_truth=retrieval_ground_truth, retrieved_documents=retrieved_documents)   

문서 검색 출력

모든 수치 점수는 를 가지며high_is_better=True, 와 holes_ratio를 제외하고holes, 이 점수는 를 가집니다high_is_better=False. 수치 임계값(기본값 3)이 있을 때, 점수가 임계값보다 크면 평가자가 합격 으로 평가하고, 그렇지 않으면 실패 합니다.

{
    "ndcg@3": 0.6461858173,
    "xdcg@3": 37.7551020408,
    "fidelity": 0.0188438199,
    "top1_relevance": 2,
    "top3_max_relevance": 2,
    "holes": 30,
    "holes_ratio": 0.6000000000000001,
    "holes_higher_is_better": False,
    "holes_ratio_higher_is_better": False,
    "total_retrieved_documents": 50,
    "total_groundtruth_documents": 1565,
    "ndcg@3_result": "pass",
    "xdcg@3_result": "pass",
    "fidelity_result": "fail",
    "top1_relevance_result": "fail",
    "top3_max_relevance_result": "fail",
    # Omitting more fields ...
}

Groundedness

반응이 맥락에 얼마나 근거가 있는지 평가하는 것이 중요합니다. AI 모델은 콘텐츠를 조작하거나 관련 없는 답변을 생성할 수 있습니다. GroundednessEvaluator 생성된 응답이 주어진 맥락, 즉 근거 원천과 얼마나 잘 맞는지, 그리고 그 외부의 내용을 조작하지 않는지 측정하는 것입니다.

이 지표는 접지 소스와의 반응 정렬의 정밀도 를 포착합니다. 점수가 낮으면 응답이 쿼리와 무관하거나 맥락 밖에서 부정확한 내용을 조작한다는 의미입니다. 이 지표는 반응과 예상 반응의 일치 기억 측면을 포착하는 ResponseCompletenessEvaluator것과 보완적입니다.

Groundedness example

from azure.ai.evaluation import GroundednessEvaluator

groundedness = GroundednessEvaluator(model_config=model_config, threshold=3)
groundedness(
    query="Is Marie Curie is born in Paris?", 
    context="Background: 1. Marie Curie is born on November 7, 1867. 2. Marie Curie is born in Warsaw.",
    response="No, Marie Curie is born in Warsaw."
)

Groundedness output

수치 점수는 리커트 척도(정수 1부터 5까지)로 나뉩니다. 점수가 높을수록 더 좋습니다. 수치 임계값(기본값은 3)이 주어지면, 점수가 임계값 이상일 경우 평가자는 통과 로 간주되며, 그렇지 않으면 실패 합니다. 이유란을 사용해 점수가 높거나 낮은 이유를 이해하세요.

{
    "groundedness": 5.0,  
    "gpt_groundedness": 5.0,
    "groundedness_reason": "The RESPONSE accurately answers the QUERY by confirming that Marie Curie was born in Warsaw, which is supported by the CONTEXT. It does not include any irrelevant or incorrect information, making it a complete and relevant answer. Thus, it deserves a high score for groundedness.",
    "groundedness_result": "pass", 
    "groundedness_threshold": 3
}

Groundedness Pro

AI 시스템은 관련 없는 응답을 생성하거나 주어진 맥락 밖의 콘텐츠를 조작할 수 있습니다. Azure AI 콘텐츠 보안 기반의 GroundednessProEvaluator는 검색 증강 생성 질문과 답변 시나리오에서 생성된 텍스트 응답이 정확하고 주어진 맥락과 일치하는지 확인합니다. 이는 질문에 답하기 위해 맥락에 충실히 대응하도록 하여 추측이나 조작을 방지합니다. 이진 레이블을 출력합니다.

Groundedness Pro 예시

from azure.ai.evaluation import GroundednessProEvaluator
from azure.identity import DefaultAzureCredential
import os
from dotenv import load_dotenv
load_dotenv()

# Using Microsoft Foundry Hub
azure_ai_project = {
    "subscription_id": os.environ.get("AZURE_SUBSCRIPTION_ID"),
    "resource_group_name": os.environ.get("AZURE_RESOURCE_GROUP"),
    "project_name": os.environ.get("AZURE_PROJECT_NAME"),
}

groundedness_pro = GroundednessProEvaluator(azure_ai_project=azure_ai_project), 
groundedness_pro(
    query="Is Marie Curie is born in Paris?", 
    context="Background: 1. Marie Curie is born on November 7, 1867. 2. Marie Curie is born in Warsaw.",
    response="No, Marie Curie is born in Warsaw."
)

그라운디스 프로 출력

라벨 필드는 응답 내 모든 내용이 완전히 맥락에 기반해 있을 때 반환 True 되며, False 그렇지 않으면 반환됩니다. 점수 뒤에 숨겨진 판단에 대해 더 알아보기 위해 이유 필드를 활용하세요.

{
    "groundedness_pro_reason": "All Contents are grounded",
    "groundedness_pro_label": True
}

Relevance

AI 모델은 사용자 쿼리에 대해 관련 없는 답변을 생성할 수 있습니다. 최종 반응을 평가하는 것이 중요합니다. 이 문제를 해결하기 위해 응답이 쿼리에 얼마나 효과적으로 대응하는지 측정하는 를 사용 RelevanceEvaluator하세요. 쿼리를 기반으로 답변의 정확성, 완전성, 직접적 관련성을 평가합니다. 점수가 높을수록 관련성이 높아집니다.

Relevance example

from azure.ai.evaluation import RelevanceEvaluator

relevance = RelevanceEvaluator(model_config=model_config, threshold=3)
relevance(
    query="Is Marie Curie is born in Paris?", 
    response="No, Marie Curie is born in Warsaw."
)

Relevance output

수치 점수는 리커트 척도(정수 1부터 5까지)로 나뉩니다. 점수가 높을수록 더 좋습니다. 수치 임계값(기본값은 3)이 주어지면, 점수가 임계값 이상일 경우 평가자는 통과 로 간주되며, 그렇지 않으면 실패 합니다. 이유 필드는 점수가 높거나 낮다는 이유를 이해하는 데 도움을 줍니다.

{
    "relevance": 4.0,
    "gpt_relevance": 4.0, 
    "relevance_reason": "The RESPONSE accurately answers the QUERY by stating that Marie Curie was born in Warsaw, which is correct and directly relevant to the question asked.",
    "relevance_result": "pass", 
    "relevance_threshold": 3
}

Response completeness

AI 시스템은 주어진 맥락 밖에서 콘텐츠를 조작하거나 무관한 반응을 생성할 수 있습니다. 진실에 기반한 응답이 주어지면, ResponseCompletenessEvaluator 는 반응 정렬의 회상 측면을 포착합니다. 이 평가자는 접지 소스와의 반응 정렬의 정밀도를 포착하는 보완 알고리즘을 보완합니다GroundednessEvaluator.

응답 완전성 예시

from azure.ai.evaluation import ResponseCompletenessEvaluator

response_completeness = ResponseCompletenessEvaluator(model_config=model_config, threshold=3)
response_completeness(
    response="Based on the retrieved documents, the shareholder meeting discussed the operational efficiency of the company and financing options.",
    ground_truth="The shareholder meeting discussed the compensation package of the company's CEO."
)

응답 완전성 출력

리커트 척도(정수 1에서 5까지)의 수치 점수입니다. 점수가 높을수록 더 좋습니다. 수치 임계값(기본값은 3)이 주어지면, 점수 >= 임계값이면 평가자는 통과를 출력하고, 그렇지 않으면 실패합니다. 이유란을 사용해 점수가 높거나 낮은 이유를 이해하세요.

{
    "response_completeness": 1,
    "response_completeness_result": "fail",
    "response_completeness_threshold": 3,
    "response_completeness_reason": "The response does not contain any relevant information from the ground truth, which specifically discusses the CEO's compensation package. Therefore, it is considered fully incomplete."
}