Skip to content

02 RAG 评估与优化

学习理念:RAG 系统上线后好不好用,不能靠"感觉"。评估的作用就是把"感觉"变成可量化的指标——检索准不准、答案忠不忠实、有没有幻觉。这一章讲的就是怎么用 RAGAS 评估 RAG 系统、怎么排查 bad case、怎么优化。


📖 阅读优先级

等级章节说明
🟡 理解即可RAGAS 评估知道 RAG 评估的思路和指标含义
🔴 值得实践Bad Case 排查实际开发中一定会遇到的调试经验
🟢 了解即可图谱优化和 Ch19 Neo4J 相关,用到时回来看

一、为什么需要评估

Agent(尤其是 RAG Agent)上线后的表现是多因素耦合的结果:

切分策略 → 索引质量 → 检索 TopK → Rerank → 图谱 → Prompt → 模型 → 工具调用

只看几个例子很难判断瓶颈在哪。评估的核心价值:

价值说明
质量量化用指标把输出质量数字化(忠实度、相关性、检索精度)
回归保障改了切分/TopK/Prompt 后,快速判断整体是否退化
发现短板通过细分指标定位是"检索没找到"还是"模型没用好"
自动化减少人工验收的成本和主观偏差

二、RAGAS 评估框架

🟡【理解即可】 RAGAS 是目前最主流的 RAG 评估框架。

2.1 基本概念

RAGAS 把一次问答拆成三要素:

Question(问题) → RAG 系统 → Contexts(检索到的文档片段)

                              Answer(生成的答案)

RAGAS 用一组指标从"检索侧 + 生成侧 + 证据一致性"三个方向打分

2.2 核心指标

指标衡量什么高低的意义
Faithfulness(忠实度)答案是否基于检索到的上下文,没有幻觉高→可靠;低→模型在瞎编
Relevance(相关性)答案是否回答了问题高→命中要害;低→答非所问
Context Precision(检索精度)检索到的文档有多少是真正有用的高→检索精准;低→噪声多
Context Recall(检索召回)需要的信息是否都被检索到了高→没有遗漏;低→关键信息没找到

2.3 评估流程

Step 1: 准备测试集
  构建一批 (question, ground_truth) 黄金数据集
  来源:真实用户问题 + 人工标注

Step 2: 跑系统
  用当前 RAG 系统对每个 question 跑出 answer 和 contexts

Step 3: LLM 打分
  用更强的模型(如 GPT-4)对 (question, answer, contexts) 打分
  RAGAS 内置了打分 prompt,不需要自己写

Step 4: 看指标
  Faithfulness < 0.7 → 模型幻觉严重,检查 Prompt 或换模型
  Context Precision < 0.6 → 检索噪声大,调整 TopK 或 Rerank
  Context Recall < 0.6 → 切分策略有问题,信息没被检索到

三、LLM-as-a-Judge

🟡【理解即可】 用强模型当裁判,不需要人工逐个打分。

优势:比人工快百倍,比 BLEU/ROUGE 更贴近语义质量。 风险:裁判模型本身有偏差,喜欢长回答、喜欢肯定语气。

常见做法

python
# RAGAS 内置的 LLM-as-a-Judge 使用方式
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy

result = evaluate(
    dataset=test_dataset,  # question + answer + contexts
    metrics=[faithfulness, answer_relevancy]
)

print(result)  # 输出各项指标打分

四、Bad Case 排查

🔴【值得实践】 评估发现低分后,怎么定位问题?

4.1 常见问题类型

现象可能原因排查方向
检索不到切分粒度过粗/过细、Qdrant 阈值太高调整切分策略、降阈值
检索噪声多TopK 太大、Rerank 没生效降 TopK、检查 Rerank 服务
模型瞎编Prompt 没强调"只基于给定内容回答"加约束 Prompt
答案太短/太啰嗦Prompt 风格引导问题优化 system prompt
脏数据知识库里混入了无关文档检查召回内容
网络问题调用远端模型超时加超时重试

4.2 排查思路

拿到一个 bad case → 先看"召回的内容对不对"
  召回内容不对 → 检索模块问题(切分/TopK/阈值/Rerank)
  召回内容对了但答案不对 → 生成模块问题(Prompt/模型)

🔴【值得实践】 这个二分法是排查 RAG 问题的核心思路。每次遇到 bad case,先问"模型看到的内容对不对",而不是直接改 Prompt。


五、图谱优化

🟢【了解即可】 如果 Ch19 用了 Neo4J 知识图谱,这部分涉及图谱查询优化。

常见优化方向:

优化方向说明
实体名模糊匹配用户说的商品名和图中的实体名不完全一致时,加向量匹配
关系剪枝一跳扩展太多无关节点,限制扩展深度
Cypher 查询优化加索引、限制返回数量
图谱 vs 向量融合图谱结果和向量检索结果做 RRF 融合

六、本阶段文件索引

优先级文件路径
🔥 P0尚硅谷人工智能之知识库的评估与优化.md评估与优化/课件/

OPC 超级个体实战指南