68 lines
2.1 KiB
V
68 lines
2.1 KiB
V
module jina
|
|
|
|
// import json
|
|
|
|
pub enum JinaRerankModel {
|
|
reranker_v2_base_multilingual // 278M
|
|
reranker_v1_base_en // 137M
|
|
reranker_v1_tiny_en // 33M
|
|
reranker_v1_turbo_en // 38M
|
|
colbert_v1_en // 137M
|
|
}
|
|
|
|
// RankAPIInput represents the input for reranking requests
|
|
pub struct RerankInput {
|
|
pub mut:
|
|
model string @[required] // Model name
|
|
query string @[required] // Query text
|
|
documents []string @[required] // Document texts
|
|
top_n ?int // Optional: Number of top results to return
|
|
return_documents ?bool // Optional: Flag to determine if the documents should be returned
|
|
}
|
|
|
|
// RankingOutput represents the response from reranking requests
|
|
pub struct RankingOutput {
|
|
pub mut:
|
|
model string
|
|
results []RankResult
|
|
usage Usage
|
|
object string
|
|
}
|
|
|
|
// RankResult represents a single reranking result
|
|
pub struct RankResult {
|
|
pub mut:
|
|
document RankDocument
|
|
index int
|
|
relevance_score f64
|
|
}
|
|
|
|
// RankDocument represents a single document for reranking
|
|
pub struct RankDocument {
|
|
pub mut:
|
|
text string
|
|
}
|
|
|
|
// to_string converts a JinaRerankModel enum to its string representation as expected by the Jina API
|
|
pub fn (m JinaRerankModel) to_string() string {
|
|
return match m {
|
|
.reranker_v2_base_multilingual { 'jina-reranker-v2-base-multilingual' }
|
|
.reranker_v1_base_en { 'jina-reranker-v1-base-en' }
|
|
.reranker_v1_tiny_en { 'jina-reranker-v1-tiny-en' }
|
|
.reranker_v1_turbo_en { 'jina-reranker-v1-turbo-en' }
|
|
.colbert_v1_en { 'jina-colbert-v1-en' }
|
|
}
|
|
}
|
|
|
|
// from_string converts a string to a JinaRerankModel enum, returning an error if the string is invalid
|
|
pub fn jina_rerank_model_from_string(s string) !JinaRerankModel {
|
|
return match s {
|
|
'jina-reranker-v2-base-multilingual' { JinaRerankModel.reranker_v2_base_multilingual }
|
|
'jina-reranker-v1-base-en' { JinaRerankModel.reranker_v1_base_en }
|
|
'jina-reranker-v1-tiny-en' { JinaRerankModel.reranker_v1_tiny_en }
|
|
'jina-reranker-v1-turbo-en' { JinaRerankModel.reranker_v1_turbo_en }
|
|
'jina-colbert-v1-en' { JinaRerankModel.colbert_v1_en }
|
|
else { error('Invalid JinaRerankModel string: ${s}') }
|
|
}
|
|
}
|