# 開發者:生成式 AI 評測工具探索 :::success [The Best 10 LLM Evaluation Tools in 2024](https://www.deepchecks.com/best-llm-evaluation-tools/) 更新時間:2024-07-01 ::: ## Deepchecks [Deepchecks](https://www.deepchecks.com/llm-evaluation/) | [GitHub](https://github.com/deepchecks/deepchecks) | [Quickstart](https://docs.deepchecks.com/stable/nlp/auto_tutorials/quickstarts/index.html) - 商業模式同時提供開源和SaaS服務 開源版本 提供基礎的ML測試和驗證功能 完全免費使用 可在GitHub上獲取源碼 已有超過50萬次下載 企業版SaaS服務 提供進階功能和管理介面 包含以下額外功能: - 協作功能 - 安全性功能 - 多模型同時測試 - 進階使用者權限管理 - 專業儀表板 ## DeepEval [DeepEval](https://github.com/confident-ai/deepeval) | [Custom model 設定](https://docs.confident-ai.com/docs/metrics-introduction#using-a-custom-llm?utm_source=GitHub) | [G-Eval*1](https://docs.confident-ai.com/docs/metrics-llm-evals) - 著重在評測的設計和算法 *1 G-Eval是一個用於評估LLM(大型語言模型)輸出品質的框架,具有以下主要特點: 核心技術 使用思維鏈(Chain of Thought, CoT)和表單填充範式 以強大通用型LLM作為基礎模型 可評估文本摘要和對話生成等任務 工作原理 # 評估流程 首先向LLM提供任務介紹和評估標準 生成詳細的評估步驟(CoT) 使用表單填充方式進行評估 輸出1-5分的評分 # 評分機制 不同於GPTScore使用條件機率 直接使用填表範式執行評估 可使用輸出評級標記的機率來改進最終指標 優勢 在摘要任務上達到0.514的Spearman相關性,遠優於其他方法 提供可讀的人類語言解釋 可根據自定義標準評估LLM輸出 限制 可能對LLM生成的文本存在偏見 某些評估任務中分數分布可能集中在特定數值 LLM通常只輸出整數分數,即使要求小數值 ## LLMbench [LLMbench](https://llmbench.ai/agent) - 著重在提供評測資料 | 研究論文 | [中文模型能力評測對比GPT-4](https://llmbench.ai/align/data) - [AgentBench](https://llmbench.ai/agent) | [Paper](https://arxiv.org/pdf/2308.03688) - [SafetyBench](https://arxiv.org/abs/2309.07045) - [AlignBench: Benchmarking Chinese Alignment of Large Language Models](https://llmbench.ai/align) ![eval_1](https://hackmd.io/_uploads/ryR903mZyx.png) ![img2](https://hackmd.io/_uploads/SJbXA2QW1e.png) ## Ragas [Ragas](https://docs.ragas.io/en/stable/) | [HackMD](https://hackmd.io/@yuhsintsao/Byfd_DmbJg) Ragas 是一個專門用於評估LLM應用(特別是RAG系統)的開源評估框架,具有以下特點: 核心功能 無參考評估 不需要人工標註的ground truth標籤 利用LLM進行自動評估 節省評估成本和時間 評估要素 需要提供以下資訊進行評估: question: 用戶查詢輸入 answer: RAG系統生成的答案 contexts: 從知識庫檢索的上下文 ground_truths: (可選)問題的標準答案 評分機制 所有指標均標準化到0-1範圍: 0表示最差表現 1表示最佳表現 分數越高代表性能越好 :::spoiler 評估指標 **1. Faithfulness (忠實度)** Parameters: answer, context Range: [0, 1] 定義: 評估生成答案與檢索上下文的一致性,確保答案不包含上下文以外的資訊。 計算方法: 將答案分解為多個陳述句 對每個陳述句評估是否可從上下文推導 分數 = 可從上下文推導的陳述句數量 / 總陳述句數量 **2. Answer Relevance (答案相關性)** Parameters: question, context, answer Range: [-1, 1] (typically between 0 and 1) 定義: 衡量生成答案與原始問題的相關程度。計算方法: 從答案和上下文生成偽問題 計算偽問題與原始問題的語義相似度 取平均相似度分數 **3. Context Precision (上下文精確度)** Parameters: question, ground_truth, contexts Range: [0, 1] 定義: 評估檢索到的上下文中有多少是真正相關的。 計算方法: 評估每個檢索片段與問題的相關性 分數 = 相關片段數 / 總檢索片段數 **4. Context Recall (上下文召回率)** Parameters: ground_truth, context Range: [0, 1] 定義: 評估檢索系統找回相關資訊的完整性。 計算方法: 將標準答案(Ground Truth)拆分為句子 檢查每個句子是否能在檢索上下文中找到 分數 = 找到的相關句子數 / 標準答案總句子數 **5. Context Entities Recall (實體召回率)** Parameters: ground_truths, contexts Range: [0, 1] 定義: 評估重要實體的召回情況。 計算方法: 從標準答案中提取關鍵實體 檢查這些實體在檢索上下文中的出現情況 分數 = 召回的實體數 / 標準答案中的總實體數 **6. Answer Semantic Similarity (答案相似度)** Parameters: ground_truth, answer Range: [0, 1] 定義: 衡量生成答案與標準答案的相似程度。 計算方法: 使用語義相似度模型計算生成答案和標準答案的相似度 可使用多種相似度算法(如餘弦相似度、BERT相似度等) **7. Answer Correctness (答案正確性)** Parameters: ground_truth, answer Optional: threshold (for binary output) Range: [0, 1] 定義: 評估生成答案的準確性。 計算方法: 使用LLM比較生成答案與標準答案 評估關鍵事實的正確性 給出0-1之間的分數 **8. Aspect Critique** Parameters: answer Range: Binary (0 or 1) Optional: custom aspect definitions 定義: 是一個使用LLM進行特定方面評估的指標,其計算過程如下: 步驟1: 定義評估準則 設定特定的評估面向(如maliciousness、harmfulness等) 為每個面向定義明確的評估問題 步驟2: 多次LLM評估 對同一個回答進行3次獨立的LLM評估 每次評估都會得到二元結果(是/否) 步驟3: 多數決 採用多數投票機制決定最終結果 例如三次評估結果為: 第一次:是 第二次:否 第三次:是 最終結果為"是"(2票對1票) ::: 應用場景 RAG系統評估 生產環境監控 模型性能比較 系統優化指導 ## ChainForge [ChainForge](https://chainforge.ai/) | [Paper](https://arxiv.org/abs/2309.09128) | [Try out](https://chainforge.ai/play/) 是一個開源的視覺化提示詞工程環境,具有以下主要特點: 核心功能 多模型評估 同時查詢多個LLM模型 比較不同提示詞變體的效果 測試相同模型在不同參數設定下的表現 視覺化評估工具 自動繪製結果圖表 跨模型和參數的響應質量比較 支援代碼或基於LLM的評分器 使用方式 本地安裝 ```bash pip install chainforge chainforge serve ``` 線上版本 可在 chainforge.ai/play 使用 提供實驗分享功能 需要每次設置API密鑰 優勢 無需編程即可評估提示詞的穩健性 支援多輪對話測試 提供模板化聊天訊息功能 可視化比較不同模型和參數設定的結果2 ## Guardrails AI [Guardrails AI](https://www.guardrailsai.com/) | [GitHub](https://github.com/guardrails-ai/guardrails) 是一個Python框架,用於建立可靠的AI應用程序,具有以下主要特點: 核心功能 輸入/輸出保護 檢測、量化和緩解特定類型的風險 運行輸入/輸出守衛來攔截LLM的輸入和輸出 提供預建的風險度量指標(validators) 結構化數據生成 幫助從LLM生成結構化數據 確保輸出符合預定義的格式和標準 主要用途 安全保護 防止生成有害或不當內容 減少偏見和歧視 保護敏感數據和隱私 質量控制 確保AI輸出的準確性和可靠性 維護內容的相關性 防止幻覺和錯誤信息 實施方式 預防性護欄 在開發階段就考慮倫理因素 進行嚴格的測試和安全檢查 檢測性護欄 實時監控AI系統的異常行為 使用異常檢測預防欺詐 糾正性護欄 當發現問題時進行修復 包含系統隔離和分析程序 ## OpenPipe [OpenPipe](https://openpipe.ai/) 是一個專注於LLM微調和部署的平台,具有以下主要特點: - (TBA : 可以登入測試) 核心功能 模型微調 將昂貴的大型模型(如GPT-4)轉換為更小且專門化的模型 支援GPT 3.5、Mistral和Llama 2等模型的微調 可將微調後的模型下載或在平台上託管 資料收集與管理 自動記錄LLM請求和回應 支援從OpenAI相容的JSONL檔案匯入資料 提供強大的內建過濾器查詢日誌 主要優勢 成本效益 可將推理成本降低25倍 有用戶報告節省高達10倍成本 易於整合 與OpenAI SDK相容(Python和TypeScript) 只需更改模型名稱即可切換不同模型 提供自動擴展的託管端點 使用案例 政府法規資訊提取和翻譯 YouTube影片字幕分類和過濾 客服請求智能路由 自定義語音機器人開發 ## FMBench [FMBench](https://aws-samples.github.io/foundation-model-benchmarking-tool/) | [GitHub](https://github.com/aws-samples/foundation-model-benchmarking-tool) - [Replacing Judges with Juries: Evaluating LLM Generations with a Panel of Diverse Models](https://arxiv.org/abs/2404.18796) ## More [Prompt Flow](https://microsoft.github.io/promptflow/) - (TBA : 如果透過 Bedrock Access Gateway 使用 Azure Prompt Flow) [fmeval](https://github.com/aws/fmeval) | [Algorithms]() | [AWS architecture](https://github.com/aws-samples/build-an-automated-large-language-model-evaluation-pipeline-on-aws) - AWS --- [G-Eval](https://arxiv.org/pdf/2303.16634) | [DeepEval-G-Eval](https://docs.confident-ai.com/docs/metrics-llm-evals) [GPTScore](https://arxiv.org/abs/2302.04166) [τ -bench: A Benchmark for Tool-Agent-User Interaction in Real-World Domains](https://arxiv.org/pdf/2406.12045) [OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments](https://os-world.github.io/) [How is ChatGPT's behavior changing over time?](https://arxiv.org/abs/2307.09009) [GPTScore: Evaluate as You Desire](https://arxiv.org/abs/2302.04166) --- # DeepEval 與 RAGAS 指標比較 ## 比較表 | 指標類別 | DeepEval | RAGAS | 是否共用 | 描述 | |---------|-----------|--------|----------|------| | 上下文精確度 | ✓ | ✓ | 是 | 衡量提供的上下文與生成回應的相關程度 | | 上下文召回率 | ✓ | ✓ | 是 | 衡量回應是否完整捕捉上下文中的所有相關信息 | | 答案相關性/回應相關性 | ✓ | ✓ | 是 | 評估回應是否恰當地回答給定的問題 | | 忠實度 | ✓ | ✓ | 是 | 衡量回應是否與提供的上下文保持一致 | | 幻覺檢測 | ✓ | ✘ | 否 | DeepEval特有:檢測模型是否生成虛假或未經支持的信息 | | 偏見檢測 | ✓ | ✘ | 否 | DeepEval特有:衡量回應中的不公平偏好或偏見 | | 毒性檢測 | ✓ | ✘ | 否 | DeepEval特有:評估回應中的有害或冒犯性內容 | | 工具正確性 | ✓ | ✓ | 是 | 評估工具/API使用的準確性(在RAGAS中稱為"工具調用準確性") | | 實體召回率 | ✘ | ✓ | 否 | RAGAS特有:衡量對上下文中重要實體的覆蓋程度 | | 噪音敏感度 | ✘ | ✓ | 否 | RAGAS特有:評估模型對輸入噪音的穩健性 | | 代理目標準確性 | ✘ | ✓ | 否 | RAGAS特有:衡量代理是否達成預期目標 | | 主題遵循度 | ✘ | ✓ | 否 | RAGAS特有:評估回應是否緊扣主題 | ## 詳細說明 ### 共同指標 1. **上下文精確度與召回率** - 精確度:衡量使用的上下文是否相關 - 召回率:評估是否使用了所有重要的上下文信息 - 重要性:用於評估RAG系統和基於上下文的回應 2. **答案/回應相關性** - 評估回應是否直接針對問題 - 檢查答案的完整性和適當性 - 重要性:確保回應有意義且切中要點 3. **忠實度** - 衡量與提供的上下文的事實一致性 - 檢查回應聲明是否與源信息一致 - 重要性:防止虛構或錯誤信息 4. **工具正確性** - 評估外部工具和API的正確使用 - 檢查工具調用是否恰當且準確 - 重要性:用於代理系統和工具增強型回應 ### DeepEval特有指標 1. **幻覺檢測** - 檢測上下文中未支持的虛構信息 - 幫助識別虛假或編造的細節 - 重要性:維持回應準確性 2. **偏見檢測** - 識別不公平的偏好或偏見 - 幫助確保回應的倫理性和平衡性 - 重要性:確保公平性和倫理考量 3. **毒性檢測** - 衡量有害或冒犯性內容 - 幫助維持適當的回應語氣 - 重要性:確保內容安全性和適當性 ### RAGAS特有指標 1. **實體召回率** - 衡量對重要實體的捕捉程度 - 追踪關鍵信息的保留 - 重要性:確保信息完整性 2. **噪音敏感度** - 評估對噪音輸入的回應穩定性 - 測試模型的穩健性 - 重要性:系統可靠性 3. **代理目標準確性** - 衡量任務完成的成功程度 - 評估代理是否達成預期目標 - 重要性:用於基於代理的系統 4. **主題遵循度** - 評估回應是否保持主題相關性 - 防止主題偏離 - 重要性:確保對話焦點 ## 主要差異 1. **關注重點** - DeepEval:強調安全性、倫理性和可靠性 - RAGAS:專注於技術準確性和信息處理 2. **覆蓋範圍** - DeepEval:更廣泛地覆蓋安全性和倫理問題 - RAGAS:更詳細的技術和信息處理指標 3. **使用場景** - DeepEval:更適合通用評估和安全性檢查 - RAGAS:在RAG和基於代理的系統評估方面更強