diff --git a/Cargo.toml b/Cargo.toml index 4a9d4551..29c06ab1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,10 +33,10 @@ parking_lot = "0.12.4" tonic-build = { version = "0.12.3", features = ["prost"] } [features] -default = ["download_snapshots", "serde", "generate-snippets"] +default = ["download_snapshots", "serde"] download_snapshots = ["reqwest", "futures-util"] serde = ["dep:serde", "dep:serde_json"] -generate-snippets = [] +generate-snippets = [] # Does nothing. Deprecated. uuid = ["dep:uuid"] [[example]] diff --git a/build.rs b/build.rs deleted file mode 100644 index 1c917e58..00000000 --- a/build.rs +++ /dev/null @@ -1,83 +0,0 @@ -use std::fs; -use std::path::{Path, PathBuf}; - -fn generate_snippet_test(snippet: &str, name: &str, dir: &Path) { - // Pad each line of the snippet with 8 spaces - - let snippet = snippet - .lines() - .map(|line| format!(" {line}")) - .collect::>() - .join("\n"); - - let test_snippet = format!( - r#" -#[tokio::test] -async fn test_{name}() {{ - async fn {name}() -> Result<(), Box> {{ - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/{name}.rs` file -{snippet} - Ok(()) - }} - let _ = {name}().await; -}} -"# - ); - - // Write the test snippet to the file - let mut test_snippet_path = PathBuf::from(dir); - test_snippet_path.push(format!("test_{name}.rs")); - fs::write(test_snippet_path, test_snippet).unwrap(); -} - -fn main() { - println!("cargo:rerun-if-changed=tests/snippets"); - - #[cfg(not(feature = "generate-snippets"))] - return; - - // Open all files in the `./tests/snippets` directory and save them to the `./tests/snippets_converted` directory - // Wrap text in the `tests/test_snippets.rs` file into { } - let snippets_dir = Path::new("./tests/snippets"); - let tests_output_dir = Path::new("./tests/snippet_tests"); - - // Create the converted directory if it doesn't exist - if !tests_output_dir.exists() { - fs::create_dir_all(tests_output_dir).unwrap(); - } - - let mut snippet_names: Vec<_> = fs::read_dir(snippets_dir) - .unwrap() - .filter_map(|entry| { - let entry = entry.unwrap(); - let path = entry.path(); - if path.is_file() { - let snippet_name = path.file_stem().unwrap().to_str().unwrap().to_string(); - Some((path, snippet_name)) - } else { - None - } - }) - .collect(); - - snippet_names.sort_unstable_by_key(|(_, name)| name.clone()); - - for (path, name) in &snippet_names { - let content = fs::read_to_string(path).unwrap(); - generate_snippet_test(&content, name, tests_output_dir); - } - - // Generate `tests/snippet_tests/mod.rs` file - // For each file in `./tests/snippet_tests` directory, generate a line `mode {file_name};` - - let mod_file = snippet_names - .iter() - .map(|(_, name)| format!("mod test_{name};")) - .collect::>() - .join("\n"); - - let mut mod_file_path = PathBuf::from(tests_output_dir); - mod_file_path.push("mod.rs"); - fs::write(mod_file_path, mod_file).unwrap(); -} diff --git a/tests/snippet_tests/mod.rs b/tests/snippet_tests/mod.rs deleted file mode 100644 index decfd244..00000000 --- a/tests/snippet_tests/mod.rs +++ /dev/null @@ -1,59 +0,0 @@ -mod test_batch_update; -mod test_clear_payload; -mod test_collection_exists; -mod test_count_points; -mod test_create_collection; -mod test_create_collection_with_bq; -mod test_create_collection_with_metadata; -mod test_create_field_index; -mod test_create_full_snapshot; -mod test_create_shard_key; -mod test_create_snapshot; -mod test_create_text_index; -mod test_delete_collection; -mod test_delete_field_index; -mod test_delete_full_snapshot; -mod test_delete_payload; -mod test_delete_points; -mod test_delete_shard_key; -mod test_delete_snapshot; -mod test_delete_vectors; -mod test_discover_batch_points; -mod test_discover_points; -mod test_facets; -mod test_get_collection; -mod test_get_collection_aliases; -mod test_get_collections; -mod test_get_collections_aliases; -mod test_get_points; -mod test_list_full_snapshots; -mod test_list_shard_keys; -mod test_list_snapshots; -mod test_overwrite_payload; -mod test_query_document; -mod test_query_image; -mod test_query_points; -mod test_query_points_groups; -mod test_query_points_relevance_feedback; -mod test_recommend_batch_points; -mod test_recommend_point_groups; -mod test_recommend_points; -mod test_replicate_points; -mod test_scroll_points; -mod test_scroll_points_with_vectors; -mod test_search_batch_points; -mod test_search_matrix_offsets; -mod test_search_matrix_pairs; -mod test_search_point_groups; -mod test_search_points; -mod test_set_payload; -mod test_update_aliases; -mod test_update_collection; -mod test_update_collection_metadata; -mod test_update_vectors; -mod test_upsert_document; -mod test_upsert_image; -mod test_upsert_points; -mod test_upsert_points_fallback_shard_key; -mod test_upsert_points_insert_only; -mod test_upsert_points_with_condition; \ No newline at end of file diff --git a/tests/snippet_tests/test_batch_update.rs b/tests/snippet_tests/test_batch_update.rs deleted file mode 100644 index c31c636a..00000000 --- a/tests/snippet_tests/test_batch_update.rs +++ /dev/null @@ -1,66 +0,0 @@ - -#[tokio::test] -async fn test_batch_update() { - async fn batch_update() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/batch_update.rs` file - use qdrant_client::qdrant::{ - points_selector::PointsSelectorOneOf, - points_update_operation::{ - Operation, OverwritePayload, PointStructList, UpdateVectors, - }, - PointStruct, PointVectors, PointsIdsList, PointsSelector, PointsUpdateOperation, - UpdateBatchPointsBuilder, - }; - use qdrant_client::{Qdrant, Payload}; - use serde_json::json; - use std::collections::HashMap; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .update_points_batch( - UpdateBatchPointsBuilder::new( - "{collection_name}", - vec![ - PointsUpdateOperation { - operation: Some(Operation::Upsert(PointStructList { - points: vec![PointStruct::new( - 1, - vec![1.0, 2.0, 3.0, 4.0], - Payload::try_from(json!({})).unwrap(), - )], - ..Default::default() - })), - }, - PointsUpdateOperation { - operation: Some(Operation::UpdateVectors(UpdateVectors { - points: vec![PointVectors { - id: Some(1.into()), - vectors: Some(vec![1.0, 2.0, 3.0, 4.0].into()), - }], - ..Default::default() - })), - }, - PointsUpdateOperation { - operation: Some(Operation::OverwritePayload(OverwritePayload { - points_selector: Some(PointsSelector { - points_selector_one_of: Some(PointsSelectorOneOf::Points( - PointsIdsList { - ids: vec![1.into()], - }, - )), - }), - payload: HashMap::from([("test_payload".to_string(), 1.into())]), - ..Default::default() - })), - }, - ], - ) - .wait(true), - ) - .await?; - Ok(()) - } - let _ = batch_update().await; -} diff --git a/tests/snippet_tests/test_clear_payload.rs b/tests/snippet_tests/test_clear_payload.rs deleted file mode 100644 index f0a0e812..00000000 --- a/tests/snippet_tests/test_clear_payload.rs +++ /dev/null @@ -1,22 +0,0 @@ - -#[tokio::test] -async fn test_clear_payload() { - async fn clear_payload() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/clear_payload.rs` file - use qdrant_client::qdrant::{ClearPayloadPointsBuilder, PointsIdsList}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .clear_payload(ClearPayloadPointsBuilder::new("{collection_name}").points( - PointsIdsList { - ids: vec![0.into(), 3.into(), 100.into()], - }, - )) - .await?; - Ok(()) - } - let _ = clear_payload().await; -} diff --git a/tests/snippet_tests/test_collection_exists.rs b/tests/snippet_tests/test_collection_exists.rs deleted file mode 100644 index d5011f80..00000000 --- a/tests/snippet_tests/test_collection_exists.rs +++ /dev/null @@ -1,15 +0,0 @@ - -#[tokio::test] -async fn test_collection_exists() { - async fn collection_exists() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/collection_exists.rs` file - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client.collection_exists("{collection_name}").await?; - Ok(()) - } - let _ = collection_exists().await; -} diff --git a/tests/snippet_tests/test_count_points.rs b/tests/snippet_tests/test_count_points.rs deleted file mode 100644 index b5a2e3b5..00000000 --- a/tests/snippet_tests/test_count_points.rs +++ /dev/null @@ -1,25 +0,0 @@ - -#[tokio::test] -async fn test_count_points() { - async fn count_points() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/count_points.rs` file - use qdrant_client::qdrant::{Condition, CountPointsBuilder, Filter}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .count( - CountPointsBuilder::new("{collection_name}") - .filter(Filter::must([Condition::matches( - "color", - "red".to_string(), - )])) - .exact(true), - ) - .await?; - Ok(()) - } - let _ = count_points().await; -} diff --git a/tests/snippet_tests/test_create_collection.rs b/tests/snippet_tests/test_create_collection.rs deleted file mode 100644 index cd22542d..00000000 --- a/tests/snippet_tests/test_create_collection.rs +++ /dev/null @@ -1,21 +0,0 @@ - -#[tokio::test] -async fn test_create_collection() { - async fn create_collection() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/create_collection.rs` file - use qdrant_client::qdrant::{CreateCollectionBuilder, Distance, VectorParamsBuilder}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .create_collection( - CreateCollectionBuilder::new("{collection_name}") - .vectors_config(VectorParamsBuilder::new(100, Distance::Cosine)), - ) - .await?; - Ok(()) - } - let _ = create_collection().await; -} diff --git a/tests/snippet_tests/test_create_collection_with_bq.rs b/tests/snippet_tests/test_create_collection_with_bq.rs deleted file mode 100644 index 1487cdc3..00000000 --- a/tests/snippet_tests/test_create_collection_with_bq.rs +++ /dev/null @@ -1,28 +0,0 @@ - -#[tokio::test] -async fn test_create_collection_with_bq() { - async fn create_collection_with_bq() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/create_collection_with_bq.rs` file - use qdrant_client::qdrant::{ - BinaryQuantizationBuilder, BinaryQuantizationEncoding, CreateCollectionBuilder, Distance, VectorParamsBuilder, BinaryQuantizationQueryEncoding, - }; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .create_collection( - CreateCollectionBuilder::new("{collection_name}") - .vectors_config(VectorParamsBuilder::new(1536, Distance::Cosine)) - .quantization_config( - BinaryQuantizationBuilder::new(true) - .encoding(BinaryQuantizationEncoding::TwoBits) - .query_encoding(BinaryQuantizationQueryEncoding::scalar8bits()) - ), - ) - .await?; - Ok(()) - } - let _ = create_collection_with_bq().await; -} diff --git a/tests/snippet_tests/test_create_collection_with_metadata.rs b/tests/snippet_tests/test_create_collection_with_metadata.rs deleted file mode 100644 index 35daad58..00000000 --- a/tests/snippet_tests/test_create_collection_with_metadata.rs +++ /dev/null @@ -1,30 +0,0 @@ - -#[tokio::test] -async fn test_create_collection_with_metadata() { - async fn create_collection_with_metadata() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/create_collection_with_metadata.rs` file - use qdrant_client::qdrant::{CreateCollectionBuilder, Distance, VectorParamsBuilder}; - use qdrant_client::Qdrant; - use serde_json::{json, Value}; - use std::collections::HashMap; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - - let mut metadata: HashMap = HashMap::new(); - metadata.insert("my-metadata-field".to_string(), json!("value-1")); - metadata.insert("another-field".to_string(), json!(123)); - - - client - .create_collection( - CreateCollectionBuilder::new("{collection_name}") - .vectors_config(VectorParamsBuilder::new(100, Distance::Cosine)) - .metadata(metadata), - ) - .await?; - Ok(()) - } - let _ = create_collection_with_metadata().await; -} diff --git a/tests/snippet_tests/test_create_field_index.rs b/tests/snippet_tests/test_create_field_index.rs deleted file mode 100644 index 0e296758..00000000 --- a/tests/snippet_tests/test_create_field_index.rs +++ /dev/null @@ -1,24 +0,0 @@ - -#[tokio::test] -async fn test_create_field_index() { - async fn create_field_index() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/create_field_index.rs` file - use qdrant_client::qdrant::{CreateFieldIndexCollectionBuilder, FieldType}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .create_field_index( - CreateFieldIndexCollectionBuilder::new( - "{collection_name}", - "{field_name}", - FieldType::Keyword, - ), - ) - .await?; - Ok(()) - } - let _ = create_field_index().await; -} diff --git a/tests/snippet_tests/test_create_full_snapshot.rs b/tests/snippet_tests/test_create_full_snapshot.rs deleted file mode 100644 index 70943d20..00000000 --- a/tests/snippet_tests/test_create_full_snapshot.rs +++ /dev/null @@ -1,15 +0,0 @@ - -#[tokio::test] -async fn test_create_full_snapshot() { - async fn create_full_snapshot() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/create_full_snapshot.rs` file - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client.create_full_snapshot().await?; - Ok(()) - } - let _ = create_full_snapshot().await; -} diff --git a/tests/snippet_tests/test_create_shard_key.rs b/tests/snippet_tests/test_create_shard_key.rs deleted file mode 100644 index 14f9a8e4..00000000 --- a/tests/snippet_tests/test_create_shard_key.rs +++ /dev/null @@ -1,26 +0,0 @@ - -#[tokio::test] -async fn test_create_shard_key() { - async fn create_shard_key() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/create_shard_key.rs` file - use qdrant_client::qdrant::shard_key::Key; - use qdrant_client::qdrant::{CreateShardKeyBuilder, CreateShardKeyRequestBuilder}; - use qdrant_client::qdrant::ReplicaState; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .create_shard_key( - CreateShardKeyRequestBuilder::new("{collection_name}").request( - CreateShardKeyBuilder::default() - .shard_key(Key::Keyword("{shard_key}".to_string())) - .initial_state(ReplicaState::Active), - ), - ) - .await?; - Ok(()) - } - let _ = create_shard_key().await; -} diff --git a/tests/snippet_tests/test_create_snapshot.rs b/tests/snippet_tests/test_create_snapshot.rs deleted file mode 100644 index 464484ff..00000000 --- a/tests/snippet_tests/test_create_snapshot.rs +++ /dev/null @@ -1,15 +0,0 @@ - -#[tokio::test] -async fn test_create_snapshot() { - async fn create_snapshot() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/create_snapshot.rs` file - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client.create_snapshot("{collection_name}").await?; - Ok(()) - } - let _ = create_snapshot().await; -} diff --git a/tests/snippet_tests/test_create_text_index.rs b/tests/snippet_tests/test_create_text_index.rs deleted file mode 100644 index 9f22f521..00000000 --- a/tests/snippet_tests/test_create_text_index.rs +++ /dev/null @@ -1,34 +0,0 @@ - -#[tokio::test] -async fn test_create_text_index() { - async fn create_text_index() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/create_text_index.rs` file - use qdrant_client::qdrant::{ - CreateFieldIndexCollectionBuilder, - TextIndexParamsBuilder, - FieldType, - TokenizerType, - }; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let text_index_params = TextIndexParamsBuilder::new(TokenizerType::Word) - .min_token_len(2) - .max_token_len(10) - .lowercase(true); - - client - .create_field_index( - CreateFieldIndexCollectionBuilder::new( - "{collection_name}", - "{field_name}", - FieldType::Text, - ).field_index_params(text_index_params.build()), - ) - .await?; - Ok(()) - } - let _ = create_text_index().await; -} diff --git a/tests/snippet_tests/test_delete_collection.rs b/tests/snippet_tests/test_delete_collection.rs deleted file mode 100644 index cb159b23..00000000 --- a/tests/snippet_tests/test_delete_collection.rs +++ /dev/null @@ -1,15 +0,0 @@ - -#[tokio::test] -async fn test_delete_collection() { - async fn delete_collection() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/delete_collection.rs` file - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client.delete_collection("{collection_name}").await?; - Ok(()) - } - let _ = delete_collection().await; -} diff --git a/tests/snippet_tests/test_delete_field_index.rs b/tests/snippet_tests/test_delete_field_index.rs deleted file mode 100644 index 8e53a7d9..00000000 --- a/tests/snippet_tests/test_delete_field_index.rs +++ /dev/null @@ -1,21 +0,0 @@ - -#[tokio::test] -async fn test_delete_field_index() { - async fn delete_field_index() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/delete_field_index.rs` file - use qdrant_client::qdrant::DeleteFieldIndexCollectionBuilder; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .delete_field_index(DeleteFieldIndexCollectionBuilder::new( - "{collection_name}", - "{field_name}", - )) - .await?; - Ok(()) - } - let _ = delete_field_index().await; -} diff --git a/tests/snippet_tests/test_delete_full_snapshot.rs b/tests/snippet_tests/test_delete_full_snapshot.rs deleted file mode 100644 index 8aaa9727..00000000 --- a/tests/snippet_tests/test_delete_full_snapshot.rs +++ /dev/null @@ -1,15 +0,0 @@ - -#[tokio::test] -async fn test_delete_full_snapshot() { - async fn delete_full_snapshot() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/delete_full_snapshot.rs` file - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client.delete_full_snapshot("{snapshot_name}").await?; - Ok(()) - } - let _ = delete_full_snapshot().await; -} diff --git a/tests/snippet_tests/test_delete_payload.rs b/tests/snippet_tests/test_delete_payload.rs deleted file mode 100644 index ae32c741..00000000 --- a/tests/snippet_tests/test_delete_payload.rs +++ /dev/null @@ -1,27 +0,0 @@ - -#[tokio::test] -async fn test_delete_payload() { - async fn delete_payload() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/delete_payload.rs` file - use qdrant_client::qdrant::{DeletePayloadPointsBuilder, PointsIdsList}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .delete_payload( - DeletePayloadPointsBuilder::new( - "{collection_name}", - vec!["color".to_string(), "price".to_string()], - ) - .points_selector(PointsIdsList { - ids: vec![0.into(), 3.into(), 100.into()], - }) - .wait(true), - ) - .await?; - Ok(()) - } - let _ = delete_payload().await; -} diff --git a/tests/snippet_tests/test_delete_points.rs b/tests/snippet_tests/test_delete_points.rs deleted file mode 100644 index 4b41850c..00000000 --- a/tests/snippet_tests/test_delete_points.rs +++ /dev/null @@ -1,35 +0,0 @@ - -#[tokio::test] -async fn test_delete_points() { - async fn delete_points() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/delete_points.rs` file - use qdrant_client::qdrant::{Condition, DeletePointsBuilder, Filter, PointsIdsList}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .delete_points( - DeletePointsBuilder::new("{collection_name}") - .points(PointsIdsList { - ids: vec![0.into(), 3.into(), 100.into()], - }) - .wait(true), - ) - .await?; - - client - .delete_points( - DeletePointsBuilder::new("{collection_name}") - .points(Filter::must([Condition::matches( - "color", - "red".to_string(), - )])) - .wait(true), - ) - .await?; - Ok(()) - } - let _ = delete_points().await; -} diff --git a/tests/snippet_tests/test_delete_shard_key.rs b/tests/snippet_tests/test_delete_shard_key.rs deleted file mode 100644 index fa0cabfa..00000000 --- a/tests/snippet_tests/test_delete_shard_key.rs +++ /dev/null @@ -1,22 +0,0 @@ - -#[tokio::test] -async fn test_delete_shard_key() { - async fn delete_shard_key() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/delete_shard_key.rs` file - use qdrant_client::qdrant::shard_key::Key; - use qdrant_client::qdrant::DeleteShardKeyRequestBuilder; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .delete_shard_key( - DeleteShardKeyRequestBuilder::new("{collection_name}") - .key(Key::Keyword("{shard_key}".to_string())), - ) - .await?; - Ok(()) - } - let _ = delete_shard_key().await; -} diff --git a/tests/snippet_tests/test_delete_snapshot.rs b/tests/snippet_tests/test_delete_snapshot.rs deleted file mode 100644 index c16e9e99..00000000 --- a/tests/snippet_tests/test_delete_snapshot.rs +++ /dev/null @@ -1,21 +0,0 @@ - -#[tokio::test] -async fn test_delete_snapshot() { - async fn delete_snapshot() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/delete_snapshot.rs` file - use qdrant_client::qdrant::DeleteSnapshotRequestBuilder; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .delete_snapshot(DeleteSnapshotRequestBuilder::new( - "{collection_name}", - "{snapshot_name}", - )) - .await?; - Ok(()) - } - let _ = delete_snapshot().await; -} diff --git a/tests/snippet_tests/test_delete_vectors.rs b/tests/snippet_tests/test_delete_vectors.rs deleted file mode 100644 index 1564b83d..00000000 --- a/tests/snippet_tests/test_delete_vectors.rs +++ /dev/null @@ -1,27 +0,0 @@ - -#[tokio::test] -async fn test_delete_vectors() { - async fn delete_vectors() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/delete_vectors.rs` file - use qdrant_client::qdrant::{DeletePointVectorsBuilder, PointsIdsList, VectorsSelector}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .delete_vectors( - DeletePointVectorsBuilder::new("{collection_name}") - .points_selector(PointsIdsList { - ids: vec![0.into(), 3.into(), 10.into()], - }) - .vectors(VectorsSelector { - names: vec!["text".into(), "image".into()], - }) - .wait(true), - ) - .await?; - Ok(()) - } - let _ = delete_vectors().await; -} diff --git a/tests/snippet_tests/test_discover_batch_points.rs b/tests/snippet_tests/test_discover_batch_points.rs deleted file mode 100644 index 975bb5f0..00000000 --- a/tests/snippet_tests/test_discover_batch_points.rs +++ /dev/null @@ -1,55 +0,0 @@ - -#[tokio::test] -async fn test_discover_batch_points() { - async fn discover_batch_points() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/discover_batch_points.rs` file - use qdrant_client::qdrant::{ - vector_example::Example, ContextExamplePairBuilder, DiscoverBatchPointsBuilder, - DiscoverPointsBuilder, - }; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let discover_points = DiscoverBatchPointsBuilder::new( - "{collection_name}", - vec![ - DiscoverPointsBuilder::new( - "{collection_name}", - vec![ - ContextExamplePairBuilder::default() - .positive(Example::Id(100.into())) - .negative(Example::Id(718.into())) - .build(), - ContextExamplePairBuilder::default() - .positive(Example::Id(200.into())) - .negative(Example::Id(300.into())) - .build(), - ], - 10, - ) - .build(), - DiscoverPointsBuilder::new( - "{collection_name}", - vec![ - ContextExamplePairBuilder::default() - .positive(Example::Id(342.into())) - .negative(Example::Id(213.into())) - .build(), - ContextExamplePairBuilder::default() - .positive(Example::Id(100.into())) - .negative(Example::Id(200.into())) - .build(), - ], - 10, - ) - .build(), - ], - ); - - client.discover_batch(&discover_points.build()).await?; - Ok(()) - } - let _ = discover_batch_points().await; -} diff --git a/tests/snippet_tests/test_discover_points.rs b/tests/snippet_tests/test_discover_points.rs deleted file mode 100644 index d2c84731..00000000 --- a/tests/snippet_tests/test_discover_points.rs +++ /dev/null @@ -1,39 +0,0 @@ - -#[tokio::test] -async fn test_discover_points() { - async fn discover_points() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/discover_points.rs` file - use qdrant_client::qdrant::{ - target_vector::Target, vector_example::Example, ContextExamplePairBuilder, - DiscoverPointsBuilder, VectorExample, - }; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .discover( - DiscoverPointsBuilder::new( - "{collection_name}", - vec![ - ContextExamplePairBuilder::default() - .positive(Example::Id(100.into())) - .negative(Example::Id(718.into())) - .build(), - ContextExamplePairBuilder::default() - .positive(Example::Id(200.into())) - .negative(Example::Id(300.into())) - .build(), - ], - 10, - ) - .target(Target::Single(VectorExample { - example: Some(Example::Vector(vec![0.2, 0.1, 0.9, 0.7].into())), - })), - ) - .await?; - Ok(()) - } - let _ = discover_points().await; -} diff --git a/tests/snippet_tests/test_facets.rs b/tests/snippet_tests/test_facets.rs deleted file mode 100644 index 951125f8..00000000 --- a/tests/snippet_tests/test_facets.rs +++ /dev/null @@ -1,25 +0,0 @@ - -#[tokio::test] -async fn test_facets() { - async fn facets() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/facets.rs` file - use qdrant_client::qdrant::{Condition, FacetCountsBuilder, Filter}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .facet( - FacetCountsBuilder::new("world_data", "country") - .limit(10) - .filter(Filter::must(vec![Condition::matches( - "continent", - "Europe".to_string(), - )])), - ) - .await?; - Ok(()) - } - let _ = facets().await; -} diff --git a/tests/snippet_tests/test_get_collection.rs b/tests/snippet_tests/test_get_collection.rs deleted file mode 100644 index b5d9faf7..00000000 --- a/tests/snippet_tests/test_get_collection.rs +++ /dev/null @@ -1,15 +0,0 @@ - -#[tokio::test] -async fn test_get_collection() { - async fn get_collection() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/get_collection.rs` file - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client.collection_info("{collection_name}").await?; - Ok(()) - } - let _ = get_collection().await; -} diff --git a/tests/snippet_tests/test_get_collection_aliases.rs b/tests/snippet_tests/test_get_collection_aliases.rs deleted file mode 100644 index 01a44c7d..00000000 --- a/tests/snippet_tests/test_get_collection_aliases.rs +++ /dev/null @@ -1,15 +0,0 @@ - -#[tokio::test] -async fn test_get_collection_aliases() { - async fn get_collection_aliases() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/get_collection_aliases.rs` file - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client.list_collection_aliases("{collection_name}").await?; - Ok(()) - } - let _ = get_collection_aliases().await; -} diff --git a/tests/snippet_tests/test_get_collections.rs b/tests/snippet_tests/test_get_collections.rs deleted file mode 100644 index c0bec8b3..00000000 --- a/tests/snippet_tests/test_get_collections.rs +++ /dev/null @@ -1,15 +0,0 @@ - -#[tokio::test] -async fn test_get_collections() { - async fn get_collections() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/get_collections.rs` file - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client.list_collections().await?; - Ok(()) - } - let _ = get_collections().await; -} diff --git a/tests/snippet_tests/test_get_collections_aliases.rs b/tests/snippet_tests/test_get_collections_aliases.rs deleted file mode 100644 index 79b48779..00000000 --- a/tests/snippet_tests/test_get_collections_aliases.rs +++ /dev/null @@ -1,15 +0,0 @@ - -#[tokio::test] -async fn test_get_collections_aliases() { - async fn get_collections_aliases() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/get_collections_aliases.rs` file - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client.list_aliases().await?; - Ok(()) - } - let _ = get_collections_aliases().await; -} diff --git a/tests/snippet_tests/test_get_points.rs b/tests/snippet_tests/test_get_points.rs deleted file mode 100644 index 83824c19..00000000 --- a/tests/snippet_tests/test_get_points.rs +++ /dev/null @@ -1,21 +0,0 @@ - -#[tokio::test] -async fn test_get_points() { - async fn get_points() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/get_points.rs` file - use qdrant_client::qdrant::GetPointsBuilder; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .get_points(GetPointsBuilder::new( - "{collection_name}", - vec![0.into(), 30.into(), 100.into()], - )) - .await?; - Ok(()) - } - let _ = get_points().await; -} diff --git a/tests/snippet_tests/test_list_full_snapshots.rs b/tests/snippet_tests/test_list_full_snapshots.rs deleted file mode 100644 index b33a46c0..00000000 --- a/tests/snippet_tests/test_list_full_snapshots.rs +++ /dev/null @@ -1,15 +0,0 @@ - -#[tokio::test] -async fn test_list_full_snapshots() { - async fn list_full_snapshots() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/list_full_snapshots.rs` file - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client.list_full_snapshots().await?; - Ok(()) - } - let _ = list_full_snapshots().await; -} diff --git a/tests/snippet_tests/test_list_shard_keys.rs b/tests/snippet_tests/test_list_shard_keys.rs deleted file mode 100644 index cb36853c..00000000 --- a/tests/snippet_tests/test_list_shard_keys.rs +++ /dev/null @@ -1,15 +0,0 @@ - -#[tokio::test] -async fn test_list_shard_keys() { - async fn list_shard_keys() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/list_shard_keys.rs` file - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let _response = client.list_shard_keys("{collection_name}").await?; - Ok(()) - } - let _ = list_shard_keys().await; -} diff --git a/tests/snippet_tests/test_list_snapshots.rs b/tests/snippet_tests/test_list_snapshots.rs deleted file mode 100644 index d6aaf68d..00000000 --- a/tests/snippet_tests/test_list_snapshots.rs +++ /dev/null @@ -1,15 +0,0 @@ - -#[tokio::test] -async fn test_list_snapshots() { - async fn list_snapshots() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/list_snapshots.rs` file - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client.list_snapshots("{collection_name}").await?; - Ok(()) - } - let _ = list_snapshots().await; -} diff --git a/tests/snippet_tests/test_overwrite_payload.rs b/tests/snippet_tests/test_overwrite_payload.rs deleted file mode 100644 index c1d69c92..00000000 --- a/tests/snippet_tests/test_overwrite_payload.rs +++ /dev/null @@ -1,34 +0,0 @@ - -#[tokio::test] -async fn test_overwrite_payload() { - async fn overwrite_payload() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/overwrite_payload.rs` file - use qdrant_client::qdrant::{ - points_selector::PointsSelectorOneOf, PointsIdsList, SetPayloadPointsBuilder, - }; - use qdrant_client::{Qdrant, Payload}; - use serde_json::json; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let payload: Payload = json!({ - "property1": "string", - "property2": "string", - }) - .try_into() - .unwrap(); - - client - .overwrite_payload( - SetPayloadPointsBuilder::new("{collection_name}", payload) - .points_selector(PointsSelectorOneOf::Points(PointsIdsList { - ids: vec![0.into(), 3.into(), 10.into()], - })) - .wait(true), - ) - .await?; - Ok(()) - } - let _ = overwrite_payload().await; -} diff --git a/tests/snippet_tests/test_query_document.rs b/tests/snippet_tests/test_query_document.rs deleted file mode 100644 index ecd3cea4..00000000 --- a/tests/snippet_tests/test_query_document.rs +++ /dev/null @@ -1,26 +0,0 @@ - -#[tokio::test] -async fn test_query_document() { - async fn query_document() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/query_document.rs` file - use qdrant_client::qdrant::{Document, Query, QueryPointsBuilder}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let query_document = Document::new( - "my query text", - "sentence-transformers/all-minilm-l6-v2" - ); - - let query_request = QueryPointsBuilder::new("{collection_name}") - .query(Query::new_nearest(query_document)); - - // ANN search with server-side inference - client.query(query_request).await?; - - Ok(()) - } - let _ = query_document().await; -} diff --git a/tests/snippet_tests/test_query_image.rs b/tests/snippet_tests/test_query_image.rs deleted file mode 100644 index f98a6e7d..00000000 --- a/tests/snippet_tests/test_query_image.rs +++ /dev/null @@ -1,26 +0,0 @@ - -#[tokio::test] -async fn test_query_image() { - async fn query_image() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/query_image.rs` file - use qdrant_client::qdrant::{Image, Query, QueryPointsBuilder}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let query_image = Image::new_from_url( - "https://picsum.photos/200/300.jpg", - "Qdrant/clip-ViT-B-32-vision" - ); - - let query_request = QueryPointsBuilder::new("{collection_name}") - .query(Query::new_nearest(query_image)); - - // ANN search with server-side inference - client.query(query_request).await?; - - Ok(()) - } - let _ = query_image().await; -} diff --git a/tests/snippet_tests/test_query_points.rs b/tests/snippet_tests/test_query_points.rs deleted file mode 100644 index 3edaae80..00000000 --- a/tests/snippet_tests/test_query_points.rs +++ /dev/null @@ -1,183 +0,0 @@ - -#[tokio::test] -async fn test_query_points() { - async fn query_points() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/query_points.rs` file - use qdrant_client::qdrant::{ - AcornSearchParamsBuilder, Condition, DecayParamsExpressionBuilder, Expression, - Filter, FormulaBuilder, Fusion, GeoPoint, - PointId, PrefetchQueryBuilder, Query, QueryPointsBuilder, - RecommendInputBuilder, RrfBuilder, Sample, - SearchParamsBuilder, ShardKey, ShardKeySelectorBuilder, - }; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - // Query nearest by ID - let _nearest = client.query( - QueryPointsBuilder::new("{collection_name}") - .query(PointId::from("43cf51e2-8777-4f52-bc74-c2cbde0c8b04")) - ).await?; - - // Recommend on the average of these vectors - let _recommendations = client.query( - QueryPointsBuilder::new("{collection_name}") - .query(Query::new_recommend( - RecommendInputBuilder::default() - .add_positive(vec![0.1; 8]) - .add_negative(PointId::from(0)) - )) - ).await?; - - // Fusion query - let _hybrid = client.query( - QueryPointsBuilder::new("{collection_name}") - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![(1, 0.22), (42, 0.8)]) - .using("sparse") - .limit(20u64) - ) - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![0.01, 0.45, 0.67]) - .using("dense") - .limit(20u64) - ) - .query(Fusion::Rrf) - ).await?; - - // 2-stage query - let _refined = client.query( - QueryPointsBuilder::new("{collection_name}") - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![0.01, 0.45, 0.67]) - .limit(100u64) - ) - .query(vec![ - vec![0.1, 0.2], - vec![0.2, 0.1], - vec![0.8, 0.9], - ]) - .using("colbert") - .limit(10u64) - ).await?; - - // Random sampling (as of 1.11.0) - let _sampled = client - .query( - QueryPointsBuilder::new("{collection_name}") - .query(Query::new_sample(Sample::Random)) - ) - .await?; - - // Score boost depending on payload conditions (as of 1.14.0) - let _tag_boosted = client.query( - QueryPointsBuilder::new("{collection_name}") - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![0.01, 0.45, 0.67]) - .limit(100u64) - ) - .query(FormulaBuilder::new(Expression::sum_with([ - Expression::score(), - Expression::mult_with([ - Expression::constant(0.5), - Expression::condition(Condition::matches("tag", ["h1", "h2", "h3", "h4"])), - ]), - Expression::mult_with([ - Expression::constant(0.25), - Expression::condition(Condition::matches("tag", ["p", "li"])), - ]), - ]))) - .limit(10) - ).await?; - - // Score boost geographically closer points (as of 1.14.0) - let _geo_boosted = client.query( - QueryPointsBuilder::new("{collection_name}") - .add_prefetch( - PrefetchQueryBuilder::default() - .query(vec![0.01, 0.45, 0.67]) - .limit(100u64), - ) - .query( - FormulaBuilder::new(Expression::sum_with([ - Expression::score(), - Expression::exp_decay( - DecayParamsExpressionBuilder::new(Expression::geo_distance_with( - // Berlin - GeoPoint { lat: 52.504043, lon: 13.393236 }, - "geo.location", - )) - .scale(5_000.0), - ), - ])) - // Munich - .add_default("geo.location", GeoPoint { lat: 48.137154, lon: 11.576124 }), - ) - .limit(10), - ) - .await?; - - // RRF fusion query using Query::new_rrf constructor - let _rrf_hybrid = client.query( - QueryPointsBuilder::new("{collection_name}") - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![(1, 0.22), (42, 0.8)]) - .using("sparse") - .limit(20u64) - ) - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![0.01, 0.45, 0.67]) - .using("dense") - .limit(20u64) - ) - .query(Query::new_rrf(RrfBuilder::new())) - ).await?; - - // RRF with custom k parameter - let _rrf_custom = client.query( - QueryPointsBuilder::new("{collection_name}") - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![(1, 0.22), (42, 0.8)]) - .using("sparse") - .limit(20u64) - ) - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![0.01, 0.45, 0.67]) - .using("dense") - .limit(20u64) - ) - .query(Query::new_rrf(RrfBuilder::with_k(100))) - ).await?; - - // Query with ACORN enabled for filtered query - let _acorn_query = client.query( - QueryPointsBuilder::new("{collection_name}") - .query(vec![0.01, 0.45, 0.67]) - .filter(Filter::must([Condition::matches( - "category", - "electronics".to_string(), - )])) - .params( - SearchParamsBuilder::default() - .hnsw_ef(128) - .acorn(AcornSearchParamsBuilder::new(true).max_selectivity(0.4)) - ) - .limit(10u64) - ).await?; - - // Query in specific shards with fallback - let _shard_query = client.query( - QueryPointsBuilder::new("{collection_name}") - .query(vec![0.01, 0.45, 0.67]) - .shard_key_selector( - ShardKeySelectorBuilder::with_shard_keys(vec![ShardKey::from("shard_1".to_string())]) - .fallback(ShardKey::from("shard_backup".to_string())) - ) - .limit(10u64) - ).await?; - Ok(()) - } - let _ = query_points().await; -} diff --git a/tests/snippet_tests/test_query_points_groups.rs b/tests/snippet_tests/test_query_points_groups.rs deleted file mode 100644 index 90647393..00000000 --- a/tests/snippet_tests/test_query_points_groups.rs +++ /dev/null @@ -1,21 +0,0 @@ - -#[tokio::test] -async fn test_query_points_groups() { - async fn query_points_groups() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/query_points_groups.rs` file - use qdrant_client::Qdrant; - use qdrant_client::qdrant::{Query, QueryPointGroupsBuilder}; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client.query_groups( - QueryPointGroupsBuilder::new("{collection_name}", "document_id") - .query(Query::from(vec![0.01, 0.45, 0.67])) - .limit(10u64) - .group_size(5u64) - ).await?; - Ok(()) - } - let _ = query_points_groups().await; -} diff --git a/tests/snippet_tests/test_query_points_relevance_feedback.rs b/tests/snippet_tests/test_query_points_relevance_feedback.rs deleted file mode 100644 index 64f5bcf8..00000000 --- a/tests/snippet_tests/test_query_points_relevance_feedback.rs +++ /dev/null @@ -1,29 +0,0 @@ - -#[tokio::test] -async fn test_query_points_relevance_feedback() { - async fn query_points_relevance_feedback() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/query_points_relevance_feedback.rs` file - use qdrant_client::qdrant::{ - FeedbackItemBuilder, FeedbackStrategyBuilder, PointId, Query, QueryPointsBuilder, - RelevanceFeedbackInputBuilder, VectorInput, - }; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - // Relevance feedback query (as of 1.17.0) - let _feedback = client.query( - QueryPointsBuilder::new("{collection_name}") - .query(Query::new_relevance_feedback( - RelevanceFeedbackInputBuilder::new(vec![0.01, 0.45, 0.67]) - .add_feedback(FeedbackItemBuilder::new(VectorInput::new_id(PointId::from(42)), 0.9)) - .add_feedback(FeedbackItemBuilder::new(VectorInput::new_id(PointId::from(7)), 0.1)) - .strategy(FeedbackStrategyBuilder::naive(1.0, 1.0, 1.0)) - )) - .limit(10u64) - ).await?; - Ok(()) - } - let _ = query_points_relevance_feedback().await; -} diff --git a/tests/snippet_tests/test_recommend_batch_points.rs b/tests/snippet_tests/test_recommend_batch_points.rs deleted file mode 100644 index ac7d3d50..00000000 --- a/tests/snippet_tests/test_recommend_batch_points.rs +++ /dev/null @@ -1,39 +0,0 @@ - -#[tokio::test] -async fn test_recommend_batch_points() { - async fn recommend_batch_points() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/recommend_batch_points.rs` file - use qdrant_client::qdrant::{ - Condition, Filter, RecommendBatchPointsBuilder, RecommendPointsBuilder, - }; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let filter = Filter::must([Condition::matches("city", "London".to_string())]); - let recommend_queries = vec![ - RecommendPointsBuilder::new("{collection_name}", 3) - .add_positive(100) - .add_positive(231) - .add_negative(718) - .filter(filter.clone()) - .build(), - RecommendPointsBuilder::new("{collection_name}", 3) - .add_positive(200) - .add_positive(67) - .add_negative(300) - .filter(filter.clone()) - .build(), - ]; - - client - .recommend_batch(RecommendBatchPointsBuilder::new( - "{collection_name}", - recommend_queries, - )) - .await?; - Ok(()) - } - let _ = recommend_batch_points().await; -} diff --git a/tests/snippet_tests/test_recommend_point_groups.rs b/tests/snippet_tests/test_recommend_point_groups.rs deleted file mode 100644 index e8183b04..00000000 --- a/tests/snippet_tests/test_recommend_point_groups.rs +++ /dev/null @@ -1,24 +0,0 @@ - -#[tokio::test] -async fn test_recommend_point_groups() { - async fn recommend_point_groups() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/recommend_point_groups.rs` file - use qdrant_client::qdrant::{RecommendPointGroupsBuilder, RecommendStrategy}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .recommend_groups( - RecommendPointGroupsBuilder::new("{collection_name}", "document_id", 2, 3) - .add_positive(100) - .add_positive(200) - .add_negative(718) - .strategy(RecommendStrategy::AverageVector), - ) - .await?; - Ok(()) - } - let _ = recommend_point_groups().await; -} diff --git a/tests/snippet_tests/test_recommend_points.rs b/tests/snippet_tests/test_recommend_points.rs deleted file mode 100644 index a13fd3cb..00000000 --- a/tests/snippet_tests/test_recommend_points.rs +++ /dev/null @@ -1,30 +0,0 @@ - -#[tokio::test] -async fn test_recommend_points() { - async fn recommend_points() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/recommend_points.rs` file - use qdrant_client::qdrant::{Condition, Filter, RecommendPointsBuilder, RecommendStrategy}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .recommend( - RecommendPointsBuilder::new("{collection_name}", 3) - .add_positive(100) - .add_positive(200) - .add_positive(vec![100.0, 231.0]) - .add_negative(718) - .add_negative(vec![0.2, 0.3, 0.4, 0.5]) - .strategy(RecommendStrategy::AverageVector) - .filter(Filter::must([Condition::matches( - "city", - "London".to_string(), - )])), - ) - .await?; - Ok(()) - } - let _ = recommend_points().await; -} diff --git a/tests/snippet_tests/test_replicate_points.rs b/tests/snippet_tests/test_replicate_points.rs deleted file mode 100644 index c142e69f..00000000 --- a/tests/snippet_tests/test_replicate_points.rs +++ /dev/null @@ -1,35 +0,0 @@ - -#[tokio::test] -async fn test_replicate_points() { - async fn replicate_points() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/replicate_points.rs` file - use qdrant_client::qdrant::{ - update_collection_cluster_setup_request::Operation, Condition, Filter, - ReplicatePointsBuilder, ShardKey, UpdateCollectionClusterSetupRequest, - }; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .update_collection_cluster_setup(UpdateCollectionClusterSetupRequest { - collection_name: "{collection_name}".to_string(), - operation: Some(Operation::ReplicatePoints( - ReplicatePointsBuilder::new( - ShardKey::from("source_shard"), - ShardKey::from("target_shard"), - ) - .filter(Filter::must([Condition::matches( - "user", - "tenant-123".to_string(), - )])) - .build(), - )), - timeout: None, - }) - .await?; - Ok(()) - } - let _ = replicate_points().await; -} diff --git a/tests/snippet_tests/test_scroll_points.rs b/tests/snippet_tests/test_scroll_points.rs deleted file mode 100644 index 06d7118f..00000000 --- a/tests/snippet_tests/test_scroll_points.rs +++ /dev/null @@ -1,39 +0,0 @@ - -#[tokio::test] -async fn test_scroll_points() { - async fn scroll_points() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/scroll_points.rs` file - use qdrant_client::qdrant::{Condition, Filter, ScrollPointsBuilder}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .scroll( - ScrollPointsBuilder::new("{collection_name}") - .filter(Filter::must([Condition::matches( - "color", - "red".to_string(), - )])) - .limit(1) - .with_payload(true) - .with_vectors(false), - ) - .await?; - - // Filter points matching any of the text words - client - .scroll( - ScrollPointsBuilder::new("{collection_name}") - .filter(Filter::must([Condition::matches_text_any( - "description", - "machine learning artificial intelligence", - )])) - .limit(10u32), - ) - .await?; - Ok(()) - } - let _ = scroll_points().await; -} diff --git a/tests/snippet_tests/test_scroll_points_with_vectors.rs b/tests/snippet_tests/test_scroll_points_with_vectors.rs deleted file mode 100644 index 73ba4d0c..00000000 --- a/tests/snippet_tests/test_scroll_points_with_vectors.rs +++ /dev/null @@ -1,32 +0,0 @@ - -#[tokio::test] -async fn test_scroll_points_with_vectors() { - async fn scroll_points_with_vectors() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/scroll_points_with_vectors.rs` file - use qdrant_client::qdrant::{Condition, Filter, ScrollPointsBuilder}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let scroll_response = client - .scroll( - ScrollPointsBuilder::new("{collection_name}") - .filter(Filter::must([Condition::matches( - "color", - "red".to_string(), - )])) - .limit(1) - .with_payload(true) - .with_vectors(true), - ) - .await?; - - for point in scroll_response.result { - let vector = point.vectors.unwrap().get_vector(); - println!("vector: {vector:?}"); - } - Ok(()) - } - let _ = scroll_points_with_vectors().await; -} diff --git a/tests/snippet_tests/test_search_batch_points.rs b/tests/snippet_tests/test_search_batch_points.rs deleted file mode 100644 index 836546a1..00000000 --- a/tests/snippet_tests/test_search_batch_points.rs +++ /dev/null @@ -1,31 +0,0 @@ - -#[tokio::test] -async fn test_search_batch_points() { - async fn search_batch_points() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/search_batch_points.rs` file - use qdrant_client::qdrant::{ - Condition, Filter, SearchBatchPointsBuilder, SearchPointsBuilder, - }; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let filter = Filter::must([Condition::matches("city", "London".to_string())]); - - let searches = vec![ - SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3) - .filter(filter.clone()) - .build(), - SearchPointsBuilder::new("{collection_name}", vec![0.5, 0.3, 0.2, 0.3], 3) - .filter(filter.clone()) - .build(), - ]; - - client - .search_batch_points(SearchBatchPointsBuilder::new("{collection_name}", searches)) - .await?; - Ok(()) - } - let _ = search_batch_points().await; -} diff --git a/tests/snippet_tests/test_search_matrix_offsets.rs b/tests/snippet_tests/test_search_matrix_offsets.rs deleted file mode 100644 index 276c87c3..00000000 --- a/tests/snippet_tests/test_search_matrix_offsets.rs +++ /dev/null @@ -1,26 +0,0 @@ - -#[tokio::test] -async fn test_search_matrix_offsets() { - async fn search_matrix_offsets() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/search_matrix_offsets.rs` file - use qdrant_client::qdrant::{Condition, SearchMatrixPointsBuilder, Filter}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .search_matrix_offsets( - SearchMatrixPointsBuilder::new("collection_name") - .filter(Filter::must(vec![Condition::matches( - "color", - "red".to_string(), - )])) - .sample(1000) - .limit(10), - ) - .await?; - Ok(()) - } - let _ = search_matrix_offsets().await; -} diff --git a/tests/snippet_tests/test_search_matrix_pairs.rs b/tests/snippet_tests/test_search_matrix_pairs.rs deleted file mode 100644 index bc4b198d..00000000 --- a/tests/snippet_tests/test_search_matrix_pairs.rs +++ /dev/null @@ -1,26 +0,0 @@ - -#[tokio::test] -async fn test_search_matrix_pairs() { - async fn search_matrix_pairs() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/search_matrix_pairs.rs` file - use qdrant_client::qdrant::{Condition, SearchMatrixPointsBuilder, Filter}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .search_matrix_pairs( - SearchMatrixPointsBuilder::new("collection_name") - .filter(Filter::must(vec![Condition::matches( - "color", - "red".to_string(), - )])) - .sample(1000) - .limit(10), - ) - .await?; - Ok(()) - } - let _ = search_matrix_pairs().await; -} diff --git a/tests/snippet_tests/test_search_point_groups.rs b/tests/snippet_tests/test_search_point_groups.rs deleted file mode 100644 index 85cf8a27..00000000 --- a/tests/snippet_tests/test_search_point_groups.rs +++ /dev/null @@ -1,24 +0,0 @@ - -#[tokio::test] -async fn test_search_point_groups() { - async fn search_point_groups() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/search_point_groups.rs` file - use qdrant_client::qdrant::SearchPointGroupsBuilder; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .search_groups(SearchPointGroupsBuilder::new( - "{collection_name}", - vec![1.1], - 4, - "document_id", - 2, - )) - .await?; - Ok(()) - } - let _ = search_point_groups().await; -} diff --git a/tests/snippet_tests/test_search_points.rs b/tests/snippet_tests/test_search_points.rs deleted file mode 100644 index 39b140b4..00000000 --- a/tests/snippet_tests/test_search_points.rs +++ /dev/null @@ -1,52 +0,0 @@ - -#[tokio::test] -async fn test_search_points() { - async fn search_points() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/search_points.rs` file - use qdrant_client::qdrant::{AcornSearchParamsBuilder, Condition, Filter, SearchParamsBuilder, SearchPointsBuilder, ShardKey, ShardKeySelectorBuilder}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .search_points( - SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3) - .filter(Filter::must([Condition::matches( - "city", - "London".to_string(), - )])) - .params(SearchParamsBuilder::default().hnsw_ef(128).exact(false)), - ) - .await?; - - // Search with ACORN enabled for filtered search - client - .search_points( - SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3) - .filter(Filter::must([Condition::matches( - "city", - "London".to_string(), - )])) - .params( - SearchParamsBuilder::default() - .hnsw_ef(128) - .acorn(AcornSearchParamsBuilder::new(true).max_selectivity(0.4)) - ), - ) - .await?; - - // Search in specific shards with fallback - client - .search_points( - SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3) - .shard_key_selector( - ShardKeySelectorBuilder::with_shard_keys(vec![ShardKey::from("shard_1".to_string())]) - .fallback(ShardKey::from("shard_backup".to_string())) - ), - ) - .await?; - Ok(()) - } - let _ = search_points().await; -} diff --git a/tests/snippet_tests/test_set_payload.rs b/tests/snippet_tests/test_set_payload.rs deleted file mode 100644 index 293e0bb0..00000000 --- a/tests/snippet_tests/test_set_payload.rs +++ /dev/null @@ -1,32 +0,0 @@ - -#[tokio::test] -async fn test_set_payload() { - async fn set_payload() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/set_payload.rs` file - use qdrant_client::qdrant::{PointsIdsList, SetPayloadPointsBuilder}; - use qdrant_client::{Qdrant, Payload}; - use serde_json::json; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let payload: Payload = json!({ - "property1": "string", - "property2": "string", - }) - .try_into() - .unwrap(); - - client - .set_payload( - SetPayloadPointsBuilder::new("{collection_name}", payload) - .points_selector(PointsIdsList { - ids: vec![0.into(), 3.into(), 10.into()], - }) - .wait(true), - ) - .await?; - Ok(()) - } - let _ = set_payload().await; -} diff --git a/tests/snippet_tests/test_update_aliases.rs b/tests/snippet_tests/test_update_aliases.rs deleted file mode 100644 index cedcf782..00000000 --- a/tests/snippet_tests/test_update_aliases.rs +++ /dev/null @@ -1,27 +0,0 @@ - -#[tokio::test] -async fn test_update_aliases() { - async fn update_aliases() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/update_aliases.rs` file - use qdrant_client::qdrant::{CreateAliasBuilder, DeleteAlias}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .create_alias(CreateAliasBuilder::new( - "example_collection", - "production_collection", - )) - .await?; - - client - .delete_alias(DeleteAlias { - alias_name: "production_collection".to_string(), - }) - .await?; - Ok(()) - } - let _ = update_aliases().await; -} diff --git a/tests/snippet_tests/test_update_collection.rs b/tests/snippet_tests/test_update_collection.rs deleted file mode 100644 index 5864034e..00000000 --- a/tests/snippet_tests/test_update_collection.rs +++ /dev/null @@ -1,22 +0,0 @@ - -#[tokio::test] -async fn test_update_collection() { - async fn update_collection() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/update_collection.rs` file - use qdrant_client::qdrant::{OptimizersConfigDiffBuilder, UpdateCollectionBuilder}; - use qdrant_client::Qdrant; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .update_collection( - UpdateCollectionBuilder::new("{collection_name}").optimizers_config( - OptimizersConfigDiffBuilder::default().indexing_threshold(10_000), - ), - ) - .await?; - Ok(()) - } - let _ = update_collection().await; -} diff --git a/tests/snippet_tests/test_update_collection_metadata.rs b/tests/snippet_tests/test_update_collection_metadata.rs deleted file mode 100644 index 280bf3e6..00000000 --- a/tests/snippet_tests/test_update_collection_metadata.rs +++ /dev/null @@ -1,28 +0,0 @@ - -#[tokio::test] -async fn test_update_collection_metadata() { - async fn update_collection_metadata() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/update_collection_metadata.rs` file - use qdrant_client::qdrant::{UpdateCollectionBuilder}; - use qdrant_client::Qdrant; - use serde_json::{json, Value}; - use std::collections::HashMap; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let mut metadata: HashMap = HashMap::new(); - metadata.insert("my-metadata-field".to_string(), json!({ - "key-a": "value-a", - "key-b": 42 - })); - - client - .update_collection( - UpdateCollectionBuilder::new("{collection_name}").metadata(metadata), - ) - .await?; - Ok(()) - } - let _ = update_collection_metadata().await; -} diff --git a/tests/snippet_tests/test_update_vectors.rs b/tests/snippet_tests/test_update_vectors.rs deleted file mode 100644 index 822fd3c6..00000000 --- a/tests/snippet_tests/test_update_vectors.rs +++ /dev/null @@ -1,43 +0,0 @@ - -#[tokio::test] -async fn test_update_vectors() { - async fn update_vectors() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/update_vectors.rs` file - use qdrant_client::qdrant::{PointVectors, UpdatePointVectorsBuilder}; - use qdrant_client::Qdrant; - use std::collections::HashMap; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .update_vectors( - UpdatePointVectorsBuilder::new( - "{collection_name}", - vec![ - PointVectors { - id: Some(1.into()), - vectors: Some( - HashMap::from([("image".to_string(), vec![0.1, 0.2, 0.3, 0.4])]) - .into(), - ), - }, - PointVectors { - id: Some(2.into()), - vectors: Some( - HashMap::from([( - "text".to_string(), - vec![0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2], - )]) - .into(), - ), - }, - ], - ) - .wait(true), - ) - .await?; - Ok(()) - } - let _ = update_vectors().await; -} diff --git a/tests/snippet_tests/test_upsert_document.rs b/tests/snippet_tests/test_upsert_document.rs deleted file mode 100644 index 0c00ae44..00000000 --- a/tests/snippet_tests/test_upsert_document.rs +++ /dev/null @@ -1,36 +0,0 @@ - -#[tokio::test] -async fn test_upsert_document() { - async fn upsert_document() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/upsert_document.rs` file - use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder, Document}; - use qdrant_client::{Qdrant, Payload}; - use serde_json::json; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let document = Document::new("my document", "sentence-transformers/all-minilm-l6-v2"); - - client - .upsert_points( - UpsertPointsBuilder::new( - "{collection_name}", - vec![ - PointStruct::new( - 1, - document, - Payload::try_from(json!( - {"color": "red"} - )) - .unwrap(), - ) - ], - ) - .wait(true), - ) - .await?; - Ok(()) - } - let _ = upsert_document().await; -} diff --git a/tests/snippet_tests/test_upsert_image.rs b/tests/snippet_tests/test_upsert_image.rs deleted file mode 100644 index 0d7211a6..00000000 --- a/tests/snippet_tests/test_upsert_image.rs +++ /dev/null @@ -1,36 +0,0 @@ - -#[tokio::test] -async fn test_upsert_image() { - async fn upsert_image() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/upsert_image.rs` file - use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder, Image}; - use qdrant_client::{Qdrant, Payload}; - use serde_json::json; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let image = Image::new_from_url("https://picsum.photos/200/300.jpg", "Qdrant/clip-ViT-B-32-vision"); - - client - .upsert_points( - UpsertPointsBuilder::new( - "{collection_name}", - vec![ - PointStruct::new( - 1, - image, - Payload::try_from(json!( - {"color": "red"} - )) - .unwrap(), - ) - ], - ) - .wait(true), - ) - .await?; - Ok(()) - } - let _ = upsert_image().await; -} diff --git a/tests/snippet_tests/test_upsert_points.rs b/tests/snippet_tests/test_upsert_points.rs deleted file mode 100644 index 28741e13..00000000 --- a/tests/snippet_tests/test_upsert_points.rs +++ /dev/null @@ -1,50 +0,0 @@ - -#[tokio::test] -async fn test_upsert_points() { - async fn upsert_points() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/upsert_points.rs` file - use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder}; - use qdrant_client::{Qdrant, Payload}; - use serde_json::json; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - client - .upsert_points( - UpsertPointsBuilder::new( - "{collection_name}", - vec![ - PointStruct::new( - 1, - vec![0.9, 0.1, 0.1], - Payload::try_from(json!( - {"color": "red"} - )) - .unwrap(), - ), - PointStruct::new( - 2, - vec![0.1, 0.9, 0.1], - Payload::try_from(json!( - {"color": "green"} - )) - .unwrap(), - ), - PointStruct::new( - 3, - vec![0.1, 0.1, 0.9], - Payload::try_from(json!( - {"color": "blue"} - )) - .unwrap(), - ), - ], - ) - .wait(true), - ) - .await?; - Ok(()) - } - let _ = upsert_points().await; -} diff --git a/tests/snippet_tests/test_upsert_points_fallback_shard_key.rs b/tests/snippet_tests/test_upsert_points_fallback_shard_key.rs deleted file mode 100644 index 5f8ed3dc..00000000 --- a/tests/snippet_tests/test_upsert_points_fallback_shard_key.rs +++ /dev/null @@ -1,39 +0,0 @@ - -#[tokio::test] -async fn test_upsert_points_fallback_shard_key() { - async fn upsert_points_fallback_shard_key() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/upsert_points_fallback_shard_key.rs` file - use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder, ShardKeySelectorBuilder}; - use qdrant_client::{Payload, Qdrant}; - use serde_json::json; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let points = vec![ - PointStruct::new( - 1, - vec![0.05, 0.61, 0.76, 0.74], - Payload::try_from(json!({ - "city": "Berlin", - "price": 1.99, - "version": 3 - })).unwrap(), - ) - ]; - - let shard_key_selector = ShardKeySelectorBuilder::with_shard_key("tenant-123") - .fallback("default") - .add_shard_key("tenant-123") - .build(); - - client - .upsert_points( - UpsertPointsBuilder::new("{collection_name}", points) - .wait(true) - .shard_key_selector(shard_key_selector) - ).await?; - Ok(()) - } - let _ = upsert_points_fallback_shard_key().await; -} diff --git a/tests/snippet_tests/test_upsert_points_insert_only.rs b/tests/snippet_tests/test_upsert_points_insert_only.rs deleted file mode 100644 index 9e5bb799..00000000 --- a/tests/snippet_tests/test_upsert_points_insert_only.rs +++ /dev/null @@ -1,34 +0,0 @@ - -#[tokio::test] -async fn test_upsert_points_insert_only() { - async fn upsert_points_insert_only() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/upsert_points_insert_only.rs` file - use qdrant_client::qdrant::{PointStruct, UpdateMode, UpsertPointsBuilder}; - use qdrant_client::{Payload, Qdrant}; - use serde_json::json; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let points = vec![PointStruct::new( - 1, - vec![0.05, 0.61, 0.76, 0.74], - Payload::try_from(json!({ - "city": "Berlin", - "price": 1.99, - })) - .unwrap(), - )]; - - // Only insert new points, do not update existing ones - client - .upsert_points( - UpsertPointsBuilder::new("{collection_name}", points) - .wait(true) - .update_mode(UpdateMode::InsertOnly), - ) - .await?; - Ok(()) - } - let _ = upsert_points_insert_only().await; -} diff --git a/tests/snippet_tests/test_upsert_points_with_condition.rs b/tests/snippet_tests/test_upsert_points_with_condition.rs deleted file mode 100644 index 204a3d60..00000000 --- a/tests/snippet_tests/test_upsert_points_with_condition.rs +++ /dev/null @@ -1,34 +0,0 @@ - -#[tokio::test] -async fn test_upsert_points_with_condition() { - async fn upsert_points_with_condition() -> Result<(), Box> { - // WARNING: This is a generated test snippet. - // Please, modify the snippet in the `../snippets/upsert_points_with_condition.rs` file - use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder, Filter, Condition}; - use qdrant_client::{Payload, Qdrant}; - use serde_json::json; - - let client = Qdrant::from_url("http://localhost:6334").build()?; - - let points = vec![ - PointStruct::new( - 1, - vec![0.05, 0.61, 0.76, 0.74], - Payload::try_from(json!({ - "city": "Berlin", - "price": 1.99, - "version": 3 - })).unwrap(), - ) - ]; - - client - .upsert_points( - UpsertPointsBuilder::new("{collection_name}", points) - .wait(true) - .update_filter(Filter::must([Condition::matches("version", 2)])) - ).await?; - Ok(()) - } - let _ = upsert_points_with_condition().await; -} diff --git a/tests/snippets/batch_update.rs b/tests/snippets/batch_update.rs index decf523f..53ef07f0 100644 --- a/tests/snippets/batch_update.rs +++ b/tests/snippets/batch_update.rs @@ -1,56 +1,59 @@ -use qdrant_client::qdrant::{ - points_selector::PointsSelectorOneOf, - points_update_operation::{ +crate::qdrant_test_snippet!({ + use std::collections::HashMap; + + use qdrant_client::qdrant::points_selector::PointsSelectorOneOf; + use qdrant_client::qdrant::points_update_operation::{ Operation, OverwritePayload, PointStructList, UpdateVectors, - }, - PointStruct, PointVectors, PointsIdsList, PointsSelector, PointsUpdateOperation, - UpdateBatchPointsBuilder, -}; -use qdrant_client::{Qdrant, Payload}; -use serde_json::json; -use std::collections::HashMap; + }; + use qdrant_client::qdrant::{ + PointStruct, PointVectors, PointsIdsList, PointsSelector, PointsUpdateOperation, + UpdateBatchPointsBuilder, + }; + use qdrant_client::{Payload, Qdrant}; + use serde_json::json; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .update_points_batch( - UpdateBatchPointsBuilder::new( - "{collection_name}", - vec![ - PointsUpdateOperation { - operation: Some(Operation::Upsert(PointStructList { - points: vec![PointStruct::new( - 1, - vec![1.0, 2.0, 3.0, 4.0], - Payload::try_from(json!({})).unwrap(), - )], - ..Default::default() - })), - }, - PointsUpdateOperation { - operation: Some(Operation::UpdateVectors(UpdateVectors { - points: vec![PointVectors { - id: Some(1.into()), - vectors: Some(vec![1.0, 2.0, 3.0, 4.0].into()), - }], - ..Default::default() - })), - }, - PointsUpdateOperation { - operation: Some(Operation::OverwritePayload(OverwritePayload { - points_selector: Some(PointsSelector { - points_selector_one_of: Some(PointsSelectorOneOf::Points( - PointsIdsList { - ids: vec![1.into()], - }, - )), - }), - payload: HashMap::from([("test_payload".to_string(), 1.into())]), - ..Default::default() - })), - }, - ], + client + .update_points_batch( + UpdateBatchPointsBuilder::new( + "{collection_name}", + vec![ + PointsUpdateOperation { + operation: Some(Operation::Upsert(PointStructList { + points: vec![PointStruct::new( + 1, + vec![1.0, 2.0, 3.0, 4.0], + Payload::try_from(json!({})).unwrap(), + )], + ..Default::default() + })), + }, + PointsUpdateOperation { + operation: Some(Operation::UpdateVectors(UpdateVectors { + points: vec![PointVectors { + id: Some(1.into()), + vectors: Some(vec![1.0, 2.0, 3.0, 4.0].into()), + }], + ..Default::default() + })), + }, + PointsUpdateOperation { + operation: Some(Operation::OverwritePayload(OverwritePayload { + points_selector: Some(PointsSelector { + points_selector_one_of: Some(PointsSelectorOneOf::Points( + PointsIdsList { + ids: vec![1.into()], + }, + )), + }), + payload: HashMap::from([("test_payload".to_string(), 1.into())]), + ..Default::default() + })), + }, + ], + ) + .wait(true), ) - .wait(true), - ) - .await?; + .await?; +}); diff --git a/tests/snippets/clear_payload.rs b/tests/snippets/clear_payload.rs index bd2d4a32..d786bfcb 100644 --- a/tests/snippets/clear_payload.rs +++ b/tests/snippets/clear_payload.rs @@ -1,12 +1,14 @@ -use qdrant_client::qdrant::{ClearPayloadPointsBuilder, PointsIdsList}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{ClearPayloadPointsBuilder, PointsIdsList}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .clear_payload(ClearPayloadPointsBuilder::new("{collection_name}").points( - PointsIdsList { - ids: vec![0.into(), 3.into(), 100.into()], - }, - )) - .await?; + client + .clear_payload( + ClearPayloadPointsBuilder::new("{collection_name}").points(PointsIdsList { + ids: vec![0.into(), 3.into(), 100.into()], + }), + ) + .await?; +}); diff --git a/tests/snippets/collection_exists.rs b/tests/snippets/collection_exists.rs index d9824f3f..360f603b 100644 --- a/tests/snippets/collection_exists.rs +++ b/tests/snippets/collection_exists.rs @@ -1,5 +1,7 @@ -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client.collection_exists("{collection_name}").await?; + client.collection_exists("{collection_name}").await?; +}); diff --git a/tests/snippets/count_points.rs b/tests/snippets/count_points.rs index 39750eaf..eb3ef439 100644 --- a/tests/snippets/count_points.rs +++ b/tests/snippets/count_points.rs @@ -1,15 +1,17 @@ -use qdrant_client::qdrant::{Condition, CountPointsBuilder, Filter}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Condition, CountPointsBuilder, Filter}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .count( - CountPointsBuilder::new("{collection_name}") - .filter(Filter::must([Condition::matches( - "color", - "red".to_string(), - )])) - .exact(true), - ) - .await?; + client + .count( + CountPointsBuilder::new("{collection_name}") + .filter(Filter::must([Condition::matches( + "color", + "red".to_string(), + )])) + .exact(true), + ) + .await?; +}); diff --git a/tests/snippets/create_collection.rs b/tests/snippets/create_collection.rs index 774a3285..9ad679dc 100644 --- a/tests/snippets/create_collection.rs +++ b/tests/snippets/create_collection.rs @@ -1,11 +1,13 @@ -use qdrant_client::qdrant::{CreateCollectionBuilder, Distance, VectorParamsBuilder}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{CreateCollectionBuilder, Distance, VectorParamsBuilder}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .create_collection( - CreateCollectionBuilder::new("{collection_name}") - .vectors_config(VectorParamsBuilder::new(100, Distance::Cosine)), - ) - .await?; + client + .create_collection( + CreateCollectionBuilder::new("{collection_name}") + .vectors_config(VectorParamsBuilder::new(100, Distance::Cosine)), + ) + .await?; +}); diff --git a/tests/snippets/create_collection_with_bq.rs b/tests/snippets/create_collection_with_bq.rs index fde5754a..882310e4 100644 --- a/tests/snippets/create_collection_with_bq.rs +++ b/tests/snippets/create_collection_with_bq.rs @@ -1,18 +1,21 @@ -use qdrant_client::qdrant::{ - BinaryQuantizationBuilder, BinaryQuantizationEncoding, CreateCollectionBuilder, Distance, VectorParamsBuilder, BinaryQuantizationQueryEncoding, -}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{ + BinaryQuantizationBuilder, BinaryQuantizationEncoding, BinaryQuantizationQueryEncoding, + CreateCollectionBuilder, Distance, VectorParamsBuilder, + }; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .create_collection( - CreateCollectionBuilder::new("{collection_name}") - .vectors_config(VectorParamsBuilder::new(1536, Distance::Cosine)) - .quantization_config( - BinaryQuantizationBuilder::new(true) - .encoding(BinaryQuantizationEncoding::TwoBits) - .query_encoding(BinaryQuantizationQueryEncoding::scalar8bits()) - ), - ) - .await?; \ No newline at end of file + client + .create_collection( + CreateCollectionBuilder::new("{collection_name}") + .vectors_config(VectorParamsBuilder::new(1536, Distance::Cosine)) + .quantization_config( + BinaryQuantizationBuilder::new(true) + .encoding(BinaryQuantizationEncoding::TwoBits) + .query_encoding(BinaryQuantizationQueryEncoding::scalar8bits()), + ), + ) + .await?; +}); diff --git a/tests/snippets/create_collection_with_metadata.rs b/tests/snippets/create_collection_with_metadata.rs index e3bd1b19..5b33494f 100644 --- a/tests/snippets/create_collection_with_metadata.rs +++ b/tests/snippets/create_collection_with_metadata.rs @@ -1,20 +1,21 @@ -use qdrant_client::qdrant::{CreateCollectionBuilder, Distance, VectorParamsBuilder}; -use qdrant_client::Qdrant; -use serde_json::{json, Value}; -use std::collections::HashMap; +crate::qdrant_test_snippet!({ + use std::collections::HashMap; -let client = Qdrant::from_url("http://localhost:6334").build()?; + use qdrant_client::qdrant::{CreateCollectionBuilder, Distance, VectorParamsBuilder}; + use qdrant_client::Qdrant; + use serde_json::{json, Value}; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let mut metadata: HashMap = HashMap::new(); -metadata.insert("my-metadata-field".to_string(), json!("value-1")); -metadata.insert("another-field".to_string(), json!(123)); + let mut metadata: HashMap = HashMap::new(); + metadata.insert("my-metadata-field".to_string(), json!("value-1")); + metadata.insert("another-field".to_string(), json!(123)); - -client - .create_collection( - CreateCollectionBuilder::new("{collection_name}") - .vectors_config(VectorParamsBuilder::new(100, Distance::Cosine)) - .metadata(metadata), - ) - .await?; + client + .create_collection( + CreateCollectionBuilder::new("{collection_name}") + .vectors_config(VectorParamsBuilder::new(100, Distance::Cosine)) + .metadata(metadata), + ) + .await?; +}); diff --git a/tests/snippets/create_field_index.rs b/tests/snippets/create_field_index.rs index 86aa7125..2546173f 100644 --- a/tests/snippets/create_field_index.rs +++ b/tests/snippets/create_field_index.rs @@ -1,14 +1,14 @@ -use qdrant_client::qdrant::{CreateFieldIndexCollectionBuilder, FieldType}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{CreateFieldIndexCollectionBuilder, FieldType}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .create_field_index( - CreateFieldIndexCollectionBuilder::new( + client + .create_field_index(CreateFieldIndexCollectionBuilder::new( "{collection_name}", "{field_name}", FieldType::Keyword, - ), - ) - .await?; + )) + .await?; +}); diff --git a/tests/snippets/create_full_snapshot.rs b/tests/snippets/create_full_snapshot.rs index 4088ed26..2773ddfc 100644 --- a/tests/snippets/create_full_snapshot.rs +++ b/tests/snippets/create_full_snapshot.rs @@ -1,5 +1,7 @@ -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client.create_full_snapshot().await?; + client.create_full_snapshot().await?; +}); diff --git a/tests/snippets/create_shard_key.rs b/tests/snippets/create_shard_key.rs index 6559eb74..0786baab 100644 --- a/tests/snippets/create_shard_key.rs +++ b/tests/snippets/create_shard_key.rs @@ -1,16 +1,19 @@ -use qdrant_client::qdrant::shard_key::Key; -use qdrant_client::qdrant::{CreateShardKeyBuilder, CreateShardKeyRequestBuilder}; -use qdrant_client::qdrant::ReplicaState; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::shard_key::Key; + use qdrant_client::qdrant::{ + CreateShardKeyBuilder, CreateShardKeyRequestBuilder, ReplicaState, + }; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .create_shard_key( - CreateShardKeyRequestBuilder::new("{collection_name}").request( - CreateShardKeyBuilder::default() - .shard_key(Key::Keyword("{shard_key}".to_string())) - .initial_state(ReplicaState::Active), - ), - ) - .await?; + client + .create_shard_key( + CreateShardKeyRequestBuilder::new("{collection_name}").request( + CreateShardKeyBuilder::default() + .shard_key(Key::Keyword("{shard_key}".to_string())) + .initial_state(ReplicaState::Active), + ), + ) + .await?; +}); diff --git a/tests/snippets/create_snapshot.rs b/tests/snippets/create_snapshot.rs index 9e24a7f8..070b66ea 100644 --- a/tests/snippets/create_snapshot.rs +++ b/tests/snippets/create_snapshot.rs @@ -1,5 +1,7 @@ -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client.create_snapshot("{collection_name}").await?; + client.create_snapshot("{collection_name}").await?; +}); diff --git a/tests/snippets/create_text_index.rs b/tests/snippets/create_text_index.rs index 8005cdc7..d6474ba9 100644 --- a/tests/snippets/create_text_index.rs +++ b/tests/snippets/create_text_index.rs @@ -1,24 +1,24 @@ -use qdrant_client::qdrant::{ - CreateFieldIndexCollectionBuilder, - TextIndexParamsBuilder, - FieldType, - TokenizerType, -}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{ + CreateFieldIndexCollectionBuilder, FieldType, TextIndexParamsBuilder, TokenizerType, + }; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let text_index_params = TextIndexParamsBuilder::new(TokenizerType::Word) - .min_token_len(2) - .max_token_len(10) - .lowercase(true); + let text_index_params = TextIndexParamsBuilder::new(TokenizerType::Word) + .min_token_len(2) + .max_token_len(10) + .lowercase(true); -client - .create_field_index( - CreateFieldIndexCollectionBuilder::new( - "{collection_name}", - "{field_name}", - FieldType::Text, - ).field_index_params(text_index_params.build()), - ) - .await?; \ No newline at end of file + client + .create_field_index( + CreateFieldIndexCollectionBuilder::new( + "{collection_name}", + "{field_name}", + FieldType::Text, + ) + .field_index_params(text_index_params.build()), + ) + .await?; +}); diff --git a/tests/snippets/delete_collection.rs b/tests/snippets/delete_collection.rs index c159486e..1f29eabb 100644 --- a/tests/snippets/delete_collection.rs +++ b/tests/snippets/delete_collection.rs @@ -1,5 +1,7 @@ -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client.delete_collection("{collection_name}").await?; + client.delete_collection("{collection_name}").await?; +}); diff --git a/tests/snippets/delete_field_index.rs b/tests/snippets/delete_field_index.rs index e52dbdfa..f1588922 100644 --- a/tests/snippets/delete_field_index.rs +++ b/tests/snippets/delete_field_index.rs @@ -1,11 +1,13 @@ -use qdrant_client::qdrant::DeleteFieldIndexCollectionBuilder; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::DeleteFieldIndexCollectionBuilder; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .delete_field_index(DeleteFieldIndexCollectionBuilder::new( - "{collection_name}", - "{field_name}", - )) - .await?; + client + .delete_field_index(DeleteFieldIndexCollectionBuilder::new( + "{collection_name}", + "{field_name}", + )) + .await?; +}); diff --git a/tests/snippets/delete_full_snapshot.rs b/tests/snippets/delete_full_snapshot.rs index 58c5838e..97f8d358 100644 --- a/tests/snippets/delete_full_snapshot.rs +++ b/tests/snippets/delete_full_snapshot.rs @@ -1,5 +1,7 @@ -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client.delete_full_snapshot("{snapshot_name}").await?; + client.delete_full_snapshot("{snapshot_name}").await?; +}); diff --git a/tests/snippets/delete_payload.rs b/tests/snippets/delete_payload.rs index 74549d9c..19a096b7 100644 --- a/tests/snippets/delete_payload.rs +++ b/tests/snippets/delete_payload.rs @@ -1,17 +1,19 @@ -use qdrant_client::qdrant::{DeletePayloadPointsBuilder, PointsIdsList}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{DeletePayloadPointsBuilder, PointsIdsList}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .delete_payload( - DeletePayloadPointsBuilder::new( - "{collection_name}", - vec!["color".to_string(), "price".to_string()], + client + .delete_payload( + DeletePayloadPointsBuilder::new( + "{collection_name}", + vec!["color".to_string(), "price".to_string()], + ) + .points_selector(PointsIdsList { + ids: vec![0.into(), 3.into(), 100.into()], + }) + .wait(true), ) - .points_selector(PointsIdsList { - ids: vec![0.into(), 3.into(), 100.into()], - }) - .wait(true), - ) - .await?; + .await?; +}); diff --git a/tests/snippets/delete_points.rs b/tests/snippets/delete_points.rs index 2bed7053..1adb5f86 100644 --- a/tests/snippets/delete_points.rs +++ b/tests/snippets/delete_points.rs @@ -1,25 +1,27 @@ -use qdrant_client::qdrant::{Condition, DeletePointsBuilder, Filter, PointsIdsList}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Condition, DeletePointsBuilder, Filter, PointsIdsList}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .delete_points( - DeletePointsBuilder::new("{collection_name}") - .points(PointsIdsList { - ids: vec![0.into(), 3.into(), 100.into()], - }) - .wait(true), - ) - .await?; + client + .delete_points( + DeletePointsBuilder::new("{collection_name}") + .points(PointsIdsList { + ids: vec![0.into(), 3.into(), 100.into()], + }) + .wait(true), + ) + .await?; -client - .delete_points( - DeletePointsBuilder::new("{collection_name}") - .points(Filter::must([Condition::matches( - "color", - "red".to_string(), - )])) - .wait(true), - ) - .await?; + client + .delete_points( + DeletePointsBuilder::new("{collection_name}") + .points(Filter::must([Condition::matches( + "color", + "red".to_string(), + )])) + .wait(true), + ) + .await?; +}); diff --git a/tests/snippets/delete_shard_key.rs b/tests/snippets/delete_shard_key.rs index 67283fa3..2e03c9b8 100644 --- a/tests/snippets/delete_shard_key.rs +++ b/tests/snippets/delete_shard_key.rs @@ -1,12 +1,14 @@ -use qdrant_client::qdrant::shard_key::Key; -use qdrant_client::qdrant::DeleteShardKeyRequestBuilder; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::shard_key::Key; + use qdrant_client::qdrant::DeleteShardKeyRequestBuilder; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .delete_shard_key( - DeleteShardKeyRequestBuilder::new("{collection_name}") - .key(Key::Keyword("{shard_key}".to_string())), - ) - .await?; + client + .delete_shard_key( + DeleteShardKeyRequestBuilder::new("{collection_name}") + .key(Key::Keyword("{shard_key}".to_string())), + ) + .await?; +}); diff --git a/tests/snippets/delete_snapshot.rs b/tests/snippets/delete_snapshot.rs index f6700cc2..747c8c25 100644 --- a/tests/snippets/delete_snapshot.rs +++ b/tests/snippets/delete_snapshot.rs @@ -1,11 +1,13 @@ -use qdrant_client::qdrant::DeleteSnapshotRequestBuilder; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::DeleteSnapshotRequestBuilder; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .delete_snapshot(DeleteSnapshotRequestBuilder::new( - "{collection_name}", - "{snapshot_name}", - )) - .await?; + client + .delete_snapshot(DeleteSnapshotRequestBuilder::new( + "{collection_name}", + "{snapshot_name}", + )) + .await?; +}); diff --git a/tests/snippets/delete_vectors.rs b/tests/snippets/delete_vectors.rs index 68dcc4e5..655c93ed 100644 --- a/tests/snippets/delete_vectors.rs +++ b/tests/snippets/delete_vectors.rs @@ -1,17 +1,19 @@ -use qdrant_client::qdrant::{DeletePointVectorsBuilder, PointsIdsList, VectorsSelector}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{DeletePointVectorsBuilder, PointsIdsList, VectorsSelector}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .delete_vectors( - DeletePointVectorsBuilder::new("{collection_name}") - .points_selector(PointsIdsList { - ids: vec![0.into(), 3.into(), 10.into()], - }) - .vectors(VectorsSelector { - names: vec!["text".into(), "image".into()], - }) - .wait(true), - ) - .await?; + client + .delete_vectors( + DeletePointVectorsBuilder::new("{collection_name}") + .points_selector(PointsIdsList { + ids: vec![0.into(), 3.into(), 10.into()], + }) + .vectors(VectorsSelector { + names: vec!["text".into(), "image".into()], + }) + .wait(true), + ) + .await?; +}); diff --git a/tests/snippets/discover_batch_points.rs b/tests/snippets/discover_batch_points.rs index efdfd75e..80bb98e7 100644 --- a/tests/snippets/discover_batch_points.rs +++ b/tests/snippets/discover_batch_points.rs @@ -1,45 +1,47 @@ -use qdrant_client::qdrant::{ - vector_example::Example, ContextExamplePairBuilder, DiscoverBatchPointsBuilder, - DiscoverPointsBuilder, -}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::vector_example::Example; + use qdrant_client::qdrant::{ + ContextExamplePairBuilder, DiscoverBatchPointsBuilder, DiscoverPointsBuilder, + }; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let discover_points = DiscoverBatchPointsBuilder::new( - "{collection_name}", - vec![ - DiscoverPointsBuilder::new( - "{collection_name}", - vec![ - ContextExamplePairBuilder::default() - .positive(Example::Id(100.into())) - .negative(Example::Id(718.into())) - .build(), - ContextExamplePairBuilder::default() - .positive(Example::Id(200.into())) - .negative(Example::Id(300.into())) - .build(), - ], - 10, - ) - .build(), - DiscoverPointsBuilder::new( - "{collection_name}", - vec![ - ContextExamplePairBuilder::default() - .positive(Example::Id(342.into())) - .negative(Example::Id(213.into())) - .build(), - ContextExamplePairBuilder::default() - .positive(Example::Id(100.into())) - .negative(Example::Id(200.into())) - .build(), - ], - 10, - ) - .build(), - ], -); + let discover_points = DiscoverBatchPointsBuilder::new( + "{collection_name}", + vec![ + DiscoverPointsBuilder::new( + "{collection_name}", + vec![ + ContextExamplePairBuilder::default() + .positive(Example::Id(100.into())) + .negative(Example::Id(718.into())) + .build(), + ContextExamplePairBuilder::default() + .positive(Example::Id(200.into())) + .negative(Example::Id(300.into())) + .build(), + ], + 10, + ) + .build(), + DiscoverPointsBuilder::new( + "{collection_name}", + vec![ + ContextExamplePairBuilder::default() + .positive(Example::Id(342.into())) + .negative(Example::Id(213.into())) + .build(), + ContextExamplePairBuilder::default() + .positive(Example::Id(100.into())) + .negative(Example::Id(200.into())) + .build(), + ], + 10, + ) + .build(), + ], + ); -client.discover_batch(&discover_points.build()).await?; + client.discover_batch(&discover_points.build()).await?; +}); diff --git a/tests/snippets/discover_points.rs b/tests/snippets/discover_points.rs index 2cc7e2d8..27afda63 100644 --- a/tests/snippets/discover_points.rs +++ b/tests/snippets/discover_points.rs @@ -1,29 +1,30 @@ -use qdrant_client::qdrant::{ - target_vector::Target, vector_example::Example, ContextExamplePairBuilder, - DiscoverPointsBuilder, VectorExample, -}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::target_vector::Target; + use qdrant_client::qdrant::vector_example::Example; + use qdrant_client::qdrant::{ContextExamplePairBuilder, DiscoverPointsBuilder, VectorExample}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .discover( - DiscoverPointsBuilder::new( - "{collection_name}", - vec![ - ContextExamplePairBuilder::default() - .positive(Example::Id(100.into())) - .negative(Example::Id(718.into())) - .build(), - ContextExamplePairBuilder::default() - .positive(Example::Id(200.into())) - .negative(Example::Id(300.into())) - .build(), - ], - 10, + client + .discover( + DiscoverPointsBuilder::new( + "{collection_name}", + vec![ + ContextExamplePairBuilder::default() + .positive(Example::Id(100.into())) + .negative(Example::Id(718.into())) + .build(), + ContextExamplePairBuilder::default() + .positive(Example::Id(200.into())) + .negative(Example::Id(300.into())) + .build(), + ], + 10, + ) + .target(Target::Single(VectorExample { + example: Some(Example::Vector(vec![0.2, 0.1, 0.9, 0.7].into())), + })), ) - .target(Target::Single(VectorExample { - example: Some(Example::Vector(vec![0.2, 0.1, 0.9, 0.7].into())), - })), - ) - .await?; + .await?; +}); diff --git a/tests/snippets/facets.rs b/tests/snippets/facets.rs index aea1be7a..9ffc6197 100644 --- a/tests/snippets/facets.rs +++ b/tests/snippets/facets.rs @@ -1,15 +1,17 @@ -use qdrant_client::qdrant::{Condition, FacetCountsBuilder, Filter}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Condition, FacetCountsBuilder, Filter}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .facet( - FacetCountsBuilder::new("world_data", "country") - .limit(10) - .filter(Filter::must(vec![Condition::matches( - "continent", - "Europe".to_string(), - )])), - ) - .await?; + client + .facet( + FacetCountsBuilder::new("world_data", "country") + .limit(10) + .filter(Filter::must(vec![Condition::matches( + "continent", + "Europe".to_string(), + )])), + ) + .await?; +}); diff --git a/tests/snippets/get_collection.rs b/tests/snippets/get_collection.rs index fa3ca1e2..c0dd0ed4 100644 --- a/tests/snippets/get_collection.rs +++ b/tests/snippets/get_collection.rs @@ -1,5 +1,7 @@ -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client.collection_info("{collection_name}").await?; + client.collection_info("{collection_name}").await?; +}); diff --git a/tests/snippets/get_collection_aliases.rs b/tests/snippets/get_collection_aliases.rs index 7b9c9a2e..7536afaf 100644 --- a/tests/snippets/get_collection_aliases.rs +++ b/tests/snippets/get_collection_aliases.rs @@ -1,5 +1,7 @@ -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client.list_collection_aliases("{collection_name}").await?; + client.list_collection_aliases("{collection_name}").await?; +}); diff --git a/tests/snippets/get_collections.rs b/tests/snippets/get_collections.rs index c04e2212..a8aef473 100644 --- a/tests/snippets/get_collections.rs +++ b/tests/snippets/get_collections.rs @@ -1,5 +1,7 @@ -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client.list_collections().await?; + client.list_collections().await?; +}); diff --git a/tests/snippets/get_collections_aliases.rs b/tests/snippets/get_collections_aliases.rs index 9864b2a9..78a97e84 100644 --- a/tests/snippets/get_collections_aliases.rs +++ b/tests/snippets/get_collections_aliases.rs @@ -1,5 +1,7 @@ -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client.list_aliases().await?; + client.list_aliases().await?; +}); diff --git a/tests/snippets/get_points.rs b/tests/snippets/get_points.rs index 37e21d8e..2dfa96b6 100644 --- a/tests/snippets/get_points.rs +++ b/tests/snippets/get_points.rs @@ -1,11 +1,13 @@ -use qdrant_client::qdrant::GetPointsBuilder; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::GetPointsBuilder; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .get_points(GetPointsBuilder::new( - "{collection_name}", - vec![0.into(), 30.into(), 100.into()], - )) - .await?; + client + .get_points(GetPointsBuilder::new( + "{collection_name}", + vec![0.into(), 30.into(), 100.into()], + )) + .await?; +}); diff --git a/tests/snippets/list_full_snapshots.rs b/tests/snippets/list_full_snapshots.rs index e0eda88c..569333c0 100644 --- a/tests/snippets/list_full_snapshots.rs +++ b/tests/snippets/list_full_snapshots.rs @@ -1,5 +1,7 @@ -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client.list_full_snapshots().await?; + client.list_full_snapshots().await?; +}); diff --git a/tests/snippets/list_shard_keys.rs b/tests/snippets/list_shard_keys.rs index 2e0dd0e6..9d94603c 100644 --- a/tests/snippets/list_shard_keys.rs +++ b/tests/snippets/list_shard_keys.rs @@ -1,5 +1,7 @@ -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let _response = client.list_shard_keys("{collection_name}").await?; + let _response = client.list_shard_keys("{collection_name}").await?; +}); diff --git a/tests/snippets/list_snapshots.rs b/tests/snippets/list_snapshots.rs index d594b6c8..a7df753b 100644 --- a/tests/snippets/list_snapshots.rs +++ b/tests/snippets/list_snapshots.rs @@ -1,5 +1,7 @@ -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client.list_snapshots("{collection_name}").await?; + client.list_snapshots("{collection_name}").await?; +}); diff --git a/tests/snippets/mod.rs b/tests/snippets/mod.rs new file mode 100644 index 00000000..7a8ee25b --- /dev/null +++ b/tests/snippets/mod.rs @@ -0,0 +1,59 @@ +mod batch_update; +mod clear_payload; +mod collection_exists; +mod count_points; +mod create_collection; +mod create_collection_with_bq; +mod create_collection_with_metadata; +mod create_field_index; +mod create_full_snapshot; +mod create_shard_key; +mod create_snapshot; +mod create_text_index; +mod delete_collection; +mod delete_field_index; +mod delete_full_snapshot; +mod delete_payload; +mod delete_points; +mod delete_shard_key; +mod delete_snapshot; +mod delete_vectors; +mod discover_batch_points; +mod discover_points; +mod facets; +mod get_collection; +mod get_collection_aliases; +mod get_collections; +mod get_collections_aliases; +mod get_points; +mod list_full_snapshots; +mod list_shard_keys; +mod list_snapshots; +mod overwrite_payload; +mod query_document; +mod query_image; +mod query_points; +mod query_points_groups; +mod query_points_relevance_feedback; +mod recommend_batch_points; +mod recommend_point_groups; +mod recommend_points; +mod replicate_points; +mod scroll_points; +mod scroll_points_with_vectors; +mod search_batch_points; +mod search_matrix_offsets; +mod search_matrix_pairs; +mod search_point_groups; +mod search_points; +mod set_payload; +mod update_aliases; +mod update_collection; +mod update_collection_metadata; +mod update_vectors; +mod upsert_document; +mod upsert_image; +mod upsert_points; +mod upsert_points_fallback_shard_key; +mod upsert_points_insert_only; +mod upsert_points_with_condition; diff --git a/tests/snippets/overwrite_payload.rs b/tests/snippets/overwrite_payload.rs index d22330fc..3fc4de80 100644 --- a/tests/snippets/overwrite_payload.rs +++ b/tests/snippets/overwrite_payload.rs @@ -1,24 +1,25 @@ -use qdrant_client::qdrant::{ - points_selector::PointsSelectorOneOf, PointsIdsList, SetPayloadPointsBuilder, -}; -use qdrant_client::{Qdrant, Payload}; -use serde_json::json; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::points_selector::PointsSelectorOneOf; + use qdrant_client::qdrant::{PointsIdsList, SetPayloadPointsBuilder}; + use qdrant_client::{Payload, Qdrant}; + use serde_json::json; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let payload: Payload = json!({ - "property1": "string", - "property2": "string", -}) -.try_into() -.unwrap(); + let payload: Payload = json!({ + "property1": "string", + "property2": "string", + }) + .try_into() + .unwrap(); -client - .overwrite_payload( - SetPayloadPointsBuilder::new("{collection_name}", payload) - .points_selector(PointsSelectorOneOf::Points(PointsIdsList { - ids: vec![0.into(), 3.into(), 10.into()], - })) - .wait(true), - ) - .await?; + client + .overwrite_payload( + SetPayloadPointsBuilder::new("{collection_name}", payload) + .points_selector(PointsSelectorOneOf::Points(PointsIdsList { + ids: vec![0.into(), 3.into(), 10.into()], + })) + .wait(true), + ) + .await?; +}); diff --git a/tests/snippets/query_document.rs b/tests/snippets/query_document.rs index bf0df6f6..74678c36 100644 --- a/tests/snippets/query_document.rs +++ b/tests/snippets/query_document.rs @@ -1,16 +1,14 @@ -use qdrant_client::qdrant::{Document, Query, QueryPointsBuilder}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Document, Query, QueryPointsBuilder}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let query_document = Document::new( - "my query text", - "sentence-transformers/all-minilm-l6-v2" -); + let query_document = Document::new("my query text", "sentence-transformers/all-minilm-l6-v2"); -let query_request = QueryPointsBuilder::new("{collection_name}") - .query(Query::new_nearest(query_document)); - -// ANN search with server-side inference -client.query(query_request).await?; + let query_request = + QueryPointsBuilder::new("{collection_name}").query(Query::new_nearest(query_document)); + // ANN search with server-side inference + client.query(query_request).await?; +}); diff --git a/tests/snippets/query_image.rs b/tests/snippets/query_image.rs index ed462986..43325b41 100644 --- a/tests/snippets/query_image.rs +++ b/tests/snippets/query_image.rs @@ -1,16 +1,17 @@ -use qdrant_client::qdrant::{Image, Query, QueryPointsBuilder}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Image, Query, QueryPointsBuilder}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let query_image = Image::new_from_url( - "https://picsum.photos/200/300.jpg", - "Qdrant/clip-ViT-B-32-vision" -); + let query_image = Image::new_from_url( + "https://picsum.photos/200/300.jpg", + "Qdrant/clip-ViT-B-32-vision", + ); -let query_request = QueryPointsBuilder::new("{collection_name}") - .query(Query::new_nearest(query_image)); - -// ANN search with server-side inference -client.query(query_request).await?; + let query_request = + QueryPointsBuilder::new("{collection_name}").query(Query::new_nearest(query_image)); + // ANN search with server-side inference + client.query(query_request).await?; +}); diff --git a/tests/snippets/query_points.rs b/tests/snippets/query_points.rs index 307a46fc..70965fef 100644 --- a/tests/snippets/query_points.rs +++ b/tests/snippets/query_points.rs @@ -1,173 +1,206 @@ -use qdrant_client::qdrant::{ - AcornSearchParamsBuilder, Condition, DecayParamsExpressionBuilder, Expression, - Filter, FormulaBuilder, Fusion, GeoPoint, - PointId, PrefetchQueryBuilder, Query, QueryPointsBuilder, - RecommendInputBuilder, RrfBuilder, Sample, - SearchParamsBuilder, ShardKey, ShardKeySelectorBuilder, -}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{ + AcornSearchParamsBuilder, Condition, DecayParamsExpressionBuilder, Expression, Filter, + FormulaBuilder, Fusion, GeoPoint, PointId, PrefetchQueryBuilder, Query, QueryPointsBuilder, + RecommendInputBuilder, RrfBuilder, Sample, SearchParamsBuilder, ShardKey, + ShardKeySelectorBuilder, + }; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -// Query nearest by ID -let _nearest = client.query( - QueryPointsBuilder::new("{collection_name}") - .query(PointId::from("43cf51e2-8777-4f52-bc74-c2cbde0c8b04")) -).await?; - -// Recommend on the average of these vectors -let _recommendations = client.query( - QueryPointsBuilder::new("{collection_name}") - .query(Query::new_recommend( - RecommendInputBuilder::default() - .add_positive(vec![0.1; 8]) - .add_negative(PointId::from(0)) - )) -).await?; - -// Fusion query -let _hybrid = client.query( - QueryPointsBuilder::new("{collection_name}") - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![(1, 0.22), (42, 0.8)]) - .using("sparse") - .limit(20u64) + // Query nearest by ID + let _nearest = client + .query( + QueryPointsBuilder::new("{collection_name}") + .query(PointId::from("43cf51e2-8777-4f52-bc74-c2cbde0c8b04")), ) - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![0.01, 0.45, 0.67]) - .using("dense") - .limit(20u64) + .await?; + + // Recommend on the average of these vectors + let _recommendations = client + .query( + QueryPointsBuilder::new("{collection_name}").query(Query::new_recommend( + RecommendInputBuilder::default() + .add_positive(vec![0.1; 8]) + .add_negative(PointId::from(0)), + )), ) - .query(Fusion::Rrf) -).await?; + .await?; -// 2-stage query -let _refined = client.query( - QueryPointsBuilder::new("{collection_name}") - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![0.01, 0.45, 0.67]) - .limit(100u64) + // Fusion query + let _hybrid = client + .query( + QueryPointsBuilder::new("{collection_name}") + .add_prefetch( + PrefetchQueryBuilder::default() + .query(vec![(1, 0.22), (42, 0.8)]) + .using("sparse") + .limit(20u64), + ) + .add_prefetch( + PrefetchQueryBuilder::default() + .query(vec![0.01, 0.45, 0.67]) + .using("dense") + .limit(20u64), + ) + .query(Fusion::Rrf), ) - .query(vec![ - vec![0.1, 0.2], - vec![0.2, 0.1], - vec![0.8, 0.9], - ]) - .using("colbert") - .limit(10u64) -).await?; + .await?; -// Random sampling (as of 1.11.0) -let _sampled = client - .query( - QueryPointsBuilder::new("{collection_name}") - .query(Query::new_sample(Sample::Random)) - ) - .await?; + // 2-stage query + let _refined = client + .query( + QueryPointsBuilder::new("{collection_name}") + .add_prefetch( + PrefetchQueryBuilder::default() + .query(vec![0.01, 0.45, 0.67]) + .limit(100u64), + ) + .query(vec![vec![0.1, 0.2], vec![0.2, 0.1], vec![0.8, 0.9]]) + .using("colbert") + .limit(10u64), + ) + .await?; -// Score boost depending on payload conditions (as of 1.14.0) -let _tag_boosted = client.query( - QueryPointsBuilder::new("{collection_name}") - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![0.01, 0.45, 0.67]) - .limit(100u64) + // Random sampling (as of 1.11.0) + let _sampled = client + .query( + QueryPointsBuilder::new("{collection_name}").query(Query::new_sample(Sample::Random)), ) - .query(FormulaBuilder::new(Expression::sum_with([ - Expression::score(), - Expression::mult_with([ - Expression::constant(0.5), - Expression::condition(Condition::matches("tag", ["h1", "h2", "h3", "h4"])), - ]), - Expression::mult_with([ - Expression::constant(0.25), - Expression::condition(Condition::matches("tag", ["p", "li"])), - ]), - ]))) - .limit(10) -).await?; + .await?; -// Score boost geographically closer points (as of 1.14.0) -let _geo_boosted = client.query( - QueryPointsBuilder::new("{collection_name}") - .add_prefetch( - PrefetchQueryBuilder::default() - .query(vec![0.01, 0.45, 0.67]) - .limit(100u64), - ) - .query( - FormulaBuilder::new(Expression::sum_with([ + // Score boost depending on payload conditions (as of 1.14.0) + let _tag_boosted = client + .query( + QueryPointsBuilder::new("{collection_name}") + .add_prefetch( + PrefetchQueryBuilder::default() + .query(vec![0.01, 0.45, 0.67]) + .limit(100u64), + ) + .query(FormulaBuilder::new(Expression::sum_with([ Expression::score(), - Expression::exp_decay( - DecayParamsExpressionBuilder::new(Expression::geo_distance_with( - // Berlin - GeoPoint { lat: 52.504043, lon: 13.393236 }, - "geo.location", - )) - .scale(5_000.0), - ), - ])) - // Munich - .add_default("geo.location", GeoPoint { lat: 48.137154, lon: 11.576124 }), - ) - .limit(10), - ) - .await?; - -// RRF fusion query using Query::new_rrf constructor -let _rrf_hybrid = client.query( - QueryPointsBuilder::new("{collection_name}") - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![(1, 0.22), (42, 0.8)]) - .using("sparse") - .limit(20u64) + Expression::mult_with([ + Expression::constant(0.5), + Expression::condition(Condition::matches("tag", ["h1", "h2", "h3", "h4"])), + ]), + Expression::mult_with([ + Expression::constant(0.25), + Expression::condition(Condition::matches("tag", ["p", "li"])), + ]), + ]))) + .limit(10), ) - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![0.01, 0.45, 0.67]) - .using("dense") - .limit(20u64) + .await?; + + // Score boost geographically closer points (as of 1.14.0) + let _geo_boosted = client + .query( + QueryPointsBuilder::new("{collection_name}") + .add_prefetch( + PrefetchQueryBuilder::default() + .query(vec![0.01, 0.45, 0.67]) + .limit(100u64), + ) + .query( + FormulaBuilder::new(Expression::sum_with([ + Expression::score(), + Expression::exp_decay( + DecayParamsExpressionBuilder::new(Expression::geo_distance_with( + // Berlin + GeoPoint { + lat: 52.504043, + lon: 13.393236, + }, + "geo.location", + )) + .scale(5_000.0), + ), + ])) + // Munich + .add_default( + "geo.location", + GeoPoint { + lat: 48.137154, + lon: 11.576124, + }, + ), + ) + .limit(10), ) - .query(Query::new_rrf(RrfBuilder::new())) -).await?; + .await?; -// RRF with custom k parameter -let _rrf_custom = client.query( - QueryPointsBuilder::new("{collection_name}") - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![(1, 0.22), (42, 0.8)]) - .using("sparse") - .limit(20u64) + // RRF fusion query using Query::new_rrf constructor + let _rrf_hybrid = client + .query( + QueryPointsBuilder::new("{collection_name}") + .add_prefetch( + PrefetchQueryBuilder::default() + .query(vec![(1, 0.22), (42, 0.8)]) + .using("sparse") + .limit(20u64), + ) + .add_prefetch( + PrefetchQueryBuilder::default() + .query(vec![0.01, 0.45, 0.67]) + .using("dense") + .limit(20u64), + ) + .query(Query::new_rrf(RrfBuilder::new())), ) - .add_prefetch(PrefetchQueryBuilder::default() - .query(vec![0.01, 0.45, 0.67]) - .using("dense") - .limit(20u64) + .await?; + + // RRF with custom k parameter + let _rrf_custom = client + .query( + QueryPointsBuilder::new("{collection_name}") + .add_prefetch( + PrefetchQueryBuilder::default() + .query(vec![(1, 0.22), (42, 0.8)]) + .using("sparse") + .limit(20u64), + ) + .add_prefetch( + PrefetchQueryBuilder::default() + .query(vec![0.01, 0.45, 0.67]) + .using("dense") + .limit(20u64), + ) + .query(Query::new_rrf(RrfBuilder::with_k(100))), ) - .query(Query::new_rrf(RrfBuilder::with_k(100))) -).await?; + .await?; -// Query with ACORN enabled for filtered query -let _acorn_query = client.query( - QueryPointsBuilder::new("{collection_name}") - .query(vec![0.01, 0.45, 0.67]) - .filter(Filter::must([Condition::matches( - "category", - "electronics".to_string(), - )])) - .params( - SearchParamsBuilder::default() - .hnsw_ef(128) - .acorn(AcornSearchParamsBuilder::new(true).max_selectivity(0.4)) + // Query with ACORN enabled for filtered query + let _acorn_query = client + .query( + QueryPointsBuilder::new("{collection_name}") + .query(vec![0.01, 0.45, 0.67]) + .filter(Filter::must([Condition::matches( + "category", + "electronics".to_string(), + )])) + .params( + SearchParamsBuilder::default() + .hnsw_ef(128) + .acorn(AcornSearchParamsBuilder::new(true).max_selectivity(0.4)), + ) + .limit(10u64), ) - .limit(10u64) -).await?; + .await?; -// Query in specific shards with fallback -let _shard_query = client.query( - QueryPointsBuilder::new("{collection_name}") - .query(vec![0.01, 0.45, 0.67]) - .shard_key_selector( - ShardKeySelectorBuilder::with_shard_keys(vec![ShardKey::from("shard_1".to_string())]) - .fallback(ShardKey::from("shard_backup".to_string())) + // Query in specific shards with fallback + let _shard_query = client + .query( + QueryPointsBuilder::new("{collection_name}") + .query(vec![0.01, 0.45, 0.67]) + .shard_key_selector( + ShardKeySelectorBuilder::with_shard_keys(vec![ShardKey::from( + "shard_1".to_string(), + )]) + .fallback(ShardKey::from("shard_backup".to_string())), + ) + .limit(10u64), ) - .limit(10u64) -).await?; + .await?; +}); diff --git a/tests/snippets/query_points_groups.rs b/tests/snippets/query_points_groups.rs index 57269658..a3272be9 100644 --- a/tests/snippets/query_points_groups.rs +++ b/tests/snippets/query_points_groups.rs @@ -1,11 +1,15 @@ -use qdrant_client::Qdrant; -use qdrant_client::qdrant::{Query, QueryPointGroupsBuilder}; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Query, QueryPointGroupsBuilder}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client.query_groups( - QueryPointGroupsBuilder::new("{collection_name}", "document_id") - .query(Query::from(vec![0.01, 0.45, 0.67])) - .limit(10u64) - .group_size(5u64) -).await?; + client + .query_groups( + QueryPointGroupsBuilder::new("{collection_name}", "document_id") + .query(Query::from(vec![0.01, 0.45, 0.67])) + .limit(10u64) + .group_size(5u64), + ) + .await?; +}); diff --git a/tests/snippets/query_points_relevance_feedback.rs b/tests/snippets/query_points_relevance_feedback.rs index f4433c50..95700ab3 100644 --- a/tests/snippets/query_points_relevance_feedback.rs +++ b/tests/snippets/query_points_relevance_feedback.rs @@ -1,19 +1,29 @@ -use qdrant_client::qdrant::{ - FeedbackItemBuilder, FeedbackStrategyBuilder, PointId, Query, QueryPointsBuilder, - RelevanceFeedbackInputBuilder, VectorInput, -}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{ + FeedbackItemBuilder, FeedbackStrategyBuilder, PointId, Query, QueryPointsBuilder, + RelevanceFeedbackInputBuilder, VectorInput, + }; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -// Relevance feedback query (as of 1.17.0) -let _feedback = client.query( - QueryPointsBuilder::new("{collection_name}") - .query(Query::new_relevance_feedback( - RelevanceFeedbackInputBuilder::new(vec![0.01, 0.45, 0.67]) - .add_feedback(FeedbackItemBuilder::new(VectorInput::new_id(PointId::from(42)), 0.9)) - .add_feedback(FeedbackItemBuilder::new(VectorInput::new_id(PointId::from(7)), 0.1)) - .strategy(FeedbackStrategyBuilder::naive(1.0, 1.0, 1.0)) - )) - .limit(10u64) -).await?; + // Relevance feedback query (as of 1.17.0) + let _feedback = client + .query( + QueryPointsBuilder::new("{collection_name}") + .query(Query::new_relevance_feedback( + RelevanceFeedbackInputBuilder::new(vec![0.01, 0.45, 0.67]) + .add_feedback(FeedbackItemBuilder::new( + VectorInput::new_id(PointId::from(42)), + 0.9, + )) + .add_feedback(FeedbackItemBuilder::new( + VectorInput::new_id(PointId::from(7)), + 0.1, + )) + .strategy(FeedbackStrategyBuilder::naive(1.0, 1.0, 1.0)), + )) + .limit(10u64), + ) + .await?; +}); diff --git a/tests/snippets/recommend_batch_points.rs b/tests/snippets/recommend_batch_points.rs index 5d6abfd3..9c1a7138 100644 --- a/tests/snippets/recommend_batch_points.rs +++ b/tests/snippets/recommend_batch_points.rs @@ -1,29 +1,31 @@ -use qdrant_client::qdrant::{ - Condition, Filter, RecommendBatchPointsBuilder, RecommendPointsBuilder, -}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{ + Condition, Filter, RecommendBatchPointsBuilder, RecommendPointsBuilder, + }; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let filter = Filter::must([Condition::matches("city", "London".to_string())]); -let recommend_queries = vec![ - RecommendPointsBuilder::new("{collection_name}", 3) - .add_positive(100) - .add_positive(231) - .add_negative(718) - .filter(filter.clone()) - .build(), - RecommendPointsBuilder::new("{collection_name}", 3) - .add_positive(200) - .add_positive(67) - .add_negative(300) - .filter(filter.clone()) - .build(), -]; + let filter = Filter::must([Condition::matches("city", "London".to_string())]); + let recommend_queries = vec![ + RecommendPointsBuilder::new("{collection_name}", 3) + .add_positive(100) + .add_positive(231) + .add_negative(718) + .filter(filter.clone()) + .build(), + RecommendPointsBuilder::new("{collection_name}", 3) + .add_positive(200) + .add_positive(67) + .add_negative(300) + .filter(filter.clone()) + .build(), + ]; -client - .recommend_batch(RecommendBatchPointsBuilder::new( - "{collection_name}", - recommend_queries, - )) - .await?; + client + .recommend_batch(RecommendBatchPointsBuilder::new( + "{collection_name}", + recommend_queries, + )) + .await?; +}); diff --git a/tests/snippets/recommend_point_groups.rs b/tests/snippets/recommend_point_groups.rs index d37e9a87..6701c09b 100644 --- a/tests/snippets/recommend_point_groups.rs +++ b/tests/snippets/recommend_point_groups.rs @@ -1,14 +1,16 @@ -use qdrant_client::qdrant::{RecommendPointGroupsBuilder, RecommendStrategy}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{RecommendPointGroupsBuilder, RecommendStrategy}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .recommend_groups( - RecommendPointGroupsBuilder::new("{collection_name}", "document_id", 2, 3) - .add_positive(100) - .add_positive(200) - .add_negative(718) - .strategy(RecommendStrategy::AverageVector), - ) - .await?; + client + .recommend_groups( + RecommendPointGroupsBuilder::new("{collection_name}", "document_id", 2, 3) + .add_positive(100) + .add_positive(200) + .add_negative(718) + .strategy(RecommendStrategy::AverageVector), + ) + .await?; +}); diff --git a/tests/snippets/recommend_points.rs b/tests/snippets/recommend_points.rs index c22ef539..43a17d78 100644 --- a/tests/snippets/recommend_points.rs +++ b/tests/snippets/recommend_points.rs @@ -1,20 +1,22 @@ -use qdrant_client::qdrant::{Condition, Filter, RecommendPointsBuilder, RecommendStrategy}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Condition, Filter, RecommendPointsBuilder, RecommendStrategy}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .recommend( - RecommendPointsBuilder::new("{collection_name}", 3) - .add_positive(100) - .add_positive(200) - .add_positive(vec![100.0, 231.0]) - .add_negative(718) - .add_negative(vec![0.2, 0.3, 0.4, 0.5]) - .strategy(RecommendStrategy::AverageVector) - .filter(Filter::must([Condition::matches( - "city", - "London".to_string(), - )])), - ) - .await?; + client + .recommend( + RecommendPointsBuilder::new("{collection_name}", 3) + .add_positive(100) + .add_positive(200) + .add_positive(vec![100.0, 231.0]) + .add_negative(718) + .add_negative(vec![0.2, 0.3, 0.4, 0.5]) + .strategy(RecommendStrategy::AverageVector) + .filter(Filter::must([Condition::matches( + "city", + "London".to_string(), + )])), + ) + .await?; +}); diff --git a/tests/snippets/replicate_points.rs b/tests/snippets/replicate_points.rs index 9d786a4f..8ff49ffe 100644 --- a/tests/snippets/replicate_points.rs +++ b/tests/snippets/replicate_points.rs @@ -1,25 +1,27 @@ -use qdrant_client::qdrant::{ - update_collection_cluster_setup_request::Operation, Condition, Filter, - ReplicatePointsBuilder, ShardKey, UpdateCollectionClusterSetupRequest, -}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::update_collection_cluster_setup_request::Operation; + use qdrant_client::qdrant::{ + Condition, Filter, ReplicatePointsBuilder, ShardKey, UpdateCollectionClusterSetupRequest, + }; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .update_collection_cluster_setup(UpdateCollectionClusterSetupRequest { - collection_name: "{collection_name}".to_string(), - operation: Some(Operation::ReplicatePoints( - ReplicatePointsBuilder::new( - ShardKey::from("source_shard"), - ShardKey::from("target_shard"), - ) - .filter(Filter::must([Condition::matches( - "user", - "tenant-123".to_string(), - )])) - .build(), - )), - timeout: None, - }) - .await?; + client + .update_collection_cluster_setup(UpdateCollectionClusterSetupRequest { + collection_name: "{collection_name}".to_string(), + operation: Some(Operation::ReplicatePoints( + ReplicatePointsBuilder::new( + ShardKey::from("source_shard"), + ShardKey::from("target_shard"), + ) + .filter(Filter::must([Condition::matches( + "user", + "tenant-123".to_string(), + )])) + .build(), + )), + timeout: None, + }) + .await?; +}); diff --git a/tests/snippets/scroll_points.rs b/tests/snippets/scroll_points.rs index 28458624..53f84efe 100644 --- a/tests/snippets/scroll_points.rs +++ b/tests/snippets/scroll_points.rs @@ -1,29 +1,31 @@ -use qdrant_client::qdrant::{Condition, Filter, ScrollPointsBuilder}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Condition, Filter, ScrollPointsBuilder}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .scroll( - ScrollPointsBuilder::new("{collection_name}") - .filter(Filter::must([Condition::matches( - "color", - "red".to_string(), - )])) - .limit(1) - .with_payload(true) - .with_vectors(false), - ) - .await?; + client + .scroll( + ScrollPointsBuilder::new("{collection_name}") + .filter(Filter::must([Condition::matches( + "color", + "red".to_string(), + )])) + .limit(1) + .with_payload(true) + .with_vectors(false), + ) + .await?; -// Filter points matching any of the text words -client - .scroll( - ScrollPointsBuilder::new("{collection_name}") - .filter(Filter::must([Condition::matches_text_any( - "description", - "machine learning artificial intelligence", - )])) - .limit(10u32), - ) - .await?; + // Filter points matching any of the text words + client + .scroll( + ScrollPointsBuilder::new("{collection_name}") + .filter(Filter::must([Condition::matches_text_any( + "description", + "machine learning artificial intelligence", + )])) + .limit(10u32), + ) + .await?; +}); diff --git a/tests/snippets/scroll_points_with_vectors.rs b/tests/snippets/scroll_points_with_vectors.rs index a0da2859..6282e952 100644 --- a/tests/snippets/scroll_points_with_vectors.rs +++ b/tests/snippets/scroll_points_with_vectors.rs @@ -1,22 +1,24 @@ -use qdrant_client::qdrant::{Condition, Filter, ScrollPointsBuilder}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Condition, Filter, ScrollPointsBuilder}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let scroll_response = client - .scroll( - ScrollPointsBuilder::new("{collection_name}") - .filter(Filter::must([Condition::matches( - "color", - "red".to_string(), - )])) - .limit(1) - .with_payload(true) - .with_vectors(true), - ) - .await?; + let scroll_response = client + .scroll( + ScrollPointsBuilder::new("{collection_name}") + .filter(Filter::must([Condition::matches( + "color", + "red".to_string(), + )])) + .limit(1) + .with_payload(true) + .with_vectors(true), + ) + .await?; -for point in scroll_response.result { - let vector = point.vectors.unwrap().get_vector(); - println!("vector: {vector:?}"); -} \ No newline at end of file + for point in scroll_response.result { + let vector = point.vectors.unwrap().get_vector(); + println!("vector: {vector:?}"); + } +}); diff --git a/tests/snippets/search_batch_points.rs b/tests/snippets/search_batch_points.rs index 145f60dd..ac23d400 100644 --- a/tests/snippets/search_batch_points.rs +++ b/tests/snippets/search_batch_points.rs @@ -1,21 +1,21 @@ -use qdrant_client::qdrant::{ - Condition, Filter, SearchBatchPointsBuilder, SearchPointsBuilder, -}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Condition, Filter, SearchBatchPointsBuilder, SearchPointsBuilder}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let filter = Filter::must([Condition::matches("city", "London".to_string())]); + let filter = Filter::must([Condition::matches("city", "London".to_string())]); -let searches = vec![ - SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3) - .filter(filter.clone()) - .build(), - SearchPointsBuilder::new("{collection_name}", vec![0.5, 0.3, 0.2, 0.3], 3) - .filter(filter.clone()) - .build(), -]; + let searches = vec![ + SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3) + .filter(filter.clone()) + .build(), + SearchPointsBuilder::new("{collection_name}", vec![0.5, 0.3, 0.2, 0.3], 3) + .filter(filter.clone()) + .build(), + ]; -client - .search_batch_points(SearchBatchPointsBuilder::new("{collection_name}", searches)) - .await?; + client + .search_batch_points(SearchBatchPointsBuilder::new("{collection_name}", searches)) + .await?; +}); diff --git a/tests/snippets/search_matrix_offsets.rs b/tests/snippets/search_matrix_offsets.rs index 1e9980fa..01eeba7d 100644 --- a/tests/snippets/search_matrix_offsets.rs +++ b/tests/snippets/search_matrix_offsets.rs @@ -1,16 +1,18 @@ -use qdrant_client::qdrant::{Condition, SearchMatrixPointsBuilder, Filter}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Condition, Filter, SearchMatrixPointsBuilder}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .search_matrix_offsets( - SearchMatrixPointsBuilder::new("collection_name") - .filter(Filter::must(vec![Condition::matches( - "color", - "red".to_string(), - )])) - .sample(1000) - .limit(10), - ) - .await?; + client + .search_matrix_offsets( + SearchMatrixPointsBuilder::new("collection_name") + .filter(Filter::must(vec![Condition::matches( + "color", + "red".to_string(), + )])) + .sample(1000) + .limit(10), + ) + .await?; +}); diff --git a/tests/snippets/search_matrix_pairs.rs b/tests/snippets/search_matrix_pairs.rs index a72dc48d..d559ac71 100644 --- a/tests/snippets/search_matrix_pairs.rs +++ b/tests/snippets/search_matrix_pairs.rs @@ -1,16 +1,18 @@ -use qdrant_client::qdrant::{Condition, SearchMatrixPointsBuilder, Filter}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Condition, Filter, SearchMatrixPointsBuilder}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .search_matrix_pairs( - SearchMatrixPointsBuilder::new("collection_name") - .filter(Filter::must(vec![Condition::matches( - "color", - "red".to_string(), - )])) - .sample(1000) - .limit(10), - ) - .await?; + client + .search_matrix_pairs( + SearchMatrixPointsBuilder::new("collection_name") + .filter(Filter::must(vec![Condition::matches( + "color", + "red".to_string(), + )])) + .sample(1000) + .limit(10), + ) + .await?; +}); diff --git a/tests/snippets/search_point_groups.rs b/tests/snippets/search_point_groups.rs index 84cd91e1..33791887 100644 --- a/tests/snippets/search_point_groups.rs +++ b/tests/snippets/search_point_groups.rs @@ -1,14 +1,16 @@ -use qdrant_client::qdrant::SearchPointGroupsBuilder; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::SearchPointGroupsBuilder; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .search_groups(SearchPointGroupsBuilder::new( - "{collection_name}", - vec![1.1], - 4, - "document_id", - 2, - )) - .await?; + client + .search_groups(SearchPointGroupsBuilder::new( + "{collection_name}", + vec![1.1], + 4, + "document_id", + 2, + )) + .await?; +}); diff --git a/tests/snippets/search_points.rs b/tests/snippets/search_points.rs index e2ca3325..460440a9 100644 --- a/tests/snippets/search_points.rs +++ b/tests/snippets/search_points.rs @@ -1,42 +1,49 @@ -use qdrant_client::qdrant::{AcornSearchParamsBuilder, Condition, Filter, SearchParamsBuilder, SearchPointsBuilder, ShardKey, ShardKeySelectorBuilder}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{ + AcornSearchParamsBuilder, Condition, Filter, SearchParamsBuilder, SearchPointsBuilder, + ShardKey, ShardKeySelectorBuilder, + }; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .search_points( - SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3) - .filter(Filter::must([Condition::matches( - "city", - "London".to_string(), - )])) - .params(SearchParamsBuilder::default().hnsw_ef(128).exact(false)), - ) - .await?; + client + .search_points( + SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3) + .filter(Filter::must([Condition::matches( + "city", + "London".to_string(), + )])) + .params(SearchParamsBuilder::default().hnsw_ef(128).exact(false)), + ) + .await?; -// Search with ACORN enabled for filtered search -client - .search_points( - SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3) - .filter(Filter::must([Condition::matches( - "city", - "London".to_string(), - )])) - .params( - SearchParamsBuilder::default() - .hnsw_ef(128) - .acorn(AcornSearchParamsBuilder::new(true).max_selectivity(0.4)) - ), - ) - .await?; + // Search with ACORN enabled for filtered search + client + .search_points( + SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3) + .filter(Filter::must([Condition::matches( + "city", + "London".to_string(), + )])) + .params( + SearchParamsBuilder::default() + .hnsw_ef(128) + .acorn(AcornSearchParamsBuilder::new(true).max_selectivity(0.4)), + ), + ) + .await?; -// Search in specific shards with fallback -client - .search_points( - SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3) - .shard_key_selector( - ShardKeySelectorBuilder::with_shard_keys(vec![ShardKey::from("shard_1".to_string())]) - .fallback(ShardKey::from("shard_backup".to_string())) - ), - ) - .await?; + // Search in specific shards with fallback + client + .search_points( + SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3) + .shard_key_selector( + ShardKeySelectorBuilder::with_shard_keys(vec![ShardKey::from( + "shard_1".to_string(), + )]) + .fallback(ShardKey::from("shard_backup".to_string())), + ), + ) + .await?; +}); diff --git a/tests/snippets/set_payload.rs b/tests/snippets/set_payload.rs index 0814096f..a136e345 100644 --- a/tests/snippets/set_payload.rs +++ b/tests/snippets/set_payload.rs @@ -1,22 +1,24 @@ -use qdrant_client::qdrant::{PointsIdsList, SetPayloadPointsBuilder}; -use qdrant_client::{Qdrant, Payload}; -use serde_json::json; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{PointsIdsList, SetPayloadPointsBuilder}; + use qdrant_client::{Payload, Qdrant}; + use serde_json::json; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let payload: Payload = json!({ - "property1": "string", - "property2": "string", -}) -.try_into() -.unwrap(); + let payload: Payload = json!({ + "property1": "string", + "property2": "string", + }) + .try_into() + .unwrap(); -client - .set_payload( - SetPayloadPointsBuilder::new("{collection_name}", payload) - .points_selector(PointsIdsList { - ids: vec![0.into(), 3.into(), 10.into()], - }) - .wait(true), - ) - .await?; + client + .set_payload( + SetPayloadPointsBuilder::new("{collection_name}", payload) + .points_selector(PointsIdsList { + ids: vec![0.into(), 3.into(), 10.into()], + }) + .wait(true), + ) + .await?; +}); diff --git a/tests/snippets/update_aliases.rs b/tests/snippets/update_aliases.rs index 98ed9fcb..ff3e3f83 100644 --- a/tests/snippets/update_aliases.rs +++ b/tests/snippets/update_aliases.rs @@ -1,17 +1,19 @@ -use qdrant_client::qdrant::{CreateAliasBuilder, DeleteAlias}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{CreateAliasBuilder, DeleteAlias}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .create_alias(CreateAliasBuilder::new( - "example_collection", - "production_collection", - )) - .await?; + client + .create_alias(CreateAliasBuilder::new( + "example_collection", + "production_collection", + )) + .await?; -client - .delete_alias(DeleteAlias { - alias_name: "production_collection".to_string(), - }) - .await?; + client + .delete_alias(DeleteAlias { + alias_name: "production_collection".to_string(), + }) + .await?; +}); diff --git a/tests/snippets/update_collection.rs b/tests/snippets/update_collection.rs index 3a5c4558..55b56e78 100644 --- a/tests/snippets/update_collection.rs +++ b/tests/snippets/update_collection.rs @@ -1,12 +1,14 @@ -use qdrant_client::qdrant::{OptimizersConfigDiffBuilder, UpdateCollectionBuilder}; -use qdrant_client::Qdrant; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{OptimizersConfigDiffBuilder, UpdateCollectionBuilder}; + use qdrant_client::Qdrant; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .update_collection( - UpdateCollectionBuilder::new("{collection_name}").optimizers_config( - OptimizersConfigDiffBuilder::default().indexing_threshold(10_000), - ), - ) - .await?; + client + .update_collection( + UpdateCollectionBuilder::new("{collection_name}").optimizers_config( + OptimizersConfigDiffBuilder::default().indexing_threshold(10_000), + ), + ) + .await?; +}); diff --git a/tests/snippets/update_collection_metadata.rs b/tests/snippets/update_collection_metadata.rs index 914f7b1a..16741c15 100644 --- a/tests/snippets/update_collection_metadata.rs +++ b/tests/snippets/update_collection_metadata.rs @@ -1,18 +1,22 @@ -use qdrant_client::qdrant::{UpdateCollectionBuilder}; -use qdrant_client::Qdrant; -use serde_json::{json, Value}; -use std::collections::HashMap; +crate::qdrant_test_snippet!({ + use std::collections::HashMap; -let client = Qdrant::from_url("http://localhost:6334").build()?; + use qdrant_client::qdrant::UpdateCollectionBuilder; + use qdrant_client::Qdrant; + use serde_json::{json, Value}; -let mut metadata: HashMap = HashMap::new(); -metadata.insert("my-metadata-field".to_string(), json!({ - "key-a": "value-a", - "key-b": 42 -})); + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .update_collection( - UpdateCollectionBuilder::new("{collection_name}").metadata(metadata), - ) - .await?; + let mut metadata: HashMap = HashMap::new(); + metadata.insert( + "my-metadata-field".to_string(), + json!({ + "key-a": "value-a", + "key-b": 42 + }), + ); + + client + .update_collection(UpdateCollectionBuilder::new("{collection_name}").metadata(metadata)) + .await?; +}); diff --git a/tests/snippets/update_vectors.rs b/tests/snippets/update_vectors.rs index 1e7e8b6b..7e0397d2 100644 --- a/tests/snippets/update_vectors.rs +++ b/tests/snippets/update_vectors.rs @@ -1,33 +1,35 @@ -use qdrant_client::qdrant::{PointVectors, UpdatePointVectorsBuilder}; -use qdrant_client::Qdrant; -use std::collections::HashMap; +crate::qdrant_test_snippet!({ + use std::collections::HashMap; -let client = Qdrant::from_url("http://localhost:6334").build()?; + use qdrant_client::qdrant::{PointVectors, UpdatePointVectorsBuilder}; + use qdrant_client::Qdrant; -client - .update_vectors( - UpdatePointVectorsBuilder::new( - "{collection_name}", - vec![ - PointVectors { - id: Some(1.into()), - vectors: Some( - HashMap::from([("image".to_string(), vec![0.1, 0.2, 0.3, 0.4])]) + let client = Qdrant::from_url("http://localhost:6334").build()?; + + client + .update_vectors( + UpdatePointVectorsBuilder::new( + "{collection_name}", + vec![ + PointVectors { + id: Some(1.into()), + vectors: Some( + HashMap::from([("image".to_string(), vec![0.1, 0.2, 0.3, 0.4])]).into(), + ), + }, + PointVectors { + id: Some(2.into()), + vectors: Some( + HashMap::from([( + "text".to_string(), + vec![0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2], + )]) .into(), - ), - }, - PointVectors { - id: Some(2.into()), - vectors: Some( - HashMap::from([( - "text".to_string(), - vec![0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3, 0.2], - )]) - .into(), - ), - }, - ], + ), + }, + ], + ) + .wait(true), ) - .wait(true), - ) - .await?; + .await?; +}); diff --git a/tests/snippets/upsert_document.rs b/tests/snippets/upsert_document.rs index 43a67590..4524d975 100644 --- a/tests/snippets/upsert_document.rs +++ b/tests/snippets/upsert_document.rs @@ -1,26 +1,26 @@ -use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder, Document}; -use qdrant_client::{Qdrant, Payload}; -use serde_json::json; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Document, PointStruct, UpsertPointsBuilder}; + use qdrant_client::{Payload, Qdrant}; + use serde_json::json; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let document = Document::new("my document", "sentence-transformers/all-minilm-l6-v2"); + let document = Document::new("my document", "sentence-transformers/all-minilm-l6-v2"); -client - .upsert_points( - UpsertPointsBuilder::new( - "{collection_name}", - vec![ - PointStruct::new( + client + .upsert_points( + UpsertPointsBuilder::new( + "{collection_name}", + vec![PointStruct::new( 1, document, Payload::try_from(json!( {"color": "red"} )) .unwrap(), - ) - ], + )], + ) + .wait(true), ) - .wait(true), - ) - .await?; + .await?; +}); diff --git a/tests/snippets/upsert_image.rs b/tests/snippets/upsert_image.rs index a7ed2b5f..91acc76a 100644 --- a/tests/snippets/upsert_image.rs +++ b/tests/snippets/upsert_image.rs @@ -1,26 +1,29 @@ -use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder, Image}; -use qdrant_client::{Qdrant, Payload}; -use serde_json::json; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Image, PointStruct, UpsertPointsBuilder}; + use qdrant_client::{Payload, Qdrant}; + use serde_json::json; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let image = Image::new_from_url("https://picsum.photos/200/300.jpg", "Qdrant/clip-ViT-B-32-vision"); + let image = Image::new_from_url( + "https://picsum.photos/200/300.jpg", + "Qdrant/clip-ViT-B-32-vision", + ); -client - .upsert_points( - UpsertPointsBuilder::new( - "{collection_name}", - vec![ - PointStruct::new( + client + .upsert_points( + UpsertPointsBuilder::new( + "{collection_name}", + vec![PointStruct::new( 1, image, Payload::try_from(json!( {"color": "red"} )) .unwrap(), - ) - ], + )], + ) + .wait(true), ) - .wait(true), - ) - .await?; + .await?; +}); diff --git a/tests/snippets/upsert_points.rs b/tests/snippets/upsert_points.rs index cdf571ff..724e88dc 100644 --- a/tests/snippets/upsert_points.rs +++ b/tests/snippets/upsert_points.rs @@ -1,40 +1,42 @@ -use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder}; -use qdrant_client::{Qdrant, Payload}; -use serde_json::json; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder}; + use qdrant_client::{Payload, Qdrant}; + use serde_json::json; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -client - .upsert_points( - UpsertPointsBuilder::new( - "{collection_name}", - vec![ - PointStruct::new( - 1, - vec![0.9, 0.1, 0.1], - Payload::try_from(json!( - {"color": "red"} - )) - .unwrap(), - ), - PointStruct::new( - 2, - vec![0.1, 0.9, 0.1], - Payload::try_from(json!( - {"color": "green"} - )) - .unwrap(), - ), - PointStruct::new( - 3, - vec![0.1, 0.1, 0.9], - Payload::try_from(json!( - {"color": "blue"} - )) - .unwrap(), - ), - ], + client + .upsert_points( + UpsertPointsBuilder::new( + "{collection_name}", + vec![ + PointStruct::new( + 1, + vec![0.9, 0.1, 0.1], + Payload::try_from(json!( + {"color": "red"} + )) + .unwrap(), + ), + PointStruct::new( + 2, + vec![0.1, 0.9, 0.1], + Payload::try_from(json!( + {"color": "green"} + )) + .unwrap(), + ), + PointStruct::new( + 3, + vec![0.1, 0.1, 0.9], + Payload::try_from(json!( + {"color": "blue"} + )) + .unwrap(), + ), + ], + ) + .wait(true), ) - .wait(true), - ) - .await?; + .await?; +}); diff --git a/tests/snippets/upsert_points_fallback_shard_key.rs b/tests/snippets/upsert_points_fallback_shard_key.rs index cd2ea764..878717f0 100644 --- a/tests/snippets/upsert_points_fallback_shard_key.rs +++ b/tests/snippets/upsert_points_fallback_shard_key.rs @@ -1,29 +1,31 @@ -use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder, ShardKeySelectorBuilder}; -use qdrant_client::{Payload, Qdrant}; -use serde_json::json; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{PointStruct, ShardKeySelectorBuilder, UpsertPointsBuilder}; + use qdrant_client::{Payload, Qdrant}; + use serde_json::json; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let points = vec![ - PointStruct::new( + let points = vec![PointStruct::new( 1, vec![0.05, 0.61, 0.76, 0.74], Payload::try_from(json!({ - "city": "Berlin", + "city": "Berlin", "price": 1.99, "version": 3 - })).unwrap(), - ) -]; + })) + .unwrap(), + )]; -let shard_key_selector = ShardKeySelectorBuilder::with_shard_key("tenant-123") - .fallback("default") - .add_shard_key("tenant-123") - .build(); + let shard_key_selector = ShardKeySelectorBuilder::with_shard_key("tenant-123") + .fallback("default") + .add_shard_key("tenant-123") + .build(); -client - .upsert_points( - UpsertPointsBuilder::new("{collection_name}", points) - .wait(true) - .shard_key_selector(shard_key_selector) - ).await?; + client + .upsert_points( + UpsertPointsBuilder::new("{collection_name}", points) + .wait(true) + .shard_key_selector(shard_key_selector), + ) + .await?; +}); diff --git a/tests/snippets/upsert_points_insert_only.rs b/tests/snippets/upsert_points_insert_only.rs index d844971c..67ba1d8c 100644 --- a/tests/snippets/upsert_points_insert_only.rs +++ b/tests/snippets/upsert_points_insert_only.rs @@ -1,24 +1,26 @@ -use qdrant_client::qdrant::{PointStruct, UpdateMode, UpsertPointsBuilder}; -use qdrant_client::{Payload, Qdrant}; -use serde_json::json; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{PointStruct, UpdateMode, UpsertPointsBuilder}; + use qdrant_client::{Payload, Qdrant}; + use serde_json::json; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let points = vec![PointStruct::new( - 1, - vec![0.05, 0.61, 0.76, 0.74], - Payload::try_from(json!({ - "city": "Berlin", - "price": 1.99, - })) - .unwrap(), -)]; + let points = vec![PointStruct::new( + 1, + vec![0.05, 0.61, 0.76, 0.74], + Payload::try_from(json!({ + "city": "Berlin", + "price": 1.99, + })) + .unwrap(), + )]; -// Only insert new points, do not update existing ones -client - .upsert_points( - UpsertPointsBuilder::new("{collection_name}", points) - .wait(true) - .update_mode(UpdateMode::InsertOnly), - ) - .await?; + // Only insert new points, do not update existing ones + client + .upsert_points( + UpsertPointsBuilder::new("{collection_name}", points) + .wait(true) + .update_mode(UpdateMode::InsertOnly), + ) + .await?; +}); diff --git a/tests/snippets/upsert_points_with_condition.rs b/tests/snippets/upsert_points_with_condition.rs index 1f4a15d1..f601760a 100644 --- a/tests/snippets/upsert_points_with_condition.rs +++ b/tests/snippets/upsert_points_with_condition.rs @@ -1,24 +1,26 @@ -use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder, Filter, Condition}; -use qdrant_client::{Payload, Qdrant}; -use serde_json::json; +crate::qdrant_test_snippet!({ + use qdrant_client::qdrant::{Condition, Filter, PointStruct, UpsertPointsBuilder}; + use qdrant_client::{Payload, Qdrant}; + use serde_json::json; -let client = Qdrant::from_url("http://localhost:6334").build()?; + let client = Qdrant::from_url("http://localhost:6334").build()?; -let points = vec![ - PointStruct::new( + let points = vec![PointStruct::new( 1, vec![0.05, 0.61, 0.76, 0.74], Payload::try_from(json!({ - "city": "Berlin", + "city": "Berlin", "price": 1.99, "version": 3 - })).unwrap(), - ) -]; + })) + .unwrap(), + )]; -client - .upsert_points( - UpsertPointsBuilder::new("{collection_name}", points) - .wait(true) - .update_filter(Filter::must([Condition::matches("version", 2)])) - ).await?; \ No newline at end of file + client + .upsert_points( + UpsertPointsBuilder::new("{collection_name}", points) + .wait(true) + .update_filter(Filter::must([Condition::matches("version", 2)])), + ) + .await?; +}); diff --git a/tests/test_snippets.rs b/tests/test_snippets.rs index 872a5d3e..0638904d 100644 --- a/tests/test_snippets.rs +++ b/tests/test_snippets.rs @@ -1,7 +1,17 @@ -// Skip formatting for this file -#[rustfmt::skip] -mod snippet_tests; - +#[macro_export] +macro_rules! qdrant_test_snippet { + {$code:expr} => { + #[tokio::test] + async fn snippet() { + let _ = async { + $code + Result::<(), Box>::Ok(()) + }.await; + } + }; +} // WARNING: Snippet tests are not checking if the request is executing correctly. // The only thing it is checking is if the code compiles and runs without panicking. + +mod snippets;