pub struct RetrievalMetrics {
pub recall: HashMap<usize, f32>,
pub precision: HashMap<usize, f32>,
pub mrr: f32,
pub ndcg: HashMap<usize, f32>,
pub map: f32,
}Expand description
Retrieval metrics for evaluation
Fields§
§recall: HashMap<usize, f32>Recall@k for various k values
precision: HashMap<usize, f32>Precision@k for various k values
mrr: f32Mean Reciprocal Rank
ndcg: HashMap<usize, f32>Normalized Discounted Cumulative Gain@k
map: f32Mean Average Precision
Implementations§
Source§impl RetrievalMetrics
impl RetrievalMetrics
Sourcepub fn compute(
retrieved: &[ChunkId],
relevant: &HashSet<ChunkId>,
k_values: &[usize],
) -> Self
pub fn compute( retrieved: &[ChunkId], relevant: &HashSet<ChunkId>, k_values: &[usize], ) -> Self
Compute all metrics for a single query
Sourcepub fn recall_at_k(
retrieved: &[ChunkId],
relevant: &HashSet<ChunkId>,
k: usize,
) -> f32
pub fn recall_at_k( retrieved: &[ChunkId], relevant: &HashSet<ChunkId>, k: usize, ) -> f32
Compute Recall@k
Recall@k = |relevant ∩ retrieved@k| / |relevant|
Sourcepub fn precision_at_k(
retrieved: &[ChunkId],
relevant: &HashSet<ChunkId>,
k: usize,
) -> f32
pub fn precision_at_k( retrieved: &[ChunkId], relevant: &HashSet<ChunkId>, k: usize, ) -> f32
Compute Precision@k
Precision@k = |relevant ∩ retrieved@k| / k
Sourcepub fn mean_reciprocal_rank(
retrieved: &[ChunkId],
relevant: &HashSet<ChunkId>,
) -> f32
pub fn mean_reciprocal_rank( retrieved: &[ChunkId], relevant: &HashSet<ChunkId>, ) -> f32
Compute Mean Reciprocal Rank (MRR)
MRR = 1 / rank of first relevant result
Sourcepub fn ndcg_at_k(
retrieved: &[ChunkId],
relevant: &HashSet<ChunkId>,
k: usize,
) -> f32
pub fn ndcg_at_k( retrieved: &[ChunkId], relevant: &HashSet<ChunkId>, k: usize, ) -> f32
Compute Normalized Discounted Cumulative Gain@k
NDCG@k = DCG@k / IDCG@k
Sourcepub fn average_precision(
retrieved: &[ChunkId],
relevant: &HashSet<ChunkId>,
) -> f32
pub fn average_precision( retrieved: &[ChunkId], relevant: &HashSet<ChunkId>, ) -> f32
Compute Average Precision (AP)
AP = (1/|relevant|) * Σ (Precision@k * rel(k))
Trait Implementations§
Source§impl Clone for RetrievalMetrics
impl Clone for RetrievalMetrics
Source§fn clone(&self) -> RetrievalMetrics
fn clone(&self) -> RetrievalMetrics
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for RetrievalMetrics
impl Debug for RetrievalMetrics
Source§impl Default for RetrievalMetrics
impl Default for RetrievalMetrics
Source§fn default() -> RetrievalMetrics
fn default() -> RetrievalMetrics
Returns the “default value” for a type. Read more
Source§impl<'de> Deserialize<'de> for RetrievalMetrics
impl<'de> Deserialize<'de> for RetrievalMetrics
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for RetrievalMetrics
impl RefUnwindSafe for RetrievalMetrics
impl Send for RetrievalMetrics
impl Sync for RetrievalMetrics
impl Unpin for RetrievalMetrics
impl UnsafeUnpin for RetrievalMetrics
impl UnwindSafe for RetrievalMetrics
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
Read this value from the supplied reader. Same as
ReadEndian::read_from_little_endian().