📖 Evaluation Set を作成する

プレビュー

この機能は プライベート プレビュー段階です。 お試しになるには、Databricks の担当者にお問い合わせください。

別のRAG Studioドキュメントをお探しですか?RAGドキュメントインデックスに移動

このチュートリアルでは、RAGアプリケーションの品質/コスト/レイテンシを評価する 📖 Evaluation Set を作成するプロセスについて説明します。

この評価セットを使用すると、新しいバージョンのアプリケーションの品質を迅速かつ定量的にチェックしてから、関係者に配布してフィードバックを求めることができます。

ステップ 1: 質問のみを含む評価セットを作成する

🗂️ Request Logを収集することも、手動で質問をキュレーションすることもできます。

🗂️ Request Logを収集するには:

  1. 💬 Review UIを使用して、RAGアプリケーションに質問をします。

  2. 次の SQL を実行して、 <eval_table_name>という Unity Catalog テーブルを作成します。 このテーブルは任意のUnity Catalogスキーマに格納できますが、RAGアプリケーション用に構成したUnity Catalogスキーマに格納することをお勧めします。

    注:

    ログのサブセットのみを選択するように SQL コードを変更することができます。 これを行う場合は、 request 列の元のスキーマを保持してください。

    CREATE TABLE <eval_table_name> CLONE <catalog>.<schema>.rag_studio_<app_name>_<environment>_eval_dataset_template
    INSERT INTO <eval_table_name> SELECT request FROM <catalog>.<schema>.<request_log> LIMIT 5
    

    注:

    requestのスキーマは、要求ログと評価セットの間で意図的に同じになっています。

質問を手動でキュレーションするには:

  1. <catalog>.<schema>.rag_studio_<app_name>_<environment>_eval_dataset_template テーブルを複製して、 <eval_table_name>という新しいテーブルを作成します。

    CREATE TABLE <eval_table_name> CLONE <catalog>.<schema>.rag_studio_<app_name>_<environment>_eval_dataset_template
    
  2. <eval_table_name>に質問を追加し、request列のスキーマが以下に示すように同じであることを確認します。

    {
      "request_id": "c20cb3a9-23d0-48ac-a2cb-98c47a0b84e2",
      "conversation_id": null,
      "timestamp": "2024-01-18T23:22:52.701Z",
      "messages": [
        {
          "role": "user",
          "content": "Hello how are you"
        }
      ],
      "last_input": "Hello how are you"
    }
    

    注:

    messages配列は OpenAI メッセージ形式に従います。役割とコンテンツのペアはいくつでも含めることができます。

ステップ 2: 必要に応じて、各質問にグラウンドトゥルースデータを追加する

Databricks では、作成した質問にグラウンドトゥルースの回答と取得したコンテキストを追加することを提案しています - これにより、アプリケーションの品質をより正確に測定できます。 ただし、 このステップはオプションであり 、RAG Studioの機能を使用せずに使用できます - 不足している機能は、 回答の正しさメトリ クス+ 検索メトリクスの計算だけです。

  1. Databricks ノートブックを開く

  2. 次のスキーマを使用して Spark データフレームを作成します

    from pyspark.sql.types import StructType, StringType, StructField
    
    schema = StructType([StructField('id', StringType(), True), StructField('answer', StringType(), True), StructField('doc_ids', StringType(), True)])
    
    labeled_df = spark.createDataFrame([], schema)
    
  3. 上からの<eval_table_name>request_idごとに、グラウンドトゥルースの回答を Dataframe に追加します。

  4. グラウンドトゥルースラベルを <eval_table_name>に追加します。

    %pip install "https://ml-team-public-read.s3.us-west-2.amazonaws.com/wheels/rag-studio/ed24b030-3c87-40b1-b04c-bb1977254aa3/databricks_rag-0.0.0a1-py3-none-any.whl"
    dbutils.library.restartPython()
    
    from databricks.rag.utils import add_labels_to_eval_dataset
    
    help(add_labels_to_eval_dataset)
    
    add_labels_to_eval_dataset(labeled_df, "<eval_table_name>")
    

次のチュートリアルに従ってください!

RAGアプリケーションを本番運用にデプロイする