pub enum FusionStrategy {
RRF {
k: f32,
},
Linear {
dense_weight: f32,
},
Convex {
alpha: f32,
},
DBSF,
Union,
Intersection,
ThreeWay {
dense_weight: f32,
sparse_weight: f32,
multivector_weight: f32,
},
}Expand description
Strategy for fusing dense and sparse retrieval results
Variants§
RRF
Reciprocal Rank Fusion
Linear
Linear combination of normalized scores
Convex
Convex combination after min-max normalization
DBSF
Distribution-Based Score Fusion
Union
Take union of results, prefer dense ranking for ties
Intersection
Intersection: only return results in both
ThreeWay
Three-way weighted combination of dense, sparse, and multi-vector results
Implementations§
Source§impl FusionStrategy
impl FusionStrategy
Sourcepub fn fuse(
&self,
dense_results: &[(ChunkId, f32)],
sparse_results: &[(ChunkId, f32)],
) -> Vec<(ChunkId, f32)>
pub fn fuse( &self, dense_results: &[(ChunkId, f32)], sparse_results: &[(ChunkId, f32)], ) -> Vec<(ChunkId, f32)>
Fuse dense and sparse retrieval results
Sourcepub fn fuse_three(
&self,
dense: &[(ChunkId, f32)],
sparse: &[(ChunkId, f32)],
multivector: &[(ChunkId, f32)],
) -> Vec<(ChunkId, f32)>
pub fn fuse_three( &self, dense: &[(ChunkId, f32)], sparse: &[(ChunkId, f32)], multivector: &[(ChunkId, f32)], ) -> Vec<(ChunkId, f32)>
Fuse three result sets: dense, sparse, and multi-vector.
This method combines results from all three retrieval methods using a weighted linear combination after min-max normalization.
§Arguments
dense- Dense (single-vector) retrieval resultssparse- Sparse (BM25) retrieval resultsmultivector- Multi-vector (ColBERT-style) retrieval results
§Returns
Fused results sorted by combined score descending.
Trait Implementations§
Source§impl Clone for FusionStrategy
impl Clone for FusionStrategy
Source§fn clone(&self) -> FusionStrategy
fn clone(&self) -> FusionStrategy
Returns a duplicate of the value. Read more
1.0.0 · 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 FusionStrategy
impl Debug for FusionStrategy
Source§impl Default for FusionStrategy
impl Default for FusionStrategy
Source§impl<'de> Deserialize<'de> for FusionStrategy
impl<'de> Deserialize<'de> for FusionStrategy
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 FusionStrategy
impl RefUnwindSafe for FusionStrategy
impl Send for FusionStrategy
impl Sync for FusionStrategy
impl Unpin for FusionStrategy
impl UnsafeUnpin for FusionStrategy
impl UnwindSafe for FusionStrategy
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,
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().