一、官方信息
| 项目名称 | Ragas |
| 仓库地址 | https://github.com/explodinggradients/ragas |
| 官方网站 | https://docs.ragas.io/ |
| 最新更新 | 2026 年活跃迭代 |
| 项目定位 | 面向 RAG 流水线的自动化评估框架 |
| 开源协议 | Apache-2.0 |
二、项目背景
搭一个 RAG 原型很容易:切片、向量化、检索、拼 Prompt、调 LLM,半天就能跑起来。但"跑得通"和"答得好"之间隔着巨大鸿沟——检索回来的片段对不对?回答有没有基于这些片段?有没有胡编乱造?答案完整吗?这些问题在没有量化指标之前,全靠主观感觉,根本没法迭代优化。
Ragas(Retrieval Augmented Generation Assessment)就是为解决这个问题而生。它把 RAG 系统拆成两个阶段——检索(Retrieval)和生成(Generation),分别给出可量化的指标:
- 检索质量:Context Precision(上下文精确度)、Context Recall(上下文召回率)。
- 生成质量:Faithfulness(忠实度,是否基于给定上下文不编造)、Answer Relevancy(答案相关性)。
这些指标大多用"另一个 LLM 当裁判"自动打分,你只需要准备一批 (问题, 标准答案, 你的 RAG 实际回答, 检索到的上下文) 数据,Ragas 就能批量跑完给出分数,让你换 embedding、换切片策略、换 Prompt 时知道到底有没有变好。Ragas 已成为 RAG 领域事实上的标准评测工具,也被 LangChain、LlamaIndex 原生集成。
三、核心特性
- 四大核心指标:Faithfulness、Answer Relevancy、Context Precision、Context Recall。
- LLM-as-Judge:用强模型自动打分,无需人工标注大量数据。
- 与 RAG 框架解耦:任意 RAG 系统都能接入,只要喂入字段。
- 多指标可扩展:支持自定义 metric、领域专用评估。
- 数据集合成:能从原始文档自动生成评测问题集。
- Pandas 友好:结果输出为 DataFrame,方便分析与可视化。
- LangChain / LlamaIndex 集成:一行接入现有链路。
四、环境要求
- Python 3.9 ~ 3.12。
- 一个可调用的 LLM(作为裁判,建议用较强模型)与 embedding 模型。
- 内存:2GB 以上即可。
- 操作系统:Linux / macOS / Windows。
五、详细部署步骤
方式一:pip 安装
python -m venv venv
source venv/bin/activate
pip install -U ragas如需配合 LangChain / 数据集合成,安装额外依赖:
pip install "ragas[langchain,debug]"方式二:准备评测数据并跑指标
from datasets import Dataset
from ragas import evaluate
from ragas.metrics import (
faithfulness,
answer_relevancy,
context_precision,
context_recall,
)
# 每条样本需要 4 个字段
data = {
"question": ["如何重置密码?"],
"answer": ["在设置页点击修改密码即可。"],
"contexts": [["用户可在个人设置-账号安全中修改登录密码。"]],
"ground_truth": ["进入设置-账号安全,点击修改密码。"],
}
dataset = Dataset.from_dict(data)
# 指定裁判 LLM 与 embedding(这里用 OpenAI 兼容接口)
import os
os.environ["OPENAI_API_KEY"] = "sk-xxx"
result = evaluate(
dataset=dataset,
metrics=[
faithfulness,
answer_relevancy,
context_precision,
context_recall,
],
)
print(result)
# 转成 DataFrame 查看每条明细
df = result.to_pandas()
print(df)接入 DeepSeek / 本地模型作为裁判
from ragas.llms import LangchainLLMWrapper
from ragas.embeddings import LangchainEmbeddingsWrapper
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
judge_llm = LangchainLLMWrapper(ChatOpenAI(
model="deepseek-chat",
base_url="https://api.deepseek.com/v1",
api_key="sk-xxx",
))
judge_emb = LangchainEmbeddingsWrapper(OpenAIEmbeddings(
model="text-embedding-3-small",
base_url="https://api.deepseek.com/v1",
api_key="sk-xxx",
))
result = evaluate(
dataset=dataset,
metrics=[faithfulness, answer_relevancy],
llm=judge_llm,
embeddings=judge_emb,
)自动合成评测问题集
from ragas.testset import TestsetGenerator
generator = TestsetGenerator.from_langchain(
llm=judge_llm,
embeddings=judge_emb,
)
# 从你的原始文档切分里自动生成带标准答案的问题集
testset = generator.generate_with_langchain_docs(
documents=your_docs, testset_size=20
)
df = testset.to_pandas()验证部署
python -c "import ragas; print(ragas.__version__)"六、使用方法
- pip 安装后,准备好 question / answer / contexts / ground_truth 四列数据。
- 选择裁判 LLM(建议用比被测模型更强的模型),调用
evaluate()。 - 看总分与每条明细,Faithfulness 低说明模型在编造,Context Precision 低说明检索不准。
- 无账号密码;Key 通过环境变量或 LangChain LLM 对象传入。
七、常见问题 FAQ
Q1:Faithfulness 分数一直很低?
A:说明回答里有上下文没有的内容(幻觉),先检查 Prompt 是否要求"仅基于上下文回答",并优化检索质量。
Q2:一定要 ground_truth 吗?
A:Faithfulness 和 Answer Relevancy 不需要标准答案也能评;Context Recall 需要 ground_truth。没有标准答案时可先跑前两个。
Q3:裁判模型用哪个?
A:建议用 GPT-4o / DeepSeek-V3 这类较强模型当 judge;用小模型当裁判打分不可靠。
Q4:成本会不会很高?
A:每条样本要调用裁判 LLM 多次打分,样本量大时成本可观;建议先用小批量验证,再扩量。
Q5:结果怎么沉淀?
A:result.to_pandas() 导出 DataFrame,可存 CSV 或对接 Langfuse 做长期追踪。
八、跳转链接
- GitHub 仓库:https://github.com/explodinggradients/ragas
- 官方文档:https://docs.ragas.io/
- 指标说明:Ragas Metrics
- PyPI:https://pypi.org/project/ragas/