Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Jina AI

Jina AI provides high-quality embeddings and rerankers. The jina-embeddings-v3 model supports 8192-token contexts and produces 1024-dimensional embeddings. The JinaReranker provides cross-encoder reranking to improve retrieval precision.

Setup

[dependencies]
synaptic = { version = "0.4", features = ["jina"] }

Get an API key from cloud.jina.ai.

Embeddings

use synaptic::jina::{JinaConfig, JinaEmbeddingModel, JinaEmbeddings};
use synaptic::core::Embeddings;

let config = JinaConfig::new("your-api-key", JinaEmbeddingModel::JinaEmbeddingsV3);
let embeddings = JinaEmbeddings::new(config);

let docs = embeddings.embed_documents(&["Document 1", "Document 2"]).await?;
let query_vec = embeddings.embed_query("search query").await?;

Reranker

use synaptic::jina::reranker::{JinaReranker, JinaRerankerModel};
use synaptic::core::Document;

let reranker = JinaReranker::new("your-api-key")
    .with_model(JinaRerankerModel::JinaRerankerV2BaseMultilingual);

let docs = vec![
    Document::new("1", "Rust is a systems programming language."),
    Document::new("2", "Python is great for data science."),
    Document::new("3", "Rust ensures memory safety."),
];

let ranked = reranker.rerank("Rust memory safety", docs, 2).await?;
for (doc, score) in &ranked {
    println!("Score {:.3}: {}", score, doc.content);
}

Available Models

Embeddings

VariantModel IDContext
JinaEmbeddingsV3jina-embeddings-v38192
JinaEmbeddingsV2BaseEnjina-embeddings-v2-base-en8192

Reranker

VariantModel IDLanguage
JinaRerankerV2BaseMultilingualjina-reranker-v2-base-multilingualMultilingual
JinaRerankerV1BaseEnjina-reranker-v1-base-enEnglish