Zeno
Zeno
Zeno 평가 플랫폼을 사용해 Ragas 평가 결과를 쉽게 시각화하고 탐색할 수 있어요. 이 튜토리얼의 결과가 어떤지 여기에서 확인해 볼 수 있어요.
출처: 문서
본문
Zeno로 Ragas 결과 시각화
먼저 zeno-client 패키지를 설치하세요.
pip install zeno-client
다음으로 hub.zenoml.com 에서 계정을 만들고 계정 페이지에서 API 키를 생성하세요.
이제 Getting Started 가이드에서 멈춘 지점부터 평가를 이어갈 수 있어요.
import os
import pandas as pd
from datasets import load_dataset
from zeno_client import ZenoClient, ZenoMetric
from ragas import evaluate
from ragas.metrics import (
answer_relevancy,
context_precision,
context_recall,
faithfulness,
)
# Set API keys
os.environ["OPENAI_API_KEY"] = "your-openai-api-key"
os.environ["ZENO_API_KEY"] = "your-zeno-api-key"
fiqa_eval = load_dataset("vibrantlabsai/fiqa", "ragas_eval")
result = evaluate(
fiqa_eval["baseline"],
metrics=[
context_precision,
faithfulness,
answer_relevancy,
context_recall,
],
)
df = result.to_pandas()
df.head()
이제 데이터와 결과를 담은 df를 Zeno에 업로드할 수 있어요.
먼저 커스텀 RAG 뷰 사양과 평가에 쓸 메트릭 컬럼으로 프로젝트를 만들어요.
client = ZenoClient(os.environ["ZENO_API_KEY"])
project = client.create_project(
name="Ragas FICA eval",
description="Evaluation of RAG model using Ragas on the FICA dataset",
view={
"data": {
"type": "vstack",
"keys": {
"question": {"type": "markdown"},
"texts": {
"type": "list",
"elements": {"type": "markdown"},
"border": True,
"pad": True,
},
},
},
"label": {
"type": "markdown",
},
"output": {
"type": "vstack",
"keys": {
"answer": {"type": "markdown"},
"ground_truth": {
"type": "list",
"elements": {"type": "markdown"},
"border": True,
"pad": True,
},
},
},
"size": "large",
},
metrics=[
ZenoMetric(
name="context_precision", type="mean", columns=["context_precision"]
),
ZenoMetric(name="faithfulness", type="mean", columns=["faithfulness"]),
ZenoMetric(name="answer_relevancy", type="mean", columns=["answer_relevancy"]),
ZenoMetric(name="context_recall", type="mean", columns=["context_recall"]),
],
)
다음으로 질문과 ground truth를 담은 기본 데이터셋을 업로드해요.
data_df = pd.DataFrame(
{
"data": df.apply(
lambda x: {"question": x["question"], "texts": list(x["contexts"])}, axis=1
),
"label": df["ground_truth"].apply(lambda x: "\n".join(x)),
}
)
data_df["id"] = data_df.index
project.upload_dataset(
data_df, id_column="id", data_column="data", label_column="label"
)
마지막으로 RAG 출력과 Ragas 메트릭을 업로드해요. 비교와 반복을 할 때 어떤 모델이든 이 작업을 실행할 수 있어요.
output_df = df[
[
"context_precision",
"faithfulness",
"answer_relevancy",
"context_recall",
]
].copy()
output_df["output"] = df.apply(
lambda x: {"answer": x["answer"], "ground_truth": list(x["ground_truth"])}, axis=1
)
output_df["id"] = output_df.index
project.upload_system(
output_df, name="Base System", id_column="id", output_column="output"
)
질문이 있다면 Discord 또는 [email protected] 으로 Zeno 팀에 연락하세요!