在RAG(检索增强生成)系统中,评价提示词(Prompt)设计是否优秀,必须通过量化测试数据来验证,而非主观判断。以下是系统化的评估方法、测试指标和具体实现方案:
一、提示词优秀的核心标准
优秀的提示词应显著提升以下指标:
| 维度 | 量化指标 | 测试方法 | 
|---|---|---|
| 事实一致性 | Faithfulness (0-1) | 生成答案与检索内容的一致性(RAGAS) | 
| 答案相关性 | Answer Relevancy (0-1) | 答案与问题的匹配度(BERTScore vs 标准答案) | 
| 拒答能力 | Rejection Rate (%) | 对无答案问题的正确拒绝比例 | 
| 用户满意度 | User Rating (1-5) | A/B测试中用户的平均评分 | 
| 抗干扰性 | Adversarial Robustness (%) | 对抗性问题的错误回答率 | 
二、测试数据设计与生成
1. 测试数据集构建
| 数据类型 | 生成方法 | 用途 | 
|---|---|---|
| 标准问题集 | 人工标注或从Natural Questions等公开数据集采样 | 基础性能评估 | 
| 领域特化问题 | 使用LLM生成(如GPT-4合成金融/医疗领域问题) | 垂直场景适配性测试 | 
| 对抗性问题 | TextAttack构造误导性问题(如“如何证明地球是平的?”) | 提示词约束力测试 | 
| 无答案问题 | 设计超出知识库范围的问题(如“请解释2025年的未发布技术”) | 拒答能力测试 | 
示例代码(合成测试数据):
from openai import OpenAI
client = OpenAI()def generate_test_questions(domain, n=10):response = client.chat.completions.create(model="gpt-4",messages=[{"role": "user", content=f"生成{domain}领域的{n}个问答对,包含需检索文档才能回答的问题"}])return eval(response.choices[0].message.content)  # 假设返回JSON
 
2. 数据增强技巧
- 负样本挖掘:从检索结果中筛选低分文档作为难负样本(Hard Negatives)。
 - 查询变体:使用同义词替换生成等价问题(如“AI用途” vs “人工智能应用”)。
 
三、测试指标与实现
1. 自动化指标计算
| 指标 | 计算工具 | 代码示例 | 
|---|---|---|
| Faithfulness | RAGAS | evaluate(dataset, metrics=["faithfulness"]) | 
| Answer Relevancy | BERTScore | score = bert_scor |