oxirs_vec/reranking/mod.rs
1//! Re-ranking with cross-encoders for improved search quality
2//!
3//! This module implements two-stage retrieval:
4//! 1. Fast retrieval with bi-encoders (semantic search)
5//! 2. Precise re-ranking with cross-encoders
6//!
7//! Cross-encoders jointly encode query and document for more accurate
8//! relevance scoring, but at higher computational cost. By applying them
9//! only to top-k candidates, we get both speed and accuracy.
10//!
11//! ## Features
12//! - Multiple cross-encoder backends (local models, API-based)
13//! - Score fusion strategies (linear, rank-based, learned)
14//! - Batch processing for efficiency
15//! - Result caching
16//! - Diversity-aware re-ranking
17//!
18//! ## Example
19//! ```rust,ignore
20//! use oxirs_vec::reranking::{CrossEncoderReranker, RerankingConfig};
21//!
22//! let config = RerankingConfig::default();
23//! let reranker = CrossEncoderReranker::new(config)?;
24//!
25//! // First stage: fast retrieval
26//! let candidates = vector_store.search("machine learning", 100)?;
27//!
28//! // Second stage: precise re-ranking
29//! let reranked = reranker.rerank("machine learning", &candidates, 10)?;
30//! ```
31
32pub mod cache;
33pub mod config;
34pub mod cross_encoder;
35pub mod diversity;
36pub mod fusion;
37pub mod models;
38pub mod reranker;
39pub mod types;
40
41pub use cache::{RerankingCache, RerankingCacheConfig};
42pub use config::{FusionStrategy, RerankingConfig, RerankingMode};
43pub use cross_encoder::{CrossEncoder, CrossEncoderBackend};
44pub use diversity::{DiversityReranker, DiversityStrategy};
45pub use fusion::{ScoreFusion, ScoreFusionConfig};
46pub use models::{CrossEncoderModel, ModelBackend, ModelConfig};
47pub use reranker::{CrossEncoderReranker, RerankingOutput, RerankingStats};
48pub use types::{RerankingError, RerankingResult as Result, ScoredCandidate};