Skip to main content
Sort Relevance stage showing document reordering by relevance scores
The Sort Relevance stage reorders documents based on their relevance scores from previous stages. This is useful when documents have been modified or filtered and need to be re-sorted by their original search scores.
Stage Category: SORT (Reorders documents)Transformation: N documents → N documents (reordered by relevance)

When to Use

Use CaseDescription
Post-filter sortingRe-sort after structured_filter removes documents
Score normalizationApply consistent sorting after multi-stage processing
Restoring orderReturn to relevance order after other sort operations
Combining scoresSort by combined scores from multiple sources

When NOT to Use

ScenarioRecommended Alternative
Sorting by metadata fieldsort_by_field
Neural re-scoringrerank
Results already sortedSkip this stage
Diversifying resultsmmr

Parameters

ParameterTypeDefaultDescription
score_fieldstringscoreField containing relevance score
orderstringdescSort order: desc (highest first) or asc
normalizebooleanfalseNormalize scores to 0-1 range

Configuration Examples

{
  "stage_type": "sort",
  "stage_id": "sort_relevance",
  "parameters": {
    "order": "desc"
  }
}

How It Works

  1. Extract Scores: Read the score field from each document
  2. Sort: Order documents by score (descending by default)
  3. Optionally Normalize: Scale scores to 0-1 range
  4. Return: Documents in new order

Output Schema

{
  "document_id": "doc_123",
  "content": "Document content...",
  "score": 0.95,
  "sort_relevance": {
    "original_position": 3,
    "new_position": 1,
    "normalized_score": 1.0
  }
}

Performance

MetricValue
Latency< 5ms
MemoryO(N)
CostFree
ComplexityO(N log N)

Common Pipeline Patterns

Search + Filter + Re-sort

[
  {
    "stage_type": "filter",
    "stage_id": "semantic_search",
    "parameters": {
      "query": "{{INPUT.query}}",
      "vector_index": "text_extractor_v1_embedding",
      "top_k": 100
    }
  },
  {
    "stage_type": "filter",
    "stage_id": "structured_filter",
    "parameters": {
      "conditions": {
        "field": "metadata.status",
        "operator": "eq",
        "value": "published"
      }
    }
  },
  {
    "stage_type": "sort",
    "stage_id": "sort_relevance",
    "parameters": {
      "order": "desc"
    }
  }
]

Multi-Stage with Score Normalization

[
  {
    "stage_type": "filter",
    "stage_id": "hybrid_search",
    "parameters": {
      "query": "{{INPUT.query}}",
      "vector_index": "text_extractor_v1_embedding",
      "top_k": 50
    }
  },
  {
    "stage_type": "apply",
    "stage_id": "llm_enrichment",
    "parameters": {
      "model": "gpt-4o-mini",
      "prompt": "Extract key topics",
      "output_field": "topics"
    }
  },
  {
    "stage_type": "sort",
    "stage_id": "sort_relevance",
    "parameters": {
      "normalize": true
    }
  }
]

Comparison with Other Sort Stages

StagePurposeScore Source
sort_relevanceRelevance scoresSearch/fusion scores
sort_by_fieldMetadata valuesAny document field
rerankNeural re-scoringCross-encoder model
mmrDiversityRelevance + diversity

Error Handling

ErrorBehavior
Missing score fieldUse 0 as default
Non-numeric scoreMove to end
Empty inputReturn empty
Equal scoresMaintain original order