评测一个简单的 RAG 系统
在本教程中,我们将编写一个简单的评测流水线,来评测 RAG(检索增强生成)系统。教程结束时,你将学会如何用评测驱动开发来评测并迭代 RAG 系统。
flowchart LR
A["Query<br/>'What is Ragas 0.3?'"] --> B[Retrieval System]
C[Document Corpus<br/> Ragas 0.3 Docs📄] --> B
B --> D[LLM + Prompt]
A --> D
D --> E[Final Answer]
我们将先编写一个简单的 RAG 系统:从语料库中检索相关文档,并用 LLM 生成答案。
python -m ragas_examples.rag_eval.rag
接下来,我们会为 RAG 系统写下若干样本查询和期望输出,然后把它们转换成 CSV 文件。
import pandas as pd
samples = [
{"query": "What is Ragas 0.3?", "grading_notes": "- Ragas 0.3 is a library for evaluating LLM applications."},
{"query": "How to install Ragas?", "grading_notes": "- install from source - install from pip using ragas[examples]"},
{"query": "What are the main features of Ragas?", "grading_notes": "organised around - experiments - datasets - metrics."}
]
pd.DataFrame(samples).to_csv("datasets/test_dataset.csv", index=False)
为了评测 RAG 系统的表现,我们将定义一个基于 LLM 的指标:把 RAG 系统的输出与 grading notes 比较,并据此输出 pass/fail。
from ragas.metrics import DiscreteMetric
my_metric = DiscreteMetric(
name="correctness",
prompt = "Check if the response contains points mentioned from the grading notes and return 'pass' or 'fail'.\nResponse: {response} Grading Notes: {grading_notes}",
allowed_values=["pass", "fail"],
)
接下来,我们将编写实验循环:在测试数据集上运行 RAG 系统,用该指标评测,并把结果存到 CSV 文件中。
@experiment()
async def run_experiment(row):
response = rag_client.query(row["query"])
score = my_metric.score(
llm=llm,
response=response.get("answer", " "),
grading_notes=row["grading_notes"]
)
experiment_view = {
**row,
"response": response.get("answer", ""),
"score": score.value,
"log_file": response.get("logs", " "),
}
return experiment_view
现在无论何时你改了 RAG 流水线,都可以运行实验,看看它如何影响 RAG 的表现。
端到端运行示例
- 设置你的 OpenAI API key
bash
export OPENAI_API_KEY="your_openai_api_key"
- 运行评测
bash
python -m ragas_examples.rag_eval.evals
搞定!你已经成功用 Ragas 跑完第一次评测。现在可以通过打开 experiments/experiment_name.csv 文件来查看结果。