agentic_huge_data_base / wiki
页面 Argilla · 4.2 标注工作流·DeepWiki 中文全文译文

4.2 · 标注工作流(Annotation Workflows)

人工复核与反馈数据 · 聚焦本章的模块关系、源码依据与实现要点。

项目Argilla 章节4.2 状态全文译文 模块检索、召回与索引、接口与服务契约、界面与交互、评测、反馈与人工复核
源码线索
  • README.md
  • argilla-server/src/argilla_server/api/schemas/v1/suggestions.py
  • argilla/README.md
  • argilla/docs/assets/images/getting_started/dataset_configurator.png
  • argilla/docs/assets/images/how_to_guides/custom_field/3d_object_viewer.png
  • argilla/docs/assets/images/how_to_guides/custom_field/images_in_two_columns.png
  • argilla/docs/assets/images/how_to_guides/custom_field/metadata_table.png
  • argilla/docs/community/adding_language.md
  • argilla/docs/getting_started/faq.md
  • argilla/docs/getting_started/how-to-configure-argilla-on-huggingface.md
模块标签
  • 检索、召回与索引
  • 接口与服务契约
  • 界面与交互
  • 评测、反馈与人工复核
  • 文档对象与元数据

章节正文

标注工作流

标注工作流

相关源文件

本章引用的主要源码文件:

  • README.md
  • argilla-server/src/argilla_server/api/schemas/v1/suggestions.py
  • argilla/README.md
  • argilla/docs/assets/images/getting_started/dataset_configurator.png
  • argilla/docs/assets/images/how_to_guides/custom_field/3d_object_viewer.png
  • argilla/docs/assets/images/how_to_guides/custom_field/images_in_two_columns.png
  • argilla/docs/assets/images/how_to_guides/custom_field/metadata_table.png
  • argilla/docs/community/adding_language.md
  • argilla/docs/getting_started/faq.md
  • argilla/docs/getting_started/how-to-configure-argilla-on-huggingface.md
  • argilla/docs/getting_started/how-to-deploy-argilla-with-docker.md
  • argilla/docs/getting_started/quickstart.md
  • argilla/docs/how_to_guides/annotate.md
  • argilla/docs/how_to_guides/custom_fields.md
  • argilla/docs/how_to_guides/dataset.md
  • argilla/docs/how_to_guides/distribution.md
  • argilla/docs/how_to_guides/import_export.md
  • argilla/docs/how_to_guides/index.md
  • argilla/docs/how_to_guides/query.md
  • argilla/docs/how_to_guides/record.md
  • argilla/docs/index.md
  • argilla/docs/reference/argilla/client.md
  • argilla/docs/reference/argilla/datasets/dataset_records.md
  • argilla/docs/reference/argilla/records/metadata.md
  • argilla/docs/reference/argilla/records/records.md
  • argilla/docs/reference/argilla/records/responses.md
  • argilla/docs/reference/argilla/records/suggestions.md
  • argilla/docs/reference/argilla/search.md
  • argilla/docs/reference/argilla/settings/fields.md
  • argilla/docs/tutorials/image_classification.ipynb
  • argilla/docs/tutorials/image_preference.ipynb
  • argilla/docs/tutorials/index.md
  • argilla/docs/tutorials/text_classification.ipynb
  • argilla/docs/tutorials/token_classification.ipynb
  • argilla/mkdocs.yml
  • argilla/src/argilla/_models/_dataset_progress.py
  • argilla/src/argilla/settings/_question.py

本页面提供了 Argilla 中标注工作流的全面指南,解释了不同的标注界面、如何在团队成员之间分配标注任务以及如何跟踪进度。关于创建和管理数据集的信息,请参阅创建和管理数据集。关于查询和过滤数据的信息,请参阅搜索和查询数据

标注工作流总览

Argilla 中的标注工作流遵循以下主要步骤:

  1. 数据集创建:定义包含字段和问题的数据集
  2. 记录添加:向数据集添加记录
  3. 标注:通过用户界面标注记录
  4. 进度跟踪:监控完成状态
  5. 导出:导出已标注的数据集用于模型训练
Argilla · 标注工作流总览 · 图 1
Argilla · 标注工作流总览 · 图 1

来源: argilla/docs/how_to_guides/annotate.md argilla/docs/tutorials/text_classification.ipynb argilla/docs/tutorials/token_classification.ipynb

标注界面

Argilla 的标注界面设计灵活且高效,提供两种主要的查看模式:

聚焦视图

默认视图一次只显示一条记录,允许标注者集中精力处理每条记录。此视图适用于:

  • 包含多个问题的复杂数据集
  • 需要仔细关注的详细文本或图像
  • 偏好顺序检查的场景

!聚焦视图

批量视图

以垂直列表形式同时显示多条记录。此视图针对以下场景进行了优化:

  • 快速标注大量记录
  • 获取数据集概览
  • 有效应用过滤器和搜索
  • 批量标记相似项目

!批量视图

Argilla · 批量视图 · 图 2
Argilla · 批量视图 · 图 2

来源: argilla/docs/how_to_guides/annotate.md

记录状态生命周期

在标注过程中,Argilla 中的记录会经历各种状态:

状态描述可转换至
待处理没有响应的记录草稿、已提交、已丢弃
草稿有部分响应的记录已提交、已丢弃
已提交完全标注的记录草稿、已丢弃
已丢弃被拒绝的记录草稿、已提交
Argilla · 记录状态生命周期 · 图 3
Argilla · 记录状态生命周期 · 图 3

来源: argilla/docs/how_to_guides/annotate.md

键盘快捷键

Argilla 用户界面提供了键盘快捷键,以提高标注效率:

操作按键
提交响应Enter
保存为草稿Ctrl+S(Mac 上为 Cmd+S
丢弃记录Backspace
在问题之间移动 / 方向键
选择标签123
在记录之间移动 / 方向键
激活文本区域Shift+Enter
退出文本区域Esc

来源: argilla/docs/how_to_guides/annotate.md

任务分配

Argilla 提供了在团队成员之间高效分配标注任务的功能。这对于需要多个标注者的大型数据集尤其有用。

配置任务分配

任务分配通过创建数据集时的 TaskDistribution 设置进行配置:

# 配置任务分配的示例
settings = rg.Settings(
    fields=[rg.TextField(name="text")],
    questions=[rg.LabelQuestion(name="label", labels=["positive", "negative"])],
    distribution=rg.TaskDistribution(min_submitted=2)  # 每条记录需要 2 个标注
)
Argilla · 配置任务分配 · 图 4
Argilla · 配置任务分配 · 图 4

来源: argilla/docs/how_to_guides/dataset.md argilla/docs/how_to_guides/distribution.md argilla/src/argilla/settings/_task_distribution.py

进度跟踪

Argilla 提供了内置的进度跟踪功能,用于监控标注过程:

  1. 数据集进度条:显示数据集的整体完成情况
  2. 个人进度面板:显示单个标注者的统计信息

您还可以通过 Python SDK 以编程方式跟踪进度:

# 获取进度统计信息
progress = dataset.progress

# 检查整体进度
completion_percentage = progress.completion_percentage
total_pending = progress.pending_records
total_completed = progress.completed_records

# 检查特定用户的进度
for user_progress in progress.users:
    print(f"用户:{user_progress.user.username}")
    print(f"已提交:{user_progress.submitted}")
    print(f"待处理:{user_progress.pending}")

来源: argilla/docs/how_to_guides/distribution.md argilla/docs/how_to_guides/annotate.md

高级标注功能

使用模型建议

Argilla 支持向记录添加模型生成的建议,以加快标注过程。建议在用户界面中会显示一个闪烁图标(✨):

# 向记录添加建议
record = rg.Record(
    fields={"text": "这是一个示例文本"},
    suggestions=[
        rg.Suggestion(
            question_name="label",
            value="positive",
            score=0.95,
            agent="model_name"
        )
    ]
)
dataset.records.log([record])
Argilla · 使用模型建议 · 图 5
Argilla · 使用模型建议 · 图 5

来源: argilla/docs/how_to_guides/record.md argilla/docs/reference/argilla/records/suggestions.md argilla/docs/tutorials/text_classification.ipynb argilla/docs/tutorials/token_classification.ipynb

搜索、过滤和排序

Argilla 提供了强大的数据探索功能,帮助标注者浏览大型数据集:

  1. 关键词搜索:在所有字段或特定字段中搜索
  2. 语义搜索:使用向量嵌入查找与参考记录相似的记录
  3. 过滤:按元数据、响应或建议进行过滤
  4. 排序:按插入时间、更新时间或自定义元数据进行排序
Argilla · 搜索、过滤和排序 · 图 6
Argilla · 搜索、过滤和排序 · 图 6

示例:

# 按关键词搜索
query = rg.Query(query="重要关键词")
matching_records = dataset.records(query=query)

# 按元数据过滤
filter_condition = rg.Filter(("metadata.category", "==", "finance"))
filtered_records = dataset.records(rg.Query(filter=filter_condition))

# 按响应状态过滤
status_filter = rg.Filter(("response.status", "==", "submitted"))
submitted_records = dataset.records(rg.Query(filter=status_filter))

# 按向量相似度搜索
similar_query = rg.Similar(name="my_vector", value=[0.1, 0.2, ...])
similar_records = dataset.records(similar_query)

来源: argilla/docs/how_to_guides/query.md argilla/docs/how_to_guides/annotate.md argilla/docs/reference/argilla/search.md

标注任务类型

Argilla 通过不同的问题配置支持各种标注任务类型:

文本分类

用于将文本分类到预定义的类别中,通过 LabelQuestionMultiLabelQuestion 进行配置。

示例工作流:

  1. 创建包含文本字段和标签问题的数据集
  2. 添加包含文本内容的记录
  3. 可选地添加模型生成的标签建议
  4. 通过选择适当的标签进行标注
  5. 导出已标注的数据集用于模型训练
Token 分类

用于命名实体识别和序列标注,通过 SpanQuestion 进行配置。

示例工作流:

  1. 创建包含文本字段和跨度问题的数据集
  2. 添加包含文本内容的记录
  3. 可选地添加模型生成的实体建议
  4. 通过选择文本跨度并分配实体类型进行标注
  5. 导出已标注的数据集用于模型训练
偏好标注

用于对输出进行排序或评分,通过 RankingQuestionRatingQuestion 进行配置。

示例工作流:

  1. 创建包含多个文本字段或自定义字段的数据集
  2. 添加包含不同输出变体的记录
  3. 通过对输出进行排序或评分进行标注
  4. 导出已标注的数据集用于偏好学习
图像标注

用于图像分类或多模态任务,通过 ImageField 和各种问题类型进行配置。

示例工作流:

  1. 创建包含图像字段和适当问题的数据集
  2. 添加包含图像 URL 或文件路径的记录
  3. 可选地添加模型生成的建议
  4. 根据任务要求标注图像
  5. 导出已标注的数据集用于模型训练

来源:

  • argilla/docs/tutorials/text_classification.ipynb
  • argilla/docs/tutorials/token_classification.ipynb
  • argilla/docs/tutorials/image_classification.ipynb
  • argilla/docs/tutorials/image_preference.ipynb
  • argilla/docs/reference/argilla/settings/questions.md
  • argilla/docs/reference/argilla/settings/fields.md

导出用于模型训练

标注完成后,您可以通过多种方式导出数据集用于模型训练:

# 导出到 Hugging Face Hub
dataset.to_hub(repo_id="my-username/my-dataset")

# 导出到磁盘
dataset.to_disk("path/to/directory")

# 导出为 Hugging Face datasets 格式
hf_dataset = dataset.records.to_datasets()

# 导出为 Python 数据结构
records_dict = dataset.records.to_dict()
records_list = dataset.records.to_list(flatten=True)

导出的数据随后可用于训练或微调模型,如各种教程笔记本中所示。

来源:

  • argilla/docs/how_to_guides/import_export.md
  • argilla/docs/tutorials/text_classification.ipynb
  • argilla/docs/tutorials/token_classification.ipynb

与模型改进周期的集成

Argilla 中的标注工作流是持续模型改进周期的一部分:

Argilla · 与模型改进周期的集成 · 图 7
Argilla · 与模型改进周期的集成 · 图 7

这个迭代过程允许通过人工反馈持续改进模型。教程展示了各种任务的工作流,演示了如何在已标注数据上训练模型,并使用它们为新数据生成建议。

来源:

  • argilla/docs/tutorials/text_classification.ipynb
  • argilla/docs/tutorials/token_classification.ipynb
  • argilla/docs/tutorials/image_classification.ipynb