第 1 章 为什么需要评估 RAG,以及本教程怎么读
本章定位:理论铺垫与导航。在进入任何代码、任何指标之前,我们先把"为什么非评估 RAG 不可"这件事讲清楚,再给你一张能一直用到第 11 章的学习地图,并帮你把环境一次性装对。读完本章,你应当能向同事用一句话解释 RAG、说清它"难评估"的根源,并知道接下来十章该按什么顺序读。
名词约定(全教程统一):
- 官方仓库现地址:
vibrantlabsai/ragas;旧镜像explodinggradients/ragas内容一致,只是旧组织路径,引用时可标注"旧路径"。- 官方文档:https://docs.ragas.io/(旧域名
ragas.in已迁移/重定向至此)。- 核心论文:RAGAS: Automated Evaluation of Retrieval Augmented Generation,Es et al., 2023,arXiv:2309.15217。
- PyPI 发布页:https://pypi.org/project/ragas/。
事实 / 观点 标注说明:本章用「事实:」表示可经官方文档、仓库或论文核验的客观陈述;用「观点:」表示基于经验的建议,请结合你团队实际判断。
1.1 什么是 RAG(检索增强生成)
一句话定义(事实):RAG(Retrieval-Augmented Generation,检索增强生成)是一种让大语言模型(LLM)在生成回答时,先从外部知识库检索相关片段作为上下文,再基于这些上下文生成答案的架构范式。它把"模型凭记忆作答"变成了"模型先查资料再作答",从而在不需要重训模型的前提下,缓解幻觉、注入私有/最新知识。
观点:如果把纯 LLM 比作"闭卷考试",RAG 就是"开卷考试"——但开卷不等于答得对,关键在于书翻得准不准、抄得对不对。
架构:两段式(Retrieval → Generation)
RAG 在逻辑上天然分成**检索段(Retrieval)与生成段(Generation)**两段,二者各承担一半的质量风险:
用户提问 (question) │ ▼ ┌─────────────────────────────────────────────┐ │ 检索段 (Retrieval) │ │ 1. 把问题向量化 (query embedding) │ │ 2. 在向量库/索引中做相似度检索 (top-k) │ │ 3. 召回若干上下文片段 (contexts) │ └─────────────────────────────────────────────┘ │ 产出:retrieved_contexts ▼ ┌─────────────────────────────────────────────┐ │ 生成段 (Generation) │ │ 4. 把 (问题 + 上下文) 拼成 prompt │ │ 5. 交给 LLM 生成回答 (answer) │ └─────────────────────────────────────────────┘ │ ▼ 最终答案 (answer)关键字段(事实):一个最小 RAG 样本至少包含三要素——question(问题)、retrieved_contexts(检索段召回的上下文)、answer(生成段产出的答案)。这三者正是后续所有 RAGAS 指标的计算输入。第 2 章会正式引入SingleTurnSample等数据结构。
1.1 分节小结
- RAG = 检索段 + 生成段 的两段式架构,用外部上下文约束 LLM 的作答。
- 质量风险分布在两段:上下文"找得不准"与答案"编得不对"都会拖垮最终结果。
- 评估的最小输入就是
(question, contexts, answer)三元组。
1.2 为什么 RAG 难评估
RAG 看似"能跑出答案",但要科学地判断它答得好不好,却异常困难。根因有四个:
1) 幻觉(Hallucination)——生成段的天敌(事实)
LLM 可能在上下文中没有依据时,仍然"自信地"编造事实、数字或引用。评估结果若只看答案通顺与否,会完全漏掉这类错误。
2) 检索质量参差——检索段的暗病(事实)
召回的上下文可能:不相关(噪声)、不完整(该查的没查到)、或排序错位(关键内容排在 top-k 之外)。这些不会让系统报错,却会悄悄拉低答案质量。
3) 端到端耦合——问题藏在哪一段?(事实 + 观点)
一个坏答案,可能是"检索召回错了"导致,也可能是"检索没问题但生成段没用好"。若只看端到端最终答案,你无法定位该优化检索还是优化生成——而定位恰恰是改进的前提。
观点:评估的首要目的不是"打一个总分",而是"分诊"——先把问题归因到检索段还是生成段,再动手。
4) 缺乏标准答案(事实)
RAG 多用于开放域问答,许多问题没有唯一正确文本(reference / ground truth)。传统依赖"人工标注标准答案再做精确匹配"的评估方法,在此要么成本爆炸,要么根本不可行。这正是 RAGAS 提出reference-free(无参考)评估的动机(详见第 2 章与论文 arXiv:2309.15217)。
1.2 分节小结
- 幻觉、检索质量不稳、端到端耦合(难归因)、缺标准答案,是 RAG 评估的四道坎。
- 评估不只是"给分数",更是"分诊"——要能区分检索段与生成段各自的问题。
- 传统"标标准答案再比对"的范式在 RAG 上既不经济也常不可行。
1.3 评估 RAG 的常见维度(名词速览)
下面先给出本教程会反复使用的核心指标名词。本节只做"先认识",第 3–4 章会逐一拆解计算口径、所需输入与适用场景。先记住它们分别"守在系统的哪一段":
生成侧(守在 Generation)
- 忠实度 Faithfulness:答案是否只说了上下文里有的事。分数低 = 在胡编(幻觉),是抑制幻觉的核心指标。
- 答案相关性 Answer Relevancy:答案是否切题、直接回应了问题,而非答非所问或啰嗦绕圈。
检索侧(守在 Retrieval)
- 上下文精度 Context Precision:排在前面的上下文是否更相关(衡量排序质量,越大越好)。
- 上下文召回 Context Recall:回答问题所需的事实,是否都被召回了(衡量覆盖度,越大越好)。
- 上下文相关性 Context Relevancy / 噪声敏感度:召回内容是否干净、相关,无关噪声是否把模型带偏。
事实:以上指标的输入都建立在 1.1 提到的
(question, contexts, answer)三元组之上;其中 Context Recall 等检索侧指标通常需要"标准答案/事实清单"作为参考,而 Faithfulness、Answer Relevancy 多为 reference-free(无参考)。具体取舍在第 3–4 章展开。
1.3 分节小结
- 常见评估维度按"守在系统哪一段"分两类:生成侧(Faithfulness、Answer Relevancy)与检索侧(Context Precision、Context Recall、Context Relevancy)。
- 这些名词就是后续十章的"基本词汇表",本章只需混个脸熟。
- 记住一个规律:生成侧多无参考、检索侧常需参考——这是第 3–4 章的核心分水岭。
1.4 本教程定位、读者对象与学习路径
读者对象(事实 + 观点)
事实:本教程面向第一次系统接触 LLM/RAG 评估的工程师或技术负责人。
观点:如果你已能熟练跑通 RAGAS 的完整流水线,可直接跳到第 9–11 章的规模化与落地部分;但第 1–2 章的"指标诊断语义"仍建议通读,避免陷入"只看总分"的误区。
教程定位(事实)
本教程是 RAGAS v0.4.3 的实战导向教程,主线遵循四段进阶:
| 阶段 | 涵盖章节 | 目标 |
|---|---|---|
| 理论铺垫 | 第 1–2 章 | 建立"为什么评估"的心智模型,搞懂 RAGAS 的世界观与指标地图 |
| 基础实践 | 第 3–6 章 | 逐个吃透指标(生成类 / 检索类),建数据集,跑通第一次评估闭环 |
| 高级应用实践 | 第 7–9 章 | 合成测试数据、自定义指标与提示词调优、大规模评测工程化 |
| 生态拓展 | 第 10–11 章 | 集成 CI/CD 自动化、团队落地路线图与治理 |
11 章地图(一张图看到尾)
- 第 1 章 · 为什么评估 RAG(本教程开篇/引言):建立"检索+生成两段式"心智模型,解释为何单看端到端答案会掩盖问题,并交付本章导航。
- 第 2 章 · 核心概念、架构与指标全景:认识 Sample/Dataset、理解 RAGAS 的 reference-free 思想,拿到完整指标地图。
- 第 3 章 · 生成类指标:拆开 Faithfulness、Answer Relevancy 等,理解"生成段诊断语义"(多为 reference-free)。
- 第 4 章 · 检索类与端到端指标:拆开 Context Precision / Recall、Factual Correctness 等(常需 reference)。
- 第 5 章 · 构建评估数据集:从真实日志、专家标注到合成数据,讲清"黄金集"的来源与质量门槛。
- 第 6 章 · 第一次评估:跑通"数据集 + 指标实例"的最小闭环,拿到第一组成分数。
- 第 7 章 · 合成测试数据生成:用
TestsetGenerator从自有知识库批量造题,解决"没有现成标注"的冷启动。 - 第 8 章 · 自定义指标与提示词调优:自定义
Metric、改写 judge 提示词,把业务规则沉淀成可量化分数。 - 第 9 章 · 大规模评测:围绕成本、并发、
RunConfig、缓存与可复现性,做工程级评测。 - 第 10 章 · 集成与自动化:把评测接入 CI/CD,让每次改动都有质量门禁兜底。
- 第 11 章 · 总结与团队落地路线图:复盘主线,给可勾选的落地清单、五阶段路线图与常见陷阱。
观点:如果时间有限,第 2 章(概念)+ 第 3–4 章(指标语义)+ 第 6 章(跑通闭环)是"必读中的必读"。诊断能力比漂亮的报告更重要。
1.4 分节小结
- 读者:首次系统接触 RAG 评估的工程师/技术负责人;教程重实战、以 v0.4.3 为口径。
- 主线四段:理论铺垫(1–2)→ 基础实践(3–6)→ 高级应用实践(7–9)→ 生态拓展(10–11)。
- 建议读法:先建立指标诊断心智,再跑通闭环,最后谈规模化与团队落地。
1.5 先修知识与环境准备
先修知识(事实)
- 了解 LLM 的基本概念(prompt、token、对话/问答)。
- 知道什么是向量检索/Embedding、向量库(如 FAISS、pgvector 等)的大致作用即可——不需要你会训练模型。
- 有基本的 Python(≥3.9)与
pip使用能力。
安装(版本口径:v0.4.3)
事实:本教程统一锁定RAGAS v0.4.3(PyPI 发布;GitHub 仓库
vibrantlabsai/ragas)。
# 依赖与版本(本教程统一口径)pipinstallragas==0.4.3 pipinstallopenaiAPI Key 准备(事实)
RAGAS 多数指标靠一个"裁判 LLM"(LLM-as-a-judge)打分,因此需要准备一个 LLM 提供方的 API Key。以 OpenAI 为例:
exportOPENAI_API_KEY="sk-..."# 替换为你的真实 key观点:入门阶段用
gpt-4o-mini这类高性价比模型当裁判即可,成本可控;上线前若对裁判质量要求高,再评估升级到更强的模型。
最小可运行的环境检查片段
下面这段代码只做环境自检,不跑任何真实评估,用于确认"ragas 装好了、版本对、API key 读得到、OpenAI 客户端能初始化":
# 依赖:ragas==0.4.3, openai# 用途:仅做环境自检,不发起评估请求importosimportragasfromopenaiimportOpenAI# 1) 版本核对(事实:本教程锁定 0.4.3)print("ragas version:",ragas.__version__)assertragas.__version__=="0.4.3","版本不符,请 pip install ragas==0.4.3"# 2) API key 是否就绪api_key=os.getenv("OPENAI_API_KEY")assertapi_key,"请先 export OPENAI_API_KEY"print("OPENAI_API_KEY detected:",api_key[:6]+"…")# 3) OpenAI 客户端可初始化(不真正发请求)client=OpenAI()print("OpenAI client ready:",clientisnotNone)print("✅ 环境检查通过,可以进入第 2 章。")运行后应看到ragas version: 0.4.3与✅ 环境检查通过。
重要提示:v0.4.3 的 API 处于演进期
事实 + 观点:RAGAS 在 v0.4 处于API 演进期,不同文档对同一接口的弃用/移除表述并不完全一致。本章先给三条"以安装版本为准"的原则,避免你后续踩坑(第 2 章 2.5 还会展开):
evaluate()(legacy):在 v0.4.3 会触发DeprecationWarning,官方对"何时移除"表述不一。实践建议:以你实际安装的版本为准,先实测再下结论。ragas.metrics小写单例(如ragas.metrics.faithfulness):官方明确计划在v1.0 移除,请勿在新代码中依赖。- 推荐路线:新代码优先用collections 类式 API(如
from ragas.metrics.collections import Faithfulness),并显式注入llm/embeddings。
观点:一句话原则——文档会说"计划移除",但只有你机器上的版本说了算。任何涉及版本的行为,先
pip show ragas看版本,再小样实测。
1.5 分节小结
- 先修:LLM/向量检索基础概念 + Python≥3.9;本教程锁定
ragas==0.4.3与openai。 - 准备:安装依赖、配置
OPENAI_API_KEY、用上面的自检片段确认环境。 - 牢记:v0.4.3 API 在演进期,优先 collections 类式 API,弃用接口"以实测为准"。
1.6 本章小结
- RAG 是"检索段 + 生成段"的两段式架构,最小评估输入是
(question, contexts, answer)三元组。 - 它难评估,根因有四:幻觉、检索质量参差、端到端耦合(难归因)、缺乏标准答案。
- 常见评估维度分两类:生成侧(Faithfulness、Answer Relevancy)与检索侧(Context Precision、Context Recall、Context Relevancy),本章只做名词速览,第 3–4 章展开。
- 本教程 11 章主线:理论铺垫(1–2)→ 基础实践(3–6)→ 高级应用实践(7–9)→ 生态拓展(10–11),读者是首次系统接触 RAG 评估的工程师/技术负责人。
- 环境已锁定 v0.4.3;v0.4 处于 API 演进期,优先 collections 类式 API,弃用接口以实测为准。
动手检查点
- 执行
pip show ragas,确认版本号为0.4.3;若不是,运行pip install ragas==0.4.3。 - 运行 1.5 的"环境检查片段",确认输出
✅ 环境检查通过。 - 打开官方仓库
vibrantlabsai/ragas的 README,对照 1.3 的"名词速览",勾出你当前最关心的 3 个指标——它们就是你后续选型与实操的出发点。 - 用一句话向同事解释"什么是 RAG"(参考答案:先检索外部资料、再让 LLM 基于资料作答的开卷式生成架构)。能讲清楚,说明 1.1 已达标。