@@ -2,14 +2,14 @@ use core::mem::discriminant;
2
2
use serde:: { de:: Error , Deserialize , Deserializer , Serialize } ;
3
3
use std:: {
4
4
cmp:: { Ordering , Reverse } ,
5
- collections:: { BinaryHeap , HashMap , HashSet } ,
5
+ collections:: { BinaryHeap , HashSet } ,
6
6
hash:: { Hash , Hasher } ,
7
7
} ;
8
8
use thiserror:: Error ;
9
9
10
10
use crate :: {
11
11
chroma_proto, logical_size_of_metadata, CollectionAndSegments , CollectionUuid , Metadata ,
12
- RawWhereFields , ScalarEncoding , Where , CHROMA_EMBEDDING_KEY ,
12
+ RawWhereFields , ScalarEncoding , SparseVector , Where , CHROMA_EMBEDDING_KEY ,
13
13
} ;
14
14
15
15
use super :: error:: QueryConversionError ;
@@ -683,7 +683,7 @@ pub enum Rank {
683
683
} ,
684
684
#[ serde( rename = "$sparse-knn" ) ]
685
685
SparseKnn {
686
- embedding : HashMap < u32 , f32 > ,
686
+ embedding : SparseVector ,
687
687
#[ serde( default = "Rank::default_key" ) ]
688
688
key : String ,
689
689
#[ serde( default = "Rank::default_limit" ) ]
@@ -726,7 +726,7 @@ impl Hash for Rank {
726
726
} => {
727
727
let mut sorted_bits = embedding
728
728
. iter ( )
729
- . map ( |( index, val) | ( * index, ( val + 0.0 ) . to_bits ( ) ) )
729
+ . map ( |( index, val) | ( index, ( val + 0.0 ) . to_bits ( ) ) )
730
730
. collect :: < Vec < _ > > ( ) ;
731
731
sorted_bits. sort_unstable ( ) ;
732
732
sorted_bits. hash ( state) ;
@@ -756,7 +756,7 @@ impl TryFrom<chroma_proto::Rank> for Rank {
756
756
embedding : sparse_knn
757
757
. embedding
758
758
. ok_or ( QueryConversionError :: field ( "embedding" ) ) ?
759
- . offset_value ,
759
+ . into ( ) ,
760
760
key : sparse_knn. key ,
761
761
limit : sparse_knn. limit ,
762
762
} ) ,
@@ -796,9 +796,7 @@ impl TryFrom<Rank> for chroma_proto::Rank {
796
796
} => Ok ( chroma_proto:: Rank {
797
797
rank : Some ( chroma_proto:: rank:: Rank :: SparseKnn (
798
798
chroma_proto:: rank:: SparseKnn {
799
- embedding : Some ( chroma_proto:: SparseVector {
800
- offset_value : embedding,
801
- } ) ,
799
+ embedding : Some ( embedding. into ( ) ) ,
802
800
key,
803
801
limit,
804
802
} ,
0 commit comments