AI システムによって生成されたテキスト応答が、予想される応答 (通常は "グラウンド 真実" と呼ばれます) とどの程度一致するかを比較することが重要です。 生成された応答と地上の真実の間のセマンティック類似性に焦点を当てた SimilarityEvaluator
のような LLM ジャッジ メトリックを使用するか、 F1 Score、 BLEU、 GLEU、 ROUGE、 METEOR を含む自然言語処理 (NLP) の分野のメトリックを使用し、2 つの間のトークンまたは n グラムの重複に焦点を当てます。
AI 支援エバリュエーターのモデル構成
次のコード スニペットで参照するために、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"),
)
ヒント
推論機能とコスト効率のバランスを取るための o3-mini
を使用することをお勧めします。
相似
SimilarityEvaluator
は、生成されたテキストと、クエリに関するそのグラウンド トゥルースとの間のセマンティック類似性の度合いを測定します。 地上の真理を必要とする他のテキスト類似度メトリックと比較して、このメトリックは応答のセマンティクス (トークンまたは n グラムでの単純な重複ではなく) に焦点を当て、クエリのより広範なコンテキストも考慮します。
類似性の例
from azure.ai.evaluation import SimilarityEvaluator
similarity = SimilarityEvaluator(model_config=model_config, threshold=3)
similarity(
query="Is Marie Curie is 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."
)
類似性の出力
likert スケールの数値スコア (整数 1 から 5) とスコアが高いほど、類似性が高いことを意味します。 数値のしきい値 (既定値は 3) を指定すると、スコア >= しきい値の場合は "pass" を出力し、それ以外の場合は "fail" も出力します。 理由フィールドを使用すると、スコアが高いか低いかを理解するのに役立ちます。
{
"similarity": 4.0,
"gpt_similarity": 4.0,
"similarity_result": "pass",
"similarity_threshold": 3
}
F1 スコア
F1ScoreEvaluator
は、生成されたテキストと地上の真実の間の共有トークンによる類似性を測定し、精度と再現率の両方に重点を置きます。 F-1 スコアはモデルの生成とグラウンド トゥルースの間で共有されている単語の数の割合を計算します。 生成された応答の個々の単語に対して、グラウンド トゥルースの答えの中の単語に対する比率が計算されます。 生成と真実の間の共有単語の数は、F1 スコアの基礎です。 有効桁数は、世代内の単語の合計数に対する共有単語の数の比率です。 再現率は、地上の真理の単語の合計数に対する共有語の数の比率です。
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."
)
F1 スコアの出力
数値スコアは 0 から 1 の浮動小数点数であり、より高いスコアが優れています。 数値のしきい値 (既定値は 0.5) を指定すると、スコア >= しきい値の場合は "pass" を出力し、それ以外の場合は "fail" も出力します。
{
"f1_score": 0.631578947368421,
"f1_result": "pass",
"f1_threshold": 0.5
}
BLEU スコア
BleuScoreEvaluator
は、自然言語処理 (NLP) と機械翻訳で一般的に使用される BLEU (二か国語評価不足) スコアを計算します。 生成されたテキストが参照テキストとどの程度一致するかを測定します。
BLEU の例
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 の出力
数値スコアは 0 から 1 の浮動小数点数であり、より高いスコアが優れています。 数値のしきい値 (既定値は 0.5) を指定すると、スコア >= しきい値の場合は "pass" を出力し、それ以外の場合は "fail" も出力します。
{
"bleu_score": 0.1550967560878879,
"bleu_result": "fail",
"bleu_threshold": 0.3
}
GLEU スコア
GleuScoreEvaluator
は GLEU (Google-BLEU) スコアを計算します。 生成されたテキストとグラウンド トゥルースの間の共有 n グラムによる類似性を測定し、BLEU スコアと同様に、精度と再現率の両方に重点を置きます。 ただし、文単位の報酬目標を使用して BLEU スコアの欠点に対処します。
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."
)
GLEU スコアの出力
数値スコアは 0 から 1 の浮動小数点数であり、より高いスコアが優れています。 数値のしきい値 (既定値は 0.5) を指定すると、スコア >= しきい値の場合は "pass" を出力し、それ以外の場合は "fail" も出力します。
{
"gleu_score": 0.25925925925925924,
"gleu_result": "pass",
"gleu_threshold": 0.2
}
ROUGE スコア
RougeScoreEvaluator
は、自動的Recall-Oriented な要約と機械翻訳の評価に使用される一連のメトリックである、ROUGE (gisting 評価用のアンダーステュディ) スコアを計算します。 生成されたテキストと参照の要約の間の重複を測定します。 ROUGE は、生成されたテキストが参照テキストをどの程度カバーしているかを評価する、リコール指向の測定に重点を置いています。 ROUGE スコアは、精度、再現率、F1 スコアで構成されます。
ルージュ スコアの例
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."
)
ROUGE スコアの出力
数値スコアは 0 から 1 の浮動小数点数であり、より高いスコアが優れています。 数値のしきい値 (既定値は 0.5) を指定すると、スコア >= しきい値の場合は "pass" を出力し、それ以外の場合は "fail" も出力します。
{
"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 スコア
MeteorScoreEvaluator
は、生成されたテキストと地上の真実の間の共有 n グラムによる類似性を測定します。BLEU スコアと同様に、精度と再現率に焦点を当てています。 コンテンツ アラインメントで類義語、ステミング、言い換えを考慮することで、BLEU スコアなどの他のメトリックの制限に対処しています。
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."
)
流星スコアの出力
数値スコアは 0 から 1 の浮動小数点数であり、より高いスコアが優れています。 数値のしきい値 (既定値は 0.5) を指定すると、スコア >= しきい値の場合は "pass" を出力し、それ以外の場合は "fail" も出力します。
{
"meteor_score": 0.8621140763997908,
"meteor_result": "fail",
"meteor_threshold": 0.9
}