Valutatori di similarità testuale (classici)

Visualizzazione attualmente:Versione del portale - Foundry (versione classica)Passare alla versione per il nuovo portale foundry

Note

Il Microsoft Foundry SDK per la valutazione e il portale foundry sono disponibili in anteprima pubblica, ma le API sono disponibili a livello generale per la valutazione del modello e del set di dati (la valutazione dell'agente rimane in anteprima pubblica). I Azure AI Evaluation SDK e gli analizzatori contrassegnati (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica ovunque.

È importante confrontare la risposta testuale generata dal sistema di intelligenza artificiale in base alla risposta prevista. La risposta prevista è detta verità.

Usare una metrica LLM-judge come Somiglianza con un focus sulla somiglianza semantica tra la risposta generata e la verità sul terreno. In alternativa, usare le metriche del campo dell'elaborazione del linguaggio naturale (NLP), tra cui punteggio F1, GLEU, ROUGE e METEOR con particolare attenzione alle sovrapposizioni di token o n-grammi tra i due.

Configurazione del modello per valutatori assistiti dall'IA

Per riferimento nei seguenti frammenti di codice, i valutatori assistiti dall'IA utilizzano una configurazione di modello per il giudice 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"),
)

Supporto per modelli valutatori

Supportiamo modelli di ragionamento AzureOpenAI o OpenAI e modelli non ragionanti per il giudice LLM a seconda dei valutatori:

Evaluators Ragionamento dei modelli come giudice (esempio: modelli di serie o da Azure OpenAI/OpenAI) Modelli di non ragionamento come Giudice (ad esempio: gpt-4.1, gpt-4o e così via) To enable
IntentResolution ToolCallAccuracy, TaskAdherence, , ResponseCompleteness, CoherenceFluency, Similarity, Groundedness, , RetrievalRelevance Supported Supported Impostare un parametro aggiuntivo is_reasoning_model=True nell'inizializzazione degli analizzatori
Other evaluators Not Supported Supported --

Per valutazioni complesse che richiedono un ragionamento raffinato, raccomandiamo un modello di ragionamento solido, come 4.1-mini quello che bilancia prestazioni del ragionamento ed efficienza dei costi.

Similarity

La somiglianza misura i gradi di somiglianza semantica tra il testo generato e la relativa verità di base rispetto a una query. Rispetto ad altre metriche di somiglianza del testo che richiedono verità sul terreno, questa metrica è incentrata sulla semantica di una risposta, invece di una semplice sovrapposizione nei token o n-grammi. Considera anche il contesto più ampio di una query.

Similarity example

from azure.ai.evaluation import SimilarityEvaluator

similarity = SimilarityEvaluator(model_config=model_config, threshold=3)
similarity(
    query="Is Marie Curie born in Paris?", 
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

Similarity output

L'output è un punteggio numerico su scala Likert, intero da 1 a 5. Un punteggio più alto significa un grado maggiore di somiglianza. Data una soglia numerica (predefinito a 3), questo esempio restituisce anche il passaggio se il punteggio >= soglia, o fallimento altrimenti. Usa il campo motivo per capire perché il punteggio è alto o basso.

{
    "similarity": 4.0,
    "gpt_similarity": 4.0,
    "similarity_result": "pass",
    "similarity_threshold": 3
}

F1 score

Il punteggio F1 misura la somiglianza in base ai token condivisi tra il testo generato e la verità del terreno. Si concentra sia sulla precisione che sul richiamo. Il punteggio F1 calcola il rapporto tra il numero di parole condivise tra la generazione del modello e la verità di base. Il rapporto viene calcolato sulle singole parole nella risposta generata rispetto a quelle parole nella risposta alla verità di base. Il numero di parole condivise tra la generazione e la verità è la base del punteggio F1.

  • La precisione è il rapporto tra il numero di parole condivise e il numero totale di parole nella generazione.
  • Il richiamo è il rapporto tra il numero di parole condivise e il numero totale di parole nella verità.

Esempio di punteggio F1

from azure.ai.evaluation import F1ScoreEvaluator

f1_score = F1ScoreEvaluator(threshold=0.5)
f1_score(
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

Output del punteggio F1

Il punteggio numerico è un bilancio di 0-1. Un punteggio più alto è meglio. Data una soglia numerica (predefinito a 0,5), risulta anche approvato se il punteggio >= soglia, oppure fallimento altrimenti.

{
    "f1_score": 0.631578947368421,
    "f1_result": "pass",
    "f1_threshold": 0.5
}

BLEU score

Il punteggio Bleu calcola il punteggio Bilingual Evaluation Understudy (BLEU) comunemente usato nell'elaborazione del linguaggio naturale e nella traduzione automatica. Misura il modo in cui il testo generato corrisponde al testo di riferimento.

BLEU example

from azure.ai.evaluation import BleuScoreEvaluator

bleu_score = BleuScoreEvaluator(threshold=0.3)
bleu_score(
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

BLEU output

Il punteggio numerico è un bilancio di 0-1. Un punteggio più alto è meglio. Data una soglia numerica (predefinito a 0,5), risulta anche approvato se il punteggio >= soglia, oppure fallimento altrimenti.

{
    "bleu_score": 0.1550967560878879,
    "bleu_result": "fail",
    "bleu_threshold": 0.3
}

GLEU score

Il punteggio Gleu calcola il punteggio Google-BLEU (GLEU). Misura la somiglianza con n-grammi condivisi tra il testo generato e la verità del terreno. Analogamente al punteggio BLEU, si concentra sia sulla precisione che sul richiamo. Affronta gli svantaggi del punteggio BLEU utilizzando un obiettivo di ricompensa per frase.

Esempio di punteggio GLEU

from azure.ai.evaluation import GleuScoreEvaluator

gleu_score = GleuScoreEvaluator(threshold=0.2)
gleu_score(
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

Output del punteggio GLEU

Il punteggio numerico è un bilancio di 0-1. Un punteggio più alto è meglio. Data una soglia numerica (predefinito a 0,5), risulta anche approvato se il punteggio >= soglia, oppure fallimento altrimenti.

{
    "gleu_score": 0.25925925925925924,
    "gleu_result": "pass",
    "gleu_threshold": 0.2
}

ROUGE score

Il punteggio Rouge calcola i punteggi Recall-Oriented Understudy for Gisting Evaluation (ROUGE), un insieme di metriche utilizzate per valutare la sintesi automatiche e la traduzione automatica. Misura la sovrapposizione tra testo generato e riassunti di riferimento. ROUGE si concentra su misure orientate al richiamo per valutare quanto bene il testo generato copra il testo di riferimento. Il punteggio ROUGE è composto da precisione, richiamo e punteggio F1.

Esempio di punteggio ROUGE

from azure.ai.evaluation import RougeScoreEvaluator, RougeType

rouge = RougeScoreEvaluator(rouge_type=RougeType.ROUGE_L, precision_threshold=0.6, recall_threshold=0.5, f1_score_threshold=0.55) 
rouge(
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

Output del punteggio ROUGE

Il punteggio numerico è un bilancio di 0-1. Un punteggio più alto è meglio. Data una soglia numerica (predefinito a 0,5), risulta anche approvato se il punteggio >= soglia, oppure fallimento altrimenti.

{
    "rouge_precision": 0.46153846153846156,
    "rouge_recall": 1.0,
    "rouge_f1_score": 0.631578947368421,
    "rouge_precision_result": "fail",
    "rouge_recall_result": "pass",
    "rouge_f1_score_result": "pass",
    "rouge_precision_threshold": 0.6,
    "rouge_recall_threshold": 0.5,
    "rouge_f1_score_threshold": 0.55
}

METEOR score

Il punteggio meteora misura la somiglianza con n-grammi condivisi tra il testo generato e la verità del terreno. Analogamente al punteggio BLEU, si concentra sulla precisione e sul richiamo. Risolve le limitazioni di altre metriche come il punteggio BLEU considerando sinonimi, stemming e parafrasamento per l'allineamento del contenuto.

Esempio di punteggio METEOR

from azure.ai.evaluation import MeteorScoreEvaluator

meteor_score = MeteorScoreEvaluator(threshold=0.9)
meteor_score(
    response="According to wikipedia, Marie Curie was not born in Paris but in Warsaw.",
    ground_truth="Marie Curie was born in Warsaw."
)

Output del punteggio METEOR

Il punteggio numerico è un bilancio di 0-1. Un punteggio più alto è meglio. Data una soglia numerica (predefinito a 0,5), risulta anche approvato se il punteggio >= soglia, oppure fallimento altrimenti.

{
    "meteor_score": 0.8621140763997908,
    "meteor_result": "fail",
    "meteor_threshold": 0.9
}