MODULE m2 · 8.0 HOURS
評估用文件語料庫策展
已完成 0%
LEARNING OBJECTIVES
本模組目標
- 理解 RAG 評估固定文件語料庫的重要性。
- 學習評估用文件數據的品質決定因素(準確性、多樣性、重複資料移除)。
- 掌握用於定量評估的文件-問題-答案配對(QA Pair)數據集建構策略。
- 學習防止數據洩漏(Data Leakage)的訓練/評估分割方法。
用於 RAG 評估的語料庫策劃
大型語言模型 (LLM) 在依賴其學習參數內的知識時存在幻覺的風險。檢索增強生成 (RAG) 透過允許模型即時存取外部知識來克服這些限制 [S2]。為了定量評估有效的 RAG 系統的可靠性,固定且可控的評估文件語料庫 (Fixed Evaluation Corpus) 至關重要。
1. 語料庫品質決定因素
- 準確性 (Factuality): 文件中的資訊必須是最新的且真實的。包含錯誤資訊的語料庫會導致生成錯誤的答案。
- 領域適用性: 應包含與要評估的實際服務環境相似的主題和詞彙。
- 重複資料刪除 (De-duplication): 如果相同資訊在多個文件中重複,會損害檢索結果的多樣性,並可能對評估統計數據造成偏差。
2. 構建 QA 評估資料集
僅憑文件語料庫無法進行評估。必須構建「文件-問題-答案」對,以測量檢索器是否檢索相關文件,以及生成器是否基於這些文件提供準確的答案。
- 問題生成: 使用 LLM 自動從文件中生成問題,或由領域專家直接撰寫。
- 答案定義: 必須明確指定作為答案依據的文件區段 (Chunk)。
3. 資料分割與完整性
為了評估集的可靠性,必須嚴格分割開發用 (Development Set) 和最終評估用 (Hold-out Test Set)。必須防止評估集中包含的問題直接包含在檢索目標文件中而導致的「資料洩漏」現象。
WORKED EXAMPLES
講解範例
- 範例 1:文件分塊 (Chunking) 策略。撰寫 Python 腳本的方法,以段落或語義單位分割文本,以避免在固定大小分割時上下文中斷。
- 範例 2:問題-答案資料結構。'{ 'question': '...', 'ground_truth': '...', 'context_chunk_id': '...' }' 格式的 JSON 物件生成範例。
LAB PROTOCOL
評估語料庫建置實作
- 1
取得要評估領域的開放授權文字檔 (.txt)。
- 2
使用 Python 編寫一個腳本,用於讀取文字檔並將其分塊。
- 3
為每個塊分配一個唯一識別碼 (ID),並記錄元數據 (標題、來源)。
- 4
從所編寫的塊中生成問題,並記錄作為答案依據的塊 ID,以構成 50 個 QA 對。
- 5
將整個語料庫以 8:2 的比例分割成開發集和測試集,並儲存。
安全檢查
- 評估語料庫中不應包含個人資訊的文件。
- 使用外部 API 時,設定請求數量上限以控制成本。
- 工作時產生的資料透過 Git 進行版本管理,以確保可重現性。
實驗繳交成果
- 已建置的文件語料庫檔案 (JSONL 格式)
- 包含問題和正確答案的 QA 資料集 (JSON 格式)
- 包含語料庫分割記錄的 Jupyter Notebook 檔案
ASSIGNMENT
完成基於領域的 RAG 資料集
繳交成果
評分標準
- 語料庫中重複塊的去除完成情況
- 測試集和開發集的資料洩漏檢查
- 答案依據的文件區段 (Chunk ID) 的準確映射情況
KNOWLEDGE CHECK
理解檢查
FIELD CHECK
完成標準
- 建立評估用文件語料庫(至少 100 個 chunk)完成
- 生成可驗證的 QA 資料集(至少 100 個問題)完成
- 確認遵守資料集分割政策
- 完成關於結果的同行審查或自我評估檢查清單
MODULE SOURCES
本模組參考資料
- Natural Language Processing with Deep Learning CS224N/Ling284web.stanford.edu · university