---
title: "Reranking"
description: "Rerank documents with Bifrost Go SDK using client.RerankRequest."
icon: "book-open-cover"
---

Use the Go SDK to rank candidate documents by relevance to a query.

Provider/model examples:
- Cohere: `Provider: schemas.Cohere`, `Model: "rerank-v3.5"`
- vLLM: `Provider: schemas.VLLM`, `Model: "BAAI/bge-reranker-v2-m3"`

## Basic Example

```go
package main

import (
	"context"
	"fmt"

	bifrost "github.com/maximhq/bifrost/core"
	"github.com/maximhq/bifrost/core/schemas"
)

func main() {
	client, err := bifrost.Init(context.Background(), schemas.BifrostConfig{
		Account: &MyAccount{},
	})
	if err != nil {
		panic(err)
	}
	defer client.Shutdown()

	request := &schemas.BifrostRerankRequest{
		Provider: schemas.Cohere,
		Model:    "rerank-v3.5",
		Query:    "What is Bifrost?",
		Documents: []schemas.RerankDocument{
			{Text: "Bifrost is an AI gateway that unifies many LLM providers."},
			{Text: "Paris is the capital of France."},
			{Text: "Bifrost exposes an OpenAI-compatible API."},
		},
		Params: &schemas.RerankParameters{
			TopN:            bifrost.Ptr(2),
			ReturnDocuments: bifrost.Ptr(true),
		},
	}

	resp, bfErr := client.RerankRequest(schemas.NewBifrostContext(context.Background(), schemas.NoDeadline), request)
	if bfErr != nil {
		panic(bfErr.Error.Message)
	}

	for _, result := range resp.Results {
		fmt.Printf("index=%d score=%.4f\n", result.Index, result.RelevanceScore)
	}
}
```

## Parameters

- `Provider`, `Model`: provider/model to use for rerank
- `Query`: query text
- `Documents`: documents to score (`text`, optional `id`, `meta`)
- `Params.TopN`: max result count
- `Params.MaxTokensPerDoc`: provider-dependent token cap
- `Params.Priority`: provider-dependent priority hint
- `Params.ReturnDocuments`: include source document in each result
- `Fallbacks`: fallback provider/model choices

For vLLM, set `Provider` to `schemas.VLLM` and use the upstream model ID as `Model` (without the `vllm/` prefix that is used in Gateway HTTP requests).

## Response

`BifrostRerankResponse` includes:

- `Results []RerankResult` (`index`, `relevance_score`, optional `document`)
- `Model`
- optional `Usage`
- `ExtraFields` metadata (`provider`, `latency`, `request_type`, etc.)

## Next Steps

- **[Streaming Responses](./streaming)** - Real-time response processing
- **[Tool Calling](./tool-calling)** - Enable AI to use external functions
- **[Multimodal AI](./multimodal)** - Process images and multimedia content
- **[Core Features](../../features/)** - Advanced Bifrost capabilities
