cohere_rust/api/
rerank.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Serialize, Debug, Default)]
4pub struct ReRankRequest<'input> {
5    /// The search query.
6    pub query: &'input str,
7    /// A list of document strings to rerank.
8    pub documents: &'input [String],
9    /// The model to use.
10    pub model: ReRankModel,
11    /// The number of results to return, defaults to the length of the documents.
12    pub top_n: Option<u64>,
13    // The maximum number of chunks to derive from each document.
14    pub max_chunks_per_doc: Option<u64>,
15}
16
17#[derive(strum_macros::Display, Serialize, Debug, Default)]
18pub enum ReRankModel {
19    #[strum(serialize = "rerank-english-v2.0")]
20    #[serde(rename = "rerank-english-v2.0")]
21    EnglishV2,
22    #[strum(serialize = "rerank-multilingual-v2.0")]
23    #[serde(rename = "rerank-multilingual-v2.0")]
24    MultilingualV2,
25    #[strum(serialize = "rerank-english-v3.0")]
26    #[serde(rename = "rerank-english-v3.0")]
27    #[default]
28    EnglishV3,
29    #[strum(serialize = "rerank-multilingual-v3.0")]
30    #[serde(rename = "rerank-multilingual-v3.0")]
31    MultilingualV3,
32}
33
34#[derive(Deserialize, Debug)]
35pub(crate) struct ReRankResponse {
36    /// List of ranked documents
37    pub results: Vec<ReRankResult>,
38}
39
40#[derive(Deserialize, Debug, PartialEq)]
41pub struct ReRankResult {
42    /// The index of the input document
43    pub index: u64,
44    /// A relevance score assigned to the ranking
45    pub relevance_score: f64,
46}