在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