Skip to content
🔗 分享本题
查看我的学习进度 →
RAG 检索生成系统业务四层评估图解

🧠 图解记忆: 先分清检索错还是生成错,再用质量、延迟、成本和业务结果一起验收。

💡 答案要点

RAG 评估框架(RAGAS):

python
# RAGAS 三大核心指标
from ragas import evaluate
from datasets import Dataset

# 准备评估数据
eval_data = Dataset.from_dict({
    "user_input": ["问题1", "问题2", ...],
    "retrieved_contexts": [["文档1", "文档2"], ...],
    "response": ["答案1", "答案2", ...],
    "reference": ["标准答案1", "标准答案2", ...]
})

# 计算指标
result = evaluate(eval_data, metrics=[
    faithfulness,      # 答案是否忠于检索内容
    answer_relevancy,   # 答案是否切题
    context_recall,     # 检索内容是否完整
    context_precision   # 检索内容是否精确
])

四大核心指标详解:

指标含义目标值测量方式
Faithfulness答案事实是否来自检索内容>0.9LLM判断答案中有多少陈述被检索内容支持
Answer Relevancy答案和问题相关程度>0.8LLM生成反问,看与原问题的语义相似度
Context Recall检索内容覆盖标准答案的程度>0.85比较检索内容 vs 标准答案的实体重叠
Context Precision检索内容中噪音比例>0.9计算 Top-K 中相关文档的比例

Context Precision 计算:

python
def context_precision(retrieved_docs, relevant_docs, k=10):
    """Context Precision@K"""
    hits = 0
    for i, doc in enumerate(retrieved_docs[:k]):
        if doc in relevant_docs:
            hits += 1
    return hits / min(k, len(relevant_docs))

实际调优案例:

python
# 调优前:Faithfulness=0.72
# 问题:模型有时候会"自己发挥",脱离检索内容

# 调优方案:添加 prompt 约束
improved_prompt = """
你是一个严格基于给定上下文回答的助手。
规则:
1. 只使用上下文中的信息,不要添加外部知识
2. 如果上下文中没有相关信息,直接回答"我不知道"
3. 回答时引用上下文中的具体内容

上下文:{context}
问题:{question}
"""

# 调优后:Faithfulness=0.91

面试话术:

"RAG 评估用 RAGAS 框架,核心看四个指标:Faithfulness(答案是否忠于检索内容)、Answer Relevancy(答案是否切题)、Context Recall(检索是否完整)、Context Precision(检索是否精确)。生产环境我会用 RAGAS 配合人工抽检,每周跑一次评估看板。Faithfulness 最关键,低于 0.9 就得优化 Prompt 或检索质量。"

📚 参考:RAGAS:RAG 评估框架官方文档