Skip to content

Commit eaf8b49

Browse files
Preslav LeConvex, Inc.
Preslav Le
authored and
Convex, Inc.
committed
Add vector search encode_payload test (#27864)
Follow up from previous PR. GitOrigin-RevId: 564824f8e272c45e1f66f004d94c3e2f83565b1b
1 parent 18ef81b commit eaf8b49

File tree

3 files changed

+65
-0
lines changed

3 files changed

+65
-0
lines changed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/vector/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ errors = { path = "../errors" }
1818
futures = { workspace = true }
1919
imbl = { workspace = true }
2020
indexing = { path = "../indexing" }
21+
maplit = { workspace = true }
2122
metrics = { path = "../metrics" }
2223
parking_lot = { workspace = true }
2324
pb = { path = "../pb" }

crates/vector/src/qdrant_index.rs

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -674,3 +674,66 @@ fn json_path_from_str(s: &str) -> anyhow::Result<JsonPath> {
674674
},
675675
}
676676
}
677+
678+
#[cfg(test)]
679+
mod tests {
680+
use common::types::Timestamp;
681+
use maplit::btreemap;
682+
use rand::Rng;
683+
use serde_json::json;
684+
use value::InternalId;
685+
686+
use crate::QdrantDocument;
687+
688+
#[test]
689+
fn test_encode_payload() -> anyhow::Result<()> {
690+
let mut rng = rand::thread_rng();
691+
let d = 1536;
692+
693+
let document = QdrantDocument {
694+
internal_id: InternalId(1u128.to_le_bytes()),
695+
vector: (0..d)
696+
.map(|_| rng.gen())
697+
.collect::<Vec<_>>()
698+
.try_into()
699+
.unwrap(),
700+
filter_fields: btreemap!(),
701+
};
702+
let payload = document.encode_payload(Timestamp::MIN)?;
703+
assert_eq!(payload, json!({ "_ts": "AAAAAAAAAAA"}));
704+
705+
let document = QdrantDocument {
706+
internal_id: InternalId(1u128.to_le_bytes()),
707+
vector: (0..d)
708+
.map(|_| rng.gen())
709+
.collect::<Vec<_>>()
710+
.try_into()
711+
.unwrap(),
712+
filter_fields: btreemap!(
713+
"abc".parse()? => vec![97],
714+
"def.ghi".parse()? => vec![98],
715+
"def.xyz".parse()? => vec![99],
716+
),
717+
};
718+
let payload = document.encode_payload(Timestamp::MIN)?;
719+
assert_eq!(
720+
payload,
721+
json!({ "abc": "YQ", "def": { "ghi": "Yg", "xyz": "Yw"}, "_ts": "AAAAAAAAAAA"})
722+
);
723+
724+
let document = QdrantDocument {
725+
internal_id: InternalId(1u128.to_le_bytes()),
726+
vector: (0..d)
727+
.map(|_| rng.gen())
728+
.collect::<Vec<_>>()
729+
.try_into()
730+
.unwrap(),
731+
filter_fields: btreemap!(
732+
"zzz".parse()? => vec![97],
733+
),
734+
};
735+
let payload = document.encode_payload(Timestamp::MIN)?;
736+
assert_eq!(payload, json!({ "zzz": "YQ", "_ts": "AAAAAAAAAAA"}));
737+
Ok(())
738+
}
739+
}

0 commit comments

Comments
 (0)