评估与排行榜(中文译文)
原始 DeepWiki 页面:https://deepwiki.com/open-webui/open-webui/18.2-evaluations-and-leaderboard
翻译时间:2026-06-09T16:12:19.385Z
翻译模型:deepseek-chat
原文字符数:9607
项目:Open WebUI (open-webui)
---
评估与排行榜
相关源文件
以下文件为本 wiki 页面的生成提供了上下文:
backend/open_webui/models/feedbacks.pybackend/open_webui/routers/evaluations.pysrc/lib/apis/evaluations/index.tssrc/lib/components/admin/Evaluations.sveltesrc/lib/components/admin/Evaluations/FeedbackModal.sveltesrc/lib/components/admin/Evaluations/Feedbacks.sveltesrc/lib/components/admin/Evaluations/Leaderboard.sveltesrc/lib/components/admin/Evaluations/LeaderboardModal.sveltesrc/lib/components/admin/Evaluations/ModelActivityChart.sveltesrc/lib/components/admin/Settings.sveltesrc/lib/components/admin/Users.sveltesrc/lib/components/icons/DocumentArrowDown.sveltesrc/routes/(app)/admin/evaluations/+page.svelte/admin/evaluations/+page.svelte)- [src/routes/(app)/admin/evaluations/[tab]/+page.svelte](src/routes/(app)/admin/evaluations/[tab]/+page.svelte)
src/routes/(app)/admin/users/+page.svelte/admin/users/+page.svelte)- [src/routes/(app)/admin/users/[tab]/+page.svelte](src/routes/(app)/admin/users/[tab]/+page.svelte)
Open WebUI 中的评估系统提供了一个结构化框架,用于通过用户反馈、并排比较(竞技场)和自动排名来评估模型性能。该系统最终生成一个模型排行榜,该排行榜使用基于 Elo 的评分,根据人类偏好和主题相关性对模型进行排名。
系统架构与数据流
评估系统横跨前端管理面板、FastAPI 后端路由器和持久化层。反馈在消息级别收集,并聚合为全局统计信息。
评估数据流
下图展示了模型评估从用户反馈到排行榜更新的完整生命周期,包括"自然语言空间"到"代码实体空间"的映射。
模型评估生命周期与实体映射
graph TD
User["用户界面"] -- "提交反馈" --> FeedbackAPI["/api/v1/evaluations/feedback"]
FeedbackAPI -- "insert_new_feedback()" --> FeedbackTable["FeedbackTable (SQLAlchemy)"]
FeedbackTable -- "保存到" --> FeedbacksDB[("feedback 表")]
Admin["管理员用户"] -- "访问排行榜" --> LeaderboardAPI["/api/v1/evaluations/leaderboard"]
LeaderboardAPI -- "get_feedback_items()" --> FeedbackTable
LeaderboardAPI -- "计算 Elo" --> EloCalc["_calculate_elo()"]
EloCalc -- "返回" --> LeaderboardEntry["LeaderboardEntry (Pydantic)"]
LeaderboardEntry -- "渲染" --> LeaderboardUI["Leaderboard.svelte"]
Search["主题搜索"] -- "查询字符串" --> SimCalc["_compute_similarities()"]
SimCalc -- "SentenceTransformer" --> EmbeddingModel["_get_embedding_model()"]
EmbeddingModel -- "权重" --> EloCalc
来源:backend/open_webui/routers/evaluations.py:72-119,backend/open_webui/routers/evaluations.py:149-191,backend/open_webui/models/feedbacks.py:142-170,src/lib/components/admin/Evaluations/Leaderboard.svelte:44-74
排行榜实现
排行榜根据模型在用户评估中的表现进行排名。它主要通过 Leaderboard.svelte 组件 src/lib/components/admin/Evaluations/Leaderboard.svelte:1-103 和 evaluations.py 路由器 backend/open_webui/routers/evaluations.py:29-119 进行管理。
Elo 评分计算
后端实现了标准的 Elo 评分系统,用于确定模型的相对强弱 backend/open_webui/routers/evaluations.py:32-44。
- 初始评分:每个模型默认起始评分为 1000.0
backend/open_webui/routers/evaluations.py:91。 - 比较逻辑:当用户提供反馈时(Rating=1 表示胜,Rating=-1 表示负),系统将该模型与其
sibling_model_ids进行比较backend/open_webui/routers/evaluations.py:94-104。 - K 因子:使用标准 K 因子 32 来控制评分波动性
backend/open_webui/routers/evaluations.py:86。 - 公式:系统根据评分差计算预期结果,并相应更新胜者和对手的评分
backend/open_webui/routers/evaluations.py:107-110。
主题特定排名(语义重排)
系统支持基于与搜索查询的语义相似度对排行榜进行动态重排 backend/open_webui/routers/evaluations.py:45-52。
- 嵌入模型:默认使用
TaylorAI/bge-micro-v2(可通过AUXILIARY_EMBEDDING_MODEL配置)backend/open_webui/routers/evaluations.py:56。 - 相似度加权:
_compute_similarities函数计算搜索查询与每条反馈关联标签之间的余弦相似度backend/open_webui/routers/evaluations.py:149-191。 - 加权 Elo:该相似度分数在 Elo 更新函数中用作
weight,使得与特定主题相关的反馈对特定排行榜视图产生更大影响backend/open_webui/routers/evaluations.py:102。
来源:backend/open_webui/routers/evaluations.py:54-119,backend/open_webui/routers/evaluations.py:149-191,src/lib/components/admin/Evaluations/Leaderboard.svelte:114-123
反馈收集与管理
反馈是评估的原始数据来源。每条记录都包含元数据和对话状态的快照。
数据库模式:反馈
Feedback 类定义了 feedback 表中用户评估的持久化存储结构 backend/open_webui/models/feedbacks.py:22-32。
代码实体:Feedback 模式
classDiagram
class Feedback {
+String id
+String user_id
+BigInteger version
+String type
+JSON data
+JSON meta
+JSON snapshot
+BigInteger created_at
+BigInteger updated_at
}
class FeedbackForm {
+String type
+RatingData data
+dict meta
+SnapshotData snapshot
}
FeedbackTable -- Feedback : 管理
FeedbackForm -- Feedback : 映射到
来源:backend/open_webui/models/feedbacks.py:22-32,backend/open_webui/models/feedbacks.py:101-106
反馈操作
- 创建:通过
createNewFeedbackAPI 调用提交反馈src/lib/apis/evaluations/index.ts:275-304。 - 详情查看:
FeedbackModal.svelte组件通过getFeedbackById按 ID 检索特定反馈src/lib/components/admin/Evaluations/FeedbackModal.svelte:6,包括聊天快照,以便管理员查看被评分的具体提示和响应src/lib/components/admin/Evaluations/FeedbackModal.svelte:71-95。 - 筛选:管理员可以按
model_id筛选反馈,并按updated_at、rating或user排序src/lib/components/admin/Evaluations/Feedbacks.svelte:38-55。
管理界面与分析
评估系统已集成到管理面板中,提供用于高级排名和细粒度数据分析的工具。
评估选项卡
主评估界面(Evaluations.svelte)分为两个主要视图:
- 排行榜:显示排名模型及其 Elo 评分、胜/负计数和热门标签
src/lib/components/admin/Evaluations.svelte:111-112。 - 反馈:所有单独反馈提交的历史记录
src/lib/components/admin/Evaluations.svelte:113-114。
分析与可视化
- 模型历史:
LeaderboardModal.svelte使用getModelHistory获取时间序列性能数据src/lib/components/admin/Evaluations/LeaderboardModal.svelte:31-42。 - 活动图表:使用
ModelActivityChart.svelte组件可视化性能趋势,支持 30 天、1 年和全部时间视图src/lib/components/admin/Evaluations/LeaderboardModal.svelte:15-20。 - 热门标签:后端通过
_get_top_tags聚合每个模型最频繁的标签,帮助管理员了解模型的感知优势(例如"简洁"、"创意")backend/open_webui/routers/evaluations.py:122-146。
数据可移植性
系统支持导出反馈数据以供外部分析:
- JSON/CSV 导出:
Feedbacks.svelte组件通过exportAllFeedbacks提供导出完整反馈历史的处理程序src/lib/components/admin/Evaluations/Feedbacks.svelte:184-204。 - CSV 映射:
feedbacksToCsv函数将复杂的 JSON 元数据(如sibling_model_ids)展平为适合电子表格软件的格式src/lib/components/admin/Evaluations/Feedbacks.svelte:152-182。
来源:src/lib/components/admin/Evaluations.svelte:51-118,src/lib/components/admin/Evaluations/Feedbacks.svelte:152-204,backend/open_webui/routers/evaluations.py:122-146,src/lib/components/admin/Evaluations/LeaderboardModal.svelte:75-102