# 開發者:生成式 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)


## 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和基於代理的系統評估方面更強