指南 3个标注团队操作手册:提升标注速度与质量

RAG检索

此模板为您提供了一个工作流程,用于评估大型语言模型(LLM)响应的质量。

使用此模板将使您能够比较不同大语言模型(LLM)的响应质量,并通过便捷的拖放界面动态排序项目集。

这支持以下使用场景:

  1. 将LLM响应按不同类型分类:相关、不相关、有偏见、冒犯性等。
  2. 比较并排序不同模型生成响应的质量。
  3. 为基于检索增强生成的聊天机器人和上下文学习排序上下文项。
  4. 构建RLHF的偏好模型
  5. 评估语义搜索结果
  6. LLM路由

正在寻找一个模型来开始微调过程?查看Label Studio博客上的指南

如何创建数据集

收集一个提示和您希望在每项任务中显示的项目列表,采用以下JSON格式:

{
  "prompt": "What caused the ancient library of Alexandria to be destroyed?",
  "items": [
    { "id": "llm_1", "title": "LLM 1", "body": "Wars led to library's ruin." },
    { "id": "llm_2", "title": "LLM 2", "body": "Library's end through various wars." },
    { "id": "llm_3", "title": "LLM 3", "body": "Ruin resulted from library wars." }
  ]
}

收集数据集示例并将其存储在dataset.json文件中。

如何配置标注界面

LLM Ranker 模板包含以下XML格式的标注界面:

<View>
  <Style>
    .htx-text { white-space: pre-wrap; }
    .search-query {
      font-size: 120%; 
      width: 800px;
      margin-bottom: 0.5em;
      border: 1px solid #eee;
      padding: 0 1em 1em 1em; 
      background: #fefefe; 
    }
    .question {
      font-size: 100%; 
      width: 800px;
      background: #fff !important;
      padding: 1em; 
    }
    .answer {
      font-size: 100%; 
      width: 800px;
      background: #fff !important;
      padding: 1em; 
    }
    .doc-body { 
      white-space: pre-wrap;   
      overflow-wrap: break-word;
      word-break: keep-all; 
    }
    .doc-footer { 
      font-size: 85%;
      overflow-wrap: break-word;
      word-break: keep-all; 
    }
    h3 + p + p { font-size: 85%; } /* doc id */
  </Style>
  
  <View className="search-query">
    <Header value="Search query"/>
    <Text name="query" value="$query" />
  </View>
  
  <Collapse>
    <Panel value="Full question">
      <View className="question">
        <Text name="question" value="$question" />
      </View>
    </Panel>
  </Collapse>
  
  <Collapse>
    <Panel value="Answer">
      <View className="answer">
        <Text name="answer" value="$answer" />
      </View>
    </Panel>
  </Collapse>
  
  <View style="margin-top: 2em">
    <List name="results" value="$similar_docs" title="Search results" />
    <Ranker name="rank" toName="results">
      <Bucket name="positives" title="Positives" />
      <Bucket name="hard_negatives" title="Hard Negatives" />
    </Ranker>
  </View>
</View>

配置包含以下元素:

  • - 该标签用于显示提示信息。value属性应设置为提示元素的名称,本例中即为prompt
  • - 该标签用于指示显示项目列表。value属性应设置为列表元素的名称(本例中为items)。
  • - 该标签用于指示对列表中的项目进行排序。toName属性应设置为列表元素的名称。
  • - 该标签指示为排序项创建一个桶。每个桶代表待排序项的高级类别,排序将在该类别内部进行。name属性应设置为桶的名称。

可以通过使用.htx-ranker-item类在Style标签中对项目进行样式设置。

启动您的标注项目

提示

需要帮助开始使用Label Studio吗?查看我们的从零到一教程

  1. 在Label Studio中创建新项目
  2. 前往设置 > 标注界面 > 浏览模板 > 生成式AI > LLM排序器
  3. 保存项目

或者,您可以使用我们的Python SDK创建项目:

import label_studio_sdk

ls = label_studio_sdk.Client('YOUR_LABEL_STUDIO_URL', 'YOUR_API_KEY')
project = ls.create_project(title='LLM Ranker', label_config='<View>...</View>')

导入数据集

要导入您的数据集,请在项目设置中前往Import并上传数据集文件dataset.json

使用Python SDK,通过刚创建的项目的PROJECT_ID将包含输入提示的数据集导入Label Studio。

运行以下代码:

from label_studio_sdk import Client

ls = Client(url='<YOUR-LABEL-STUDIO-URL>', api_key='<YOUR-API_KEY>')

project = ls.get_project(id=PROJECT_ID)
project.import_tasks('dataset.json')

如果您想创建预标注数据(例如由LLM生成的项目的排序顺序),可以导入带有预标注的数据集:

project.import_tasks([{
    "data": {"prompt": "...", "items": [...]},
    "predictions": [{
          "type": "ranker",
          "value": {
            "ranker": {
              "_": [
                "llm_2",
                "llm_1"
              ],
              "biased_results": ["llm_3"],
              "relevant_results": []
            }
          },
          "to_name": "prompt",
          "from_name": "rank"
        }]
}])

"value"分组下,您可以指定不同的存储桶名称。请注意"_"用作特殊键,表示原始的未分类列表。

导出数据集

标注结果可以导出为JSON格式。要导出数据集,请前往项目设置中的Export并下载文件。

使用Python SDK,您可以从Label Studio导出带注释的数据集

annotations = project.export_tasks(format='JSON')

注释在"value"中的输出预期包含以下结构:

"value": {
    "ranker": {
      "_": [
        "llm_2",
        "llm_1"
      ],
      "biased_results": ["llm_3"],
      "relevant_results": []
    }
}

其中:

  • "_" 是一个特殊键,表示原始的未分类列表(与上面导入预标注示例中的用法相同)。
  • "biased_results""relevant_results" 是在标注界面中定义的桶名称。