Ragas 评估检索增强生成(RAG)框架的介绍
Ragas (Retrieval Augmented Generation Assessment) 是一个开源的 Python 框架,专门用于评估检索增强生成(RAG)管道的性能。
在大模型应用开发中,构建 RAG 系统很容易,但要科学地评估它到底好不好(检索是否准确、生成是否幻觉、是否回答了问题)却非常困难。Ragas 就是为了解决这一痛点而生的。
以下是对 Ragas 的详细介绍,包括它的核心功能、评估指标、工作原理以及如何使用。
1. 为什么需要 Ragas?
传统的 LLM 评估通常依赖于人工打慢或简单的字符串匹配,但这在 RAG 场景下不仅昂贵,而且不准确。
Ragas 的核心价值在于:
- 无需人工标注的真实答案(Ground Truth): 它使用 LLM(如 GPT-4)作为“裁判”,通过合成数据生成测试集,并自动评估结果。
- 组件化评估: 它不把 RAG 当作黑盒,而是分开评估“检索器”和“生成器”的表现。
- 专注于 RAG 特有的问题: 比如检索到的上下文是否有噪声,回答是否产生幻觉等。
2. 核心评估指标
Ragas 提供了一套多维度的指标,主要分为三大类:检索质量、生成质量 和 端到端质量。
A. 检索质量
- Context Precision (上下文精确度): 检索到的文档是否都是相关的?有没有掺杂噪声?
- Context Recall (上下文召回率): 检索到的文档是否包含了回答问题所需的所有信息?(注:通常需要 Ground Truth)。
- Context Entity Recall (上下文实体召回率): 检索到的上下文中是否包含了问题中的关键实体(如人名、地名、专有名词)。
B. 生成质量
- Faithfulness (忠实度): 这一点非常重要。它衡量生成的答案是否严格基于检索到的上下文。如果答案包含了上下文中没有的信息(即“幻觉”),则 Faithfulness 分数会很低。
- Answer Relevance (答案相关性): 生成的答案是否真正解决了用户的问题?(有时候答案很通顺,但答非所问,这个指标会很低)。
C. 端到端 / 传统指标
- Semantic Similarity (语义相似度): 生成的答案与标准答案在语义上的相似程度(使用 Embedding 计算)。
3. Ragas 的工作流程
Ragas 的评估流程通常包含以下步骤:
-
准备数据:
你需要准备一组测试数据。理想情况下,你需要包含:Question(用户问题)、Context(检索到的上下文)、Answer(模型生成的答案)、Ground Truth(标准答案,部分指标需要)。- 特色功能:Ragas 可以利用你的文档库,利用
Evolution策略自动生成高质量的测试问题,从而省去人工编写 Ground Truth 的时间。
- 特色功能:Ragas 可以利用你的文档库,利用
-
选择指标与运行:
你选择想要评估的指标(例如:faithfulness,answer_relevance),然后运行评估脚本。 -
LLM 作为裁判:
Ragas 会将问题和答案发送给一个更强大的 LLM(如 GPT-3.5/4),通过精心设计的 Prompt 让 LLM 给出分数(0到1之间)。 -
输出报告:
Ragas 会生成一个详细的报告(DataFrame 格式或 HTML),展示每个指标的平均分,以及每个具体问题的得分情况。
4. 简单的代码示例
假设你已经有了 RAG 系统产生的数据,以下是使用 Ragas 进行评估的简单示例:
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevance
from datasets import Dataset
# 1. 准备你的评估数据
data_samples = {
'question': [
'法国的首都是哪里?',
'谁是 Alan Turing?'
],
'answer': [
'法国的首都是巴黎。',
'Alan Turing 是一位英国数学家...'
],
'contexts' : [
['巴黎是法国的首都和最大城市...'],
['Alan Turing 是一位英国数学家、计算机科学家...']
],
# 注意:faithfulness 和 answer_relevance 不需要 ground_truth
# 但 context_recall 需要
}
# 转换为 HuggingFace Dataset 格式
dataset = Dataset.from_dict(data_samples)
# 2. 定义评估指标
result = evaluate(
dataset,
metrics=[
faithfulness, # 忠实度(检查幻觉)
answer_relevance # 答案相关性
]
)
# 3. 查看结果
print(result)
# 结果通常包含每一项的分数,以及平均值
result.to_pandas()
5. Ragas 的独特优势
-
Synthetic Data Generation (合成数据生成):
这是 Ragas 最强大的功能之一。你只需要提供原始文档,Ragas 可以利用 LLM 模拟用户提问,并生成对应的标准答案。这使得在没有任何人工标注数据的情况下,也能建立大规模的评估集。 -
LLM-as-a-Judge:
它利用 LLM 来理解上下文的细微差别,比传统的基于关键词匹配或简单向量相似度的评估方法更智能、更接近人类判断。 -
生态集成:
Ragas 可以轻松集成到现有的 RAG 框架中,如 LangChain 和 LlamaIndex,也支持将结果集成到 CI/CD 流程中(例如通过 GitHub Actions),确保代码更新不会降低 RAG 系统的质量。
总结
如果你正在开发 RAG 应用(例如企业知识库问答),并且希望系统性地改进你的系统,Ragas 是目前最主流、最成熟的评估工具之一。它能帮你定位问题到底出在“检索没找到文档”还是“模型瞎编乱造”,从而让你有的放矢地进行优化。
(END)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)