Current section

Files

Jump to
xberg lib xberg reranker_head.ex
Raw

lib/xberg/reranker_head.ex

# This file is auto-generated by alef — DO NOT EDIT.
# alef:hash:b2c29ab80fb9cdb8c5190a7808ad862ad890f416ad887092447b282a5b1b69e0
# To regenerate: alef generate
# To verify freshness: alef verify --exit-code
defmodule Xberg.RerankerHead do
@moduledoc """
Selects how a local ONNX reranker's raw output tensor is turned into a score.
- [`RerankerHead::CrossEncoder`] — classic single-logit cross-encoder head:
the model emits `[batch, 1]` (or `[batch]`) logits; the caller applies
sigmoid to get a `[0, 1]` score. This is the original, unchanged path.
- [`RerankerHead::Qwen3Generative`] — Qwen3 generative-reranker head: the
model emits `[batch, seq, vocab]` logits; the score is `P("yes")` read
from the last token's logits over the "yes"/"no" vocabulary entries,
via a softmax over those two logits. Already a `[0, 1]` probability —
no sigmoid is applied.
Since v5.0.0.
"""
@typedoc "Selects how a local ONNX reranker's raw output tensor is turned into a score."
@type t :: :cross_encoder | :qwen3_generative
@cross_encoder :cross_encoder
@qwen3_generative :qwen3_generative
@doc "Single-logit cross-encoder head (sigmoid applied by the caller)."
@spec cross_encoder() :: t()
def cross_encoder, do: @cross_encoder
@doc "Qwen3 generative-reranker head (softmax over yes/no token logits)."
@spec qwen3_generative() :: t()
def qwen3_generative, do: @qwen3_generative
end