在RAG(检索增强生成)系统中,模型精准测试需要覆盖从检索到生成的全链路评估,确保各模块在真实场景中的可靠性。以下是系统化的测试思路与实现方案:
一、测试目标分层
层级 | 测试重点 | 示例指标 |
---|
检索层 | 召回率、排名准确性 | Recall@K、MRR、NDCG@5 |
生成层 | 事实性、流畅性、相关性 | FactScore、BERTScore、ROUGE-L |
端到端层 | 整体问答准确性、用户体验 | QA Accuracy、平均响应时间、用户满意度 |
边界层 | 对抗性输入、异常处理 | 错误回答率、拒绝率 |
二、测试数据设计
1. 数据分类与构造
数据类型 | 构造方法 | 用途 |
---|
标准测试集 | 使用公开数据集(如Natural Questions、HotpotQA) | 基线性能评估 |
领域测试集 | 人工标注或LLM生成领域相关问题(如金融、医疗) | 垂直场景适配性测试 |
对抗测试集 | 设计误导性问题(如“地球是平的证据有哪些?”) | 抗干扰能力验证 |
长尾测试集 | 收集低频但关键的问题(如企业内部的冷门术语) | 覆盖率测试 |
多模态测试集 | 包含表格、图片链接的查询(如“解析附件财报中的毛利率趋势”) | 多模态支持测试 |
2. 数据增强技巧
三、检索模块精准测试
1. 核心测试指标
指标 | 计算公式/说明 | 合格标准 |
---|
Recall@K | 前K个结果中覆盖正确答案的比例 | K=5时 ≥0.85 |
MRR | 首个正确答案排名的倒数均值 | ≥0.7(1.0为完美) |
NDCG@K | 考虑排名权重的相关性评分(适合多等级标注) | ≥0.8 |
检索延迟 | P95延迟(毫秒) | ≤500ms(端到端) |
2. 测试方法
- 人工标注评估:随机抽样100个查询,标注检索结果的相关性(0-3分)。
- 自动化测试脚本:
from sklearn.metrics import ndcg_score
true_relevance = [3, 2, 1, 0, 0]
pred_scores = [0.9, 0.8, 0.7, 0.6, 0.5]
ndcg = ndcg_score([true_relevance], [pred_scores], k=5