Skip to content

Comparação Pareada

Configure comparações lado a lado no Potato para aprendizado de preferências, testes A/B e avaliação de qualidade de saídas com ordem de apresentação aleatória.

A comparação pareada permite que os anotadores comparem dois itens lado a lado e indiquem sua preferência. Ela oferece dois modos:

  1. Modo Binário (padrão): clique no bloco preferido (A ou B), com botão de empate opcional
  2. Modo de Escala: use um controle deslizante para avaliar o quanto uma opção é preferida em relação à outra

Os casos de uso comuns incluem comparar saídas de modelos, aprendizado de preferências para RLHF, comparação de qualidade de traduções ou resumos e testes A/B.

Interface de anotação de comparação pareadaComparação pareada lado a lado para anotação de preferência no Potato

Modo Binário

O modo binário exibe dois blocos clicáveis. Os anotadores clicam na opção preferida.

yaml
annotation_schemes:
  - annotation_type: pairwise
    name: preference
    description: "Which response is better?"
    mode: binary
 
    # Data source - key in instance data containing items to compare
    items_key: "responses"
 
    # Display options
    show_labels: true
    labels:
      - "Response A"
      - "Response B"
 
    # Tie option
    allow_tie: true
    tie_label: "No preference"
 
    # Keyboard shortcuts
    sequential_key_binding: true
 
    # Validation
    label_requirement:
      required: true

Modo de Escala

O modo de escala exibe um controle deslizante entre dois itens, permitindo que os anotadores indiquem o grau de preferência.

yaml
annotation_schemes:
  - annotation_type: pairwise
    name: preference_scale
    description: "Rate how much better A is than B"
    mode: scale
 
    items_key: "responses"
 
    labels:
      - "Response A"
      - "Response B"
 
    # Scale configuration
    scale:
      min: -3           # Negative = prefer left item (A)
      max: 3            # Positive = prefer right item (B)
      step: 1
      default: 0
 
      # Endpoint labels
      labels:
        min: "A is much better"
        max: "B is much better"
        center: "Equal"
 
    label_requirement:
      required: true

Formato dos Dados

O esquema espera dados de instância com uma lista de itens a comparar:

json
{"id": "1", "responses": ["Response A text", "Response B text"]}
{"id": "2", "responses": ["First option here", "Second option here"]}

A configuração items_key especifica qual campo contém os itens a comparar. O campo deve conter uma lista com pelo menos 2 itens.

Atalhos de Teclado

No modo binário com sequential_key_binding: true:

TeclaAção
1Selecionar a opção A
2Selecionar a opção B
0Selecionar empate/sem preferência (se allow_tie: true)

O modo de escala usa interação com o controle deslizante.

Formato de Saída

Modo Binário

json
{
  "preference": {
    "selection": "A"
  }
}

Com empate:

json
{
  "preference": {
    "selection": "tie"
  }
}

Modo de Escala

Valores negativos indicam preferência por A, positivos por B e zero indica igualdade:

json
{
  "preference_scale": {
    "scale_value": "-2"
  }
}

Exemplos

Comparação Binária Básica

yaml
annotation_schemes:
  - annotation_type: pairwise
    name: quality
    description: "Which text is higher quality?"
    labels: ["Text A", "Text B"]
    allow_tie: true

Comparação Multiaspecto

Compare em múltiplas dimensões:

yaml
annotation_schemes:
  - annotation_type: pairwise
    name: fluency
    description: "Which response is more fluent?"
    labels: ["Response A", "Response B"]
 
  - annotation_type: pairwise
    name: relevance
    description: "Which response is more relevant?"
    labels: ["Response A", "Response B"]
 
  - annotation_type: pairwise
    name: overall
    description: "Which response is better overall?"
    labels: ["Response A", "Response B"]
    allow_tie: true

Escala de Preferência com Intervalo Personalizado

yaml
annotation_schemes:
  - annotation_type: pairwise
    name: sentiment_comparison
    description: "Compare the sentiment of these two statements"
    mode: scale
    labels: ["Statement A", "Statement B"]
    scale:
      min: -5
      max: 5
      step: 1
      labels:
        min: "A is much more positive"
        max: "B is much more positive"
        center: "Equal sentiment"

Coleta de Preferências para RLHF

yaml
annotation_schemes:
  - annotation_type: pairwise
    name: overall
    description: "Overall, which response is better?"
    labels: ["Response A", "Response B"]
    allow_tie: true
    sequential_key_binding: true
 
  - annotation_type: multiselect
    name: criteria
    description: "What factors influenced your decision?"
    labels:
      - Accuracy
      - Helpfulness
      - Clarity
      - Safety
      - Completeness
 
  - annotation_type: text
    name: notes
    description: "Additional notes (optional)"
    multiline: true
    required: false

Estilização

A anotação pareada usa variáveis CSS do sistema de temas. Adicione CSS personalizado para customizar os blocos:

css
/* Make tiles taller */
.pairwise-tile {
  min-height: 200px;
}
 
/* Change selected tile highlight */
.pairwise-tile.selected {
  border-color: #10b981;
  background-color: rgba(16, 185, 129, 0.1);
}

Boas Práticas

  1. Use rótulos claros e distintos - os anotadores devem entender as opções imediatamente
  2. Considere as opções de empate com cuidado - às vezes forçar uma escolha é apropriado
  3. Use atalhos de teclado - acelera bastante a anotação
  4. Adicione campos de justificativa - ajudam a entender o raciocínio e melhoram a qualidade dos dados
  5. Teste com seus dados - garanta que a exibição funcione bem com o comprimento do seu conteúdo

Leitura Adicional

Para detalhes de implementação, consulte a documentação de origem.