在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 |