架构总览
架构总览
相关源文件
本章引用的主要源码文件:
argilla-frontend/CHANGELOG.mdargilla-frontend/components/features/annotation/container/questions/form/span/EntityLabelSelection.component.vueargilla-frontend/components/features/annotation/settings/Validation.vueargilla-frontend/components/features/dataset-creation/configuration/DatasetConfigurationForm.vueargilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationFieldSelector.vueargilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationLabels.vueargilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationQuestion.vueargilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationRating.vueargilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationSpan.vueargilla-frontend/package.jsonargilla-frontend/translation/de.jsargilla-frontend/translation/en.jsargilla-frontend/translation/es.jsargilla-frontend/v1/domain/entities/hub/DatasetCreation.test.tsargilla-frontend/v1/domain/entities/hub/QuestionCreation.tsargilla-frontend/v1/domain/entities/hub/Subset.tsargilla-server/CHANGELOG.mdargilla-server/src/argilla_server/_version.pyargilla-v1/src/argilla_v1/_version.pyargilla/CHANGELOG.mdargilla/src/argilla/__init__.pyargilla/src/argilla/_version.pydocs/_source/_common/tabs/argilla_install_python.mddocs/_source/community/contributing.mddocs/_source/community/developer_docs.mddocs/_source/community/migration-rubrix.mddocs/_source/getting_started/installation/deployments/docker.mddocs/_source/getting_started/installation/deployments/docker_compose.mddocs/_source/getting_started/installation/deployments/python.mddocs/_source/reference/cli.mddocs/_source/reference/notebooks.rstdocs/migration-rubrix.mddocs/template.ipynb
目的与范围
本文档提供 Argilla 架构的高层概述,解释主要组件、它们之间的交互以及系统中的数据流。它从技术角度阐述了 Argilla 如何作为数据标注和 AI 模型改进平台运行。如需了解使用或与单个组件交互的更多具体信息,请参考其他维基页面,例如 Argilla SDK、Argilla 服务器 和 Argilla 前端。
核心系统组件
高层架构
Argilla 系统由三个主要组件组构成:
来源: argilla/CHANGELOG.md argilla-server/CHANGELOG.md docs/_source/community/developer_docs.md
Argilla Python SDK
Argilla SDK 是平台的主要编程接口。它使用户能够创建和管理数据集、记录日志以及检索已标注的数据。SDK 作为 Argilla 服务器 REST API 的客户端运行。
来源: argilla/src/argilla/__init__.py argilla/src/argilla/_version.py
Argilla 服务器
Argilla 服务器的核心基于 FastAPI 构建。它提供 RESTful API 接口用于管理所有 Argilla 资源,并处理认证、授权和业务逻辑。
来源: argilla-server/src/argilla_server/_version.py argilla-server/CHANGELOG.md
数据库
Argilla 使用关系型数据库存储数据集、记录、用户、工作区和标注的元数据:
- SQLite - 默认内置选项,主要用于开发
- PostgreSQL - 推荐用于生产部署
数据库存储用户账户、工作区、数据集配置和标注元数据。
来源: docs/_source/community/developer_docs.md
搜索引擎
Argilla 使用搜索引擎作为其向量数据库,用于存储记录数据并支持以下功能:
- 向量相似性搜索
- 全文文档搜索
- 结构化查询过滤
支持的引擎:
- Elasticsearch(版本 ≥8.5)
- OpenSearch(版本 ≥2.4)
来源: docs/_source/community/developer_docs.md docs/_source/getting_started/installation/deployments/docker.md
Redis 队列
Redis 用作消息代理和队列系统,用于管理后台任务,例如:
- 重新索引数据集和记录
- 处理 Webhook 事件
- 运行导入/导出操作
来源: docs/_source/community/developer_docs.md argilla-server/CHANGELOG.md
Argilla 前端
Argilla UI 使用 Vue.js 和 Nuxt 构建,提供现代化的 Web 界面,用于数据标注、数据集管理和其他平台功能。
来源: argilla-frontend/package.json argilla-frontend/CHANGELOG.md
核心数据模型
Argilla 的数据模型围绕数据集、记录、响应和建议展开:
来源: argilla-frontend/v1/domain/entities/hub/Subset.ts argilla-frontend/v1/domain/entities/hub/QuestionCreation.ts
关键实体关系
- 数据集:包含配置设置和记录集合
- 设置:定义数据集的结构,包括字段、问题和元数据
- 字段:表示向用户展示的数据字段(文本、图片、对话或自定义)
- 问题:表示标注任务(标签选择、评分、排序等)
- 记录:待标注的单个数据项,包含字段、元数据和向量
- 响应:用户对记录上特定问题的标注
- 建议:预先计算的答案建议(通常来自 AI 模型)
标注工作流
Argilla 中典型的标注工作流包括创建数据集、记录日志、标注数据和导出结果:
来源: argilla-frontend/components/features/dataset-creation/configuration/DatasetConfigurationForm.vue argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationQuestion.vue argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationRating.vue argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationLabels.vue argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationSpan.vue
部署架构
Argilla 提供多种部署选项,以适应不同的需求和环境:
来源: docs/_source/getting_started/installation/deployments/python.md docs/_source/getting_started/installation/deployments/docker.md docs/_source/getting_started/installation/deployments/docker_compose.md
部署选项
- Python + 本地依赖:安装 Python 包并单独设置依赖项
- Docker Compose:使用单个命令启动完整堆栈
- Kubernetes:使用 Helm Chart 部署到生产环境
- Hugging Face Spaces:快速部署协作标注项目
系统交互与通信
Argilla 中的组件主要通过基于 HTTP 的 REST API 进行通信:
来源: argilla/CHANGELOG.md argilla-server/CHANGELOG.md
关键交互路径:
- SDK → 服务器:通过 REST API 调用创建/管理资源
- CLI → 服务器:通过 REST API 执行管理命令
- 前端 → 服务器:通过 REST API 发送用户界面请求
- 服务器 → 数据库:元数据存储和检索
- 服务器 → 搜索引擎:记录存储、搜索和检索
- 服务器 → Redis:后台任务调度和执行
服务器系统架构
Argilla 服务器采用分层架构模式:
来源: argilla-server/CHANGELOG.md docs/_source/community/developer_docs.md
结论
Argilla 的架构旨在提供一个灵活、可扩展的平台,用于数据标注和 AI 模型改进。该系统采用客户端-服务器模型,各组件之间职责清晰分离。模块化设计支持多种部署选项,并能与各种 AI 工作流集成,使其能够适应不同的使用场景和环境。
组件间通信广泛使用 REST API,为客户端库、服务器端逻辑和前端 UI 之间提供了清晰的接口。这种架构使 Argilla 能够支持广泛的标注任务和工作流,同时保持一致且可靠的用户体验。