評価データセットを準備する

Gen AI Evaluation Service の場合、評価データセットは通常、評価するモデル レスポンスとレスポンスの生成に使用される入力データで構成されます。また、グラウンド トゥルース レスポンスが含まれることもあります。

評価データセットのスキーマ

一般的なモデルベースの指標のユースケースでは、データセットに次の情報が含まれている必要があります。

入力タイプ 入力フィールドの内容
プロンプト 生成 AI モデルまたはアプリケーションのユーザー入力。場合によっては省略可能。
レスポンス 評価対象の LLM 推論レスポンス。
baseline_model_response(ペアワイズの指標で必須) ペアワイズ評価で LLM レスポンスと比較するために使用されるベースラインの LLM 推論レスポンス

Vertex AI SDK for PythonGen AI Evaluation モジュールを使用すると、Gen AI Evaluation Service では、指定したモデルを使用して responsebaseline_model_response を自動的に生成できます。

その他の評価のユースケースでは、追加で情報を提供する必要がある場合もあります。

マルチターンまたはチャット

入力タイプ 入力フィールドの内容
履歴 現在のターンの前にユーザーとモデルとの間で交わされた会話の履歴。
プロンプト 現在のターンの生成 AI モデルまたはアプリケーションのユーザー入力。
レスポンス 履歴および現在のターンのプロンプトに基づく評価対象の LLM 推論レスポンス。
baseline_model_response(ペアワイズの指標で必須) 履歴および現在のターンのプロンプトに基づくペア評価で、LLM レスポンスと比較するために使用されるベースラインの LLM 推論レスポンス。

計算ベースの指標

データセットには、大規模言語モデルからのレスポンスと、比較用のリファレンスの両方が必要です。

入力タイプ 入力フィールドの内容
レスポンス 評価対象の LLM 推論レスポンス。
リファレンス LLM のレスポンスを比較するグラウンド トゥルース。

ユースケースに応じて、入力ユーザー プロンプトを instructioncontext などの細かい部分に分割し、プロンプト テンプレートを指定して推論用に組み立てることもできます。必要に応じて、リファレンス情報またはグラウンド トゥルース情報を指定することもできます。

入力タイプ 入力フィールドの内容
指示 入力ユーザー プロンプトの一部。これは、LLM に送信される推論の指示を指します。たとえば、「次のテキストを要約してください」は指示です。
コンテキスト 現在のターンの生成 AI モデルまたはアプリケーションのユーザー入力。
リファレンス LLM のレスポンスを比較するグラウンド トゥルース。

評価データセットに必要な入力は、指標と一致している必要があります。指標のカスタマイズの詳細については、評価指標を定義する評価を実行するをご覧ください。モデルベースの指標にリファレンス データを含める方法の詳細については、入力データに合わせて指標プロンプト テンプレートを調整するをご覧ください。

評価データセットをインポートする

データセットは次の形式でインポートできます。

  • Cloud Storage に保存されている JSONL または CSV ファイル

  • BigQuery テーブル

  • Pandas DataFrame

評価データセットの例

このセクションでは、Pandas Dataframe 形式を使用したデータセットの例を示します。ここでは例としていくつかのデータレコードのみを示していますが、評価データセットには通常 100 以上のデータポイントが含まれています。データセットを準備する際のベスト プラクティスについては、ベスト プラクティスのセクションをご覧ください。

ポイントワイズのモデルベースの指標

次は、ポイントワイズのモデルベース指標のサンプル データセットを示すための要約ケースです。

prompts = [
    # Example 1
    (
        "Summarize the text in one sentence: As part of a comprehensive"
        " initiative to tackle urban congestion and foster sustainable urban"
        " living, a major city has revealed ambitious plans for an extensive"
        " overhaul of its public transportation system. The project aims not"
        " only to improve the efficiency and reliability of public transit but"
        " also to reduce the city's carbon footprint and promote eco-friendly"
        " commuting options. City officials anticipate that this strategic"
        " investment will enhance accessibility for residents and visitors"
        " alike, ushering in a new era of efficient, environmentally conscious"
        " urban transportation."
    ),
    # Example 2
    (
        "Summarize the text such that a five-year-old can understand: A team of"
        " archaeologists has unearthed ancient artifacts shedding light on a"
        " previously unknown civilization. The findings challenge existing"
        " historical narratives and provide valuable insights into human"
        " history."
    ),
]

responses = [
    # Example 1
    (
        "A major city is revamping its public transportation system to fight"
        " congestion, reduce emissions, and make getting around greener and"
        " easier."
    ),
    # Example 2
    (
        "Some people who dig for old things found some very special tools and"
        " objects that tell us about people who lived a long, long time ago!"
        " What they found is like a new puzzle piece that helps us understand"
        " how people used to live."
    ),
]

eval_dataset = pd.DataFrame({
    "prompt": prompts,
    "response": responses,
})

ペアワイズのモデルベースの指標

次の例は、ペアワイズのモデルベース指標のサンプル データセットを示すための、オープンブック質問応答のケースを示しています。

prompts = [
    # Example 1
    (
        "Based on the context provided, what is the hardest material? Context:"
        " Some might think that steel is the hardest material, or even"
        " titanium. However, diamond is actually the hardest material."
    ),
    # Example 2
    (
        "Based on the context provided, who directed The Godfather? Context:"
        " Mario Puzo and Francis Ford Coppola co-wrote the screenplay for The"
        " Godfather, and the latter directed it as well."
    ),
]

responses = [
    # Example 1
    "Diamond is the hardest material. It is harder than steel or titanium.",
    # Example 2
    "Francis Ford Coppola directed The Godfather.",
]

baseline_model_responses = [
    # Example 1
    "Steel is the hardest material.",
    # Example 2
    "John Smith.",
]

eval_dataset = pd.DataFrame(
  {
    "prompt":  prompts,
    "response":  responses,
    "baseline_model_response": baseline_model_responses,
  }
)

計算ベースの指標

計算ベースの指標では、多くの場合 reference が必要です。

eval_dataset = pd.DataFrame({
  "response": ["The Roman Senate was filled with exuberance due to Pompey's defeat in Asia."],
  "reference": ["The Roman Senate was filled with exuberance due to successes against Catiline."],
})

ツール使用(関数呼び出し)の指標

次の例は、計算ベースのツール使用の指標の入力データを示しています。

json_responses = ["""{
    "content": "",
    "tool_calls":[{
      "name":"get_movie_info",
      "arguments": {"movie":"Mission Impossible", "time": "today 7:30PM"}
    }]
  }"""]

json_references = ["""{
    "content": "",
    "tool_calls":[{
      "name":"book_tickets",
      "arguments":{"movie":"Mission Impossible", "time": "today 7:30PM"}
      }]
  }"""]

eval_dataset = pd.DataFrame({
    "response": json_responses,
    "reference": json_references,
})

ベスト プラクティス

評価データセットを定義する際は、次のベスト プラクティスに従ってください。

  • 本番環境で処理するモデルの入力タイプを表す例を提供します。
  • データセットには少なくとも 1 つの評価例が含まれている必要があります。高品質の集計指標と統計的に有意な結果を確保するために、約 100 個の例をおすすめします。このサイズにより、集計された評価結果の信頼度を高め、外れ値の影響を最小限に抑えることができます。また、さまざまなシナリオでのモデルの真の能力をパフォーマンス指標に反映させることができます。集約指標の品質改善率は、400 を超える例を指定すると減少する傾向があります。

次のステップ