Skip to content

Commit 2fcfdb1

Browse files
committed
Update sparse vector representation
1 parent 3da1b01 commit 2fcfdb1

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

rust/types/src/execution/operator.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ use core::mem::discriminant;
22
use serde::{de::Error, Deserialize, Deserializer, Serialize};
33
use std::{
44
cmp::{Ordering, Reverse},
5-
collections::{BinaryHeap, HashMap, HashSet},
5+
collections::{BinaryHeap, HashSet},
66
hash::{Hash, Hasher},
77
};
88
use thiserror::Error;
99

1010
use crate::{
1111
chroma_proto, logical_size_of_metadata, CollectionAndSegments, CollectionUuid, Metadata,
12-
RawWhereFields, ScalarEncoding, Where, CHROMA_EMBEDDING_KEY,
12+
RawWhereFields, ScalarEncoding, SparseVector, Where, CHROMA_EMBEDDING_KEY,
1313
};
1414

1515
use super::error::QueryConversionError;
@@ -683,7 +683,7 @@ pub enum Rank {
683683
},
684684
#[serde(rename = "$sparse-knn")]
685685
SparseKnn {
686-
embedding: HashMap<u32, f32>,
686+
embedding: SparseVector,
687687
#[serde(default = "Rank::default_key")]
688688
key: String,
689689
#[serde(default = "Rank::default_limit")]
@@ -726,7 +726,7 @@ impl Hash for Rank {
726726
} => {
727727
let mut sorted_bits = embedding
728728
.iter()
729-
.map(|(index, val)| (*index, (val + 0.0).to_bits()))
729+
.map(|(index, val)| (index, (val + 0.0).to_bits()))
730730
.collect::<Vec<_>>();
731731
sorted_bits.sort_unstable();
732732
sorted_bits.hash(state);
@@ -756,7 +756,7 @@ impl TryFrom<chroma_proto::Rank> for Rank {
756756
embedding: sparse_knn
757757
.embedding
758758
.ok_or(QueryConversionError::field("embedding"))?
759-
.offset_value,
759+
.into(),
760760
key: sparse_knn.key,
761761
limit: sparse_knn.limit,
762762
}),
@@ -796,9 +796,7 @@ impl TryFrom<Rank> for chroma_proto::Rank {
796796
} => Ok(chroma_proto::Rank {
797797
rank: Some(chroma_proto::rank::Rank::SparseKnn(
798798
chroma_proto::rank::SparseKnn {
799-
embedding: Some(chroma_proto::SparseVector {
800-
offset_value: embedding,
801-
}),
799+
embedding: Some(embedding.into()),
802800
key,
803801
limit,
804802
},

0 commit comments

Comments
 (0)