docs: New Rust SDK snippets for /quickstart, /guides and /cloud (#1051)

This commit is contained in:
Anush
2024-07-24 13:12:44 +05:30
committed by GitHub
parent c5e003c19b
commit 68e9a8d0f4
8 changed files with 412 additions and 888 deletions
@@ -53,12 +53,11 @@ const client = new QdrantClient({
``` ```
```rust ```rust
use qdrant_client::client::QdrantClient; use qdrant_client::Qdrant;
let client = QdrantClient::from_url("xyz-example.eu-central.aws.cloud.qdrant.io:6334") let client = Qdrant::from_url("https://xyz-example.eu-central.aws.cloud.qdrant.io:6334")
.with_api_key("<paste-your-api-key-here>") .api_key("<paste-your-api-key-here>")
.build() .build()?;
.unwrap();
``` ```
```java ```java
@@ -76,12 +76,11 @@ const client = new QdrantClient({
``` ```
```rust ```rust
use qdrant_client::client::QdrantClient; use qdrant_client::Qdrant;
let client = QdrantClient::from_url("xyz-example.eu-central.aws.cloud.qdrant.io:6334") let client = Qdrant::from_url("https://xyz-example.eu-central.aws.cloud.qdrant.io:6334")
.with_api_key("<paste-your-api-key-here>") .api_key("<paste-your-api-key-here>")
.build() .build()?;
.unwrap();
``` ```
```java ```java
@@ -215,25 +215,17 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{CreateCollectionBuilder, Distance, VectorParamsBuilder};
client::QdrantClient, use qdrant_client::Qdrant;
qdrant::{vectors_config::Config, CreateCollection, Distance, VectorParams, VectorsConfig},
};
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".into(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(300, Distance::Cosine))
config: Some(Config::Params(VectorParams { .shard_number(6),
size: 300, )
distance: Distance::Cosine.into(),
..Default::default()
})),
}),
shard_number: Some(6),
})
.await?; .await?;
``` ```
@@ -373,31 +365,27 @@ client.createShardKey("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::qdrant::{
use qdrant_client::{ CreateCollectionBuilder, CreateShardKeyBuilder, CreateShardKeyRequestBuilder, Distance,
client::QdrantClient, ShardingMethod, VectorParamsBuilder,
qdrant::{CreateCollection, ShardingMethod, shard_key::Key}
}; };
use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".into(), CreateCollectionBuilder::new("{collection_name}")
shard_number: Some(1), .vectors_config(VectorParamsBuilder::new(300, Distance::Cosine))
sharding_method: Some(ShardingMethod::Custom), .shard_number(1)
// ... other collection parameters .sharding_method(ShardingMethod::Custom.into()),
..Default::default() )
})
.await?; .await?;
client client
.create_shard_key( .create_shard_key(
"{collection_name}", CreateShardKeyRequestBuilder::new("{collection_name}")
&Key::Keyword("{shard_key".to_string()), .request(CreateShardKeyBuilder::default().shard_key("{shard_key".to_string())),
None,
None,
&[],
) )
.await?; .await?;
``` ```
@@ -514,21 +502,20 @@ client.upsertPoints("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder};
use qdrant_client::qdrant::{PointStruct, WriteOrdering, WriteOrderingType}; use qdrant_client::Payload;
client client
.upsert_points_blocking( .upsert_points(
"{collection_name}", UpsertPointsBuilder::new(
Some(vec![shard_key::Key::String("user_1".into())]), "{collection_name}",
vec![ vec![PointStruct::new(
PointStruct::new( 111,
1111,
vec![0.1, 0.2, 0.3], vec![0.1, 0.2, 0.3],
Default::default(), Payload::default(),
), )],
], )
None, .shard_key_selector("user_1".to_string()),
) )
.await?; .await?;
``` ```
@@ -746,27 +733,18 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{CreateCollectionBuilder, Distance, VectorParamsBuilder};
client::QdrantClient, use qdrant_client::Qdrant;
qdrant::{vectors_config::Config, CreateCollection, Distance, VectorParams, VectorsConfig},
};
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".into(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(300, Distance::Cosine))
config: Some(Config::Params(VectorParams { .shard_number(6)
size: 300, .replication_factor(2),
distance: Distance::Cosine.into(), )
..Default::default()
})),
}),
shard_number: Some(6),
replication_factor: Some(2),
..Default::default()
})
.await?; .await?;
``` ```
@@ -998,28 +976,19 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{CreateCollectionBuilder, Distance, VectorParamsBuilder};
client::QdrantClient, use qdrant_client::Qdrant;
qdrant::{vectors_config::Config, CreateCollection, Distance, VectorParams, VectorsConfig},
};
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".into(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(300, Distance::Cosine))
config: Some(Config::Params(VectorParams { .shard_number(6)
size: 300, .replication_factor(2)
distance: Distance::Cosine.into(), .write_consistency_factor(2),
..Default::default() )
})),
}),
shard_number: Some(6),
replication_factor: Some(2),
write_consistency_factor: Some(2),
..Default::default()
})
.await?; .await?;
``` ```
@@ -1139,35 +1108,24 @@ client.search("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, read_consistency::Value, Condition, Filter, ReadConsistencyType, SearchParamsBuilder,
qdrant::{ SearchPointsBuilder,
read_consistency::Value, Condition, Filter, ReadConsistency, ReadConsistencyType,
SearchParams, SearchPoints,
},
}; };
use qdrant_client::{Qdrant, QdrantError};
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.search_points(&SearchPoints { .search_points(
collection_name: "{collection_name}".into(), SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3)
filter: Some(Filter::must([Condition::matches( .filter(Filter::must([Condition::matches(
"city", "city",
"London".into(), "London".to_string(),
)])), )]))
params: Some(SearchParams { .params(SearchParamsBuilder::default().hnsw_ef(128).exact(false))
hnsw_ef: Some(128), .read_consistency(Value::Type(ReadConsistencyType::Majority.into())),
exact: Some(false), )
..Default::default()
}),
vector: vec![0.2, 0.1, 0.9, 0.7],
limit: 3,
read_consistency: Some(ReadConsistency {
value: Some(Value::Type(ReadConsistencyType::Majority.into())),
}),
..Default::default()
})
.await?; .await?;
``` ```
@@ -1285,43 +1243,24 @@ client.upsert("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::qdrant::{PointStruct, WriteOrdering, WriteOrderingType}; use qdrant_client::qdrant::{
use serde_json::json; PointStruct, UpsertPointsBuilder, WriteOrdering, WriteOrderingType
};
use qdrant_client::Qdrant;
let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.upsert_points_blocking( .upsert_points(
"{collection_name}", UpsertPointsBuilder::new(
None, "{collection_name}",
vec![ vec![
PointStruct::new( PointStruct::new(1, vec![0.9, 0.1, 0.1], [("color", "red".into())]),
1, PointStruct::new(2, vec![0.1, 0.9, 0.1], [("color", "green".into())]),
vec![0.9, 0.1, 0.1], PointStruct::new(3, vec![0.1, 0.1, 0.9], [("color", "blue".into())]),
json!({ ],
"color": "red" )
}) .ordering(WriteOrdering {
.try_into()
.unwrap(),
),
PointStruct::new(
2,
vec![0.1, 0.9, 0.1],
json!({
"color": "green"
})
.try_into()
.unwrap(),
),
PointStruct::new(
3,
vec![0.1, 0.1, 0.9],
json!({
"color": "blue"
})
.try_into()
.unwrap(),
),
],
Some(WriteOrdering {
r#type: WriteOrderingType::Strong.into(), r#type: WriteOrderingType::Strong.into(),
}), }),
) )
@@ -94,46 +94,20 @@ client.upsert("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{client::QdrantClient, qdrant::PointStruct}; use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder};
use serde_json::json; use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.upsert_points_blocking( .upsert_points(UpsertPointsBuilder::new(
"{collection_name}".to_string(), "{collection_name}",
None,
vec![ vec![
PointStruct::new( PointStruct::new(1, vec![0.9, 0.1, 0.1], [("group_id", "user_1".into())]),
1, PointStruct::new(2, vec![0.1, 0.9, 0.1], [("group_id", "user_1".into())]),
vec![0.9, 0.1, 0.1], PointStruct::new(3, vec![0.1, 0.1, 0.9], [("group_id", "user_2".into())]),
json!(
{"group_id": "user_1"}
)
.try_into()
.unwrap(),
),
PointStruct::new(
2,
vec![0.1, 0.9, 0.1],
json!(
{"group_id": "user_1"}
)
.try_into()
.unwrap(),
),
PointStruct::new(
3,
vec![0.1, 0.1, 0.9],
json!(
{"group_id": "user_2"}
)
.try_into()
.unwrap(),
),
], ],
None, ))
)
.await?; .await?;
``` ```
@@ -259,25 +233,19 @@ client.search("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{Condition, Filter, SearchPointsBuilder};
client::QdrantClient, use qdrant_client::Qdrant;
qdrant::{Condition, Filter, SearchPoints},
};
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.search_points(&SearchPoints { .search_points(
collection_name: "{collection_name}".to_string(), SearchPointsBuilder::new("{collection_name}", vec![0.1, 0.1, 0.9], 10).filter(
filter: Some(Filter::must([Condition::matches( Filter::must([Condition::matches("group_id", "user_1".to_string())]),
"group_id", ),
"user_1".to_string(), )
)])),
vector: vec![0.1, 0.1, 0.9],
limit: 10,
..Default::default()
})
.await?; .await?;
``` ```
```java ```java
@@ -376,33 +344,19 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, CreateCollectionBuilder, Distance, HnswConfigDiffBuilder, VectorParamsBuilder,
qdrant::{
vectors_config::Config, CreateCollection, Distance, HnswConfigDiff, VectorParams,
VectorsConfig,
},
}; };
use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".to_string(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(768, Distance::Cosine))
config: Some(Config::Params(VectorParams { .hnsw_config(HnswConfigDiffBuilder::default().payload_m(16).m(0)),
size: 768, )
distance: Distance::Cosine.into(),
..Default::default()
})),
}),
hnsw_config: Some(HnswConfigDiff {
payload_m: Some(16),
m: Some(0),
..Default::default()
}),
..Default::default()
})
.await?; .await?;
``` ```
@@ -474,18 +428,17 @@ client.createPayloadIndex("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{client::QdrantClient, qdrant::FieldType}; use qdrant_client::qdrant::{CreateFieldIndexCollectionBuilder, FieldType};
use qdrant_client::{Qdrant, QdrantError};
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_field_index( .create_field_index(CreateFieldIndexCollectionBuilder::new(
"{collection_name}", "{collection_name}",
"group_id", "group_id",
FieldType::Keyword, FieldType::Keyword,
None, ))
None,
)
.await?; .await?;
``` ```
@@ -77,37 +77,24 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, CreateCollectionBuilder, Distance, QuantizationType, ScalarQuantizationBuilder,
qdrant::{ VectorParamsBuilder,
quantization_config::Quantization, vectors_config::Config, CreateCollection, Distance,
OptimizersConfigDiff, QuantizationConfig, QuantizationType, ScalarQuantization,
VectorParams, VectorsConfig,
},
}; };
use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".to_string(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(768, Distance::Cosine))
config: Some(Config::Params(VectorParams { .quantization_config(
size: 768, ScalarQuantizationBuilder::default()
distance: Distance::Cosine.into(), .r#type(QuantizationType::Int8.into())
on_disk: Some(true), .always_ram(true),
..Default::default() ),
})), )
}),
quantization_config: Some(QuantizationConfig {
quantization: Some(Quantization::Scalar(ScalarQuantization {
r#type: QuantizationType::Int8.into(),
always_ram: Some(true),
..Default::default()
})),
}),
..Default::default()
})
.await?; .await?;
``` ```
@@ -214,27 +201,20 @@ client.search("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, QuantizationSearchParamsBuilder, SearchParamsBuilder, SearchPointsBuilder,
qdrant::{QuantizationSearchParams, SearchParams, SearchPoints},
}; };
use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.search_points(&SearchPoints { .search_points(
collection_name: "{collection_name}".to_string(), SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3).params(
vector: vec![0.2, 0.1, 0.9, 0.7], SearchParamsBuilder::default()
params: Some(SearchParams { .quantization(QuantizationSearchParamsBuilder::default().rescore(false)),
quantization: Some(QuantizationSearchParams { ),
rescore: Some(false), )
..Default::default()
}),
..Default::default()
}),
limit: 3,
..Default::default()
})
.await?; .await?;
``` ```
@@ -329,33 +309,19 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, CreateCollectionBuilder, Distance, HnswConfigDiffBuilder, VectorParamsBuilder,
qdrant::{
vectors_config::Config, CreateCollection, Distance, HnswConfigDiff, OptimizersConfigDiff,
VectorParams, VectorsConfig,
},
}; };
use qdrant_client::{Qdrant, QdrantError};
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".to_string(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(768, Distance::Cosine).on_disk(true))
config: Some(Config::Params(VectorParams { .hnsw_config(HnswConfigDiffBuilder::default().on_disk(true)),
size: 768, )
distance: Distance::Cosine.into(),
on_disk: Some(true),
..Default::default()
})),
}),
hnsw_config: Some(HnswConfigDiff {
on_disk: Some(true),
..Default::default()
}),
..Default::default()
})
.await?; .await?;
``` ```
@@ -480,37 +446,24 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, CreateCollectionBuilder, Distance, QuantizationType, ScalarQuantizationBuilder,
qdrant::{ VectorParamsBuilder,
quantization_config::Quantization, vectors_config::Config, CreateCollection, Distance,
OptimizersConfigDiff, QuantizationConfig, QuantizationType, ScalarQuantization,
VectorParams, VectorsConfig,
},
}; };
use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".to_string(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(768, Distance::Cosine).on_disk(true))
config: Some(Config::Params(VectorParams { .quantization_config(
size: 768, ScalarQuantizationBuilder::default()
distance: Distance::Cosine.into(), .r#type(QuantizationType::Int8.into())
on_disk: Some(true), .always_ram(true),
..Default::default() ),
})), )
}),
quantization_config: Some(QuantizationConfig {
quantization: Some(Quantization::Scalar(ScalarQuantization {
r#type: QuantizationType::Int8.into(),
always_ram: Some(true),
..Default::default()
})),
}),
..Default::default()
})
.await?; .await?;
``` ```
@@ -613,25 +566,16 @@ client.search("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{SearchParamsBuilder, SearchPointsBuilder};
client::QdrantClient, use qdrant_client::Qdrant;
qdrant::{SearchParams, SearchPoints},
};
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.search_points(&SearchPoints { .search_points(
collection_name: "{collection_name}".to_string(), SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3)
vector: vec![0.2, 0.1, 0.9, 0.7], .params(SearchParamsBuilder::default().hnsw_ef(128).exact(false)),
params: Some(SearchParams { )
hnsw_ef: Some(128),
exact: Some(false),
..Default::default()
}),
limit: 3,
..Default::default()
})
.await?; .await?;
``` ```
@@ -727,32 +671,21 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, CreateCollectionBuilder, Distance, OptimizersConfigDiffBuilder, VectorParamsBuilder,
qdrant::{
vectors_config::Config, CreateCollection, Distance, OptimizersConfigDiff, VectorParams,
VectorsConfig,
},
}; };
use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".to_string(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(768, Distance::Cosine))
config: Some(Config::Params(VectorParams { .optimizers_config(
size: 768, OptimizersConfigDiffBuilder::default().default_segment_number(16),
distance: Distance::Cosine.into(), ),
..Default::default() )
})),
}),
optimizers_config: Some(OptimizersConfigDiff {
default_segment_number: Some(16),
..Default::default()
}),
..Default::default()
})
.await?; .await?;
``` ```
@@ -845,32 +778,21 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, CreateCollectionBuilder, Distance, OptimizersConfigDiffBuilder, VectorParamsBuilder,
qdrant::{
vectors_config::Config, CreateCollection, Distance, OptimizersConfigDiff, VectorParams,
VectorsConfig,
},
}; };
use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".to_string(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(768, Distance::Cosine))
config: Some(Config::Params(VectorParams { .optimizers_config(
size: 768, OptimizersConfigDiffBuilder::default().default_segment_number(2),
distance: Distance::Cosine.into(), ),
..Default::default() )
})),
}),
optimizers_config: Some(OptimizersConfigDiff {
default_segment_number: Some(2),
..Default::default()
}),
..Default::default()
})
.await?; .await?;
``` ```
@@ -205,35 +205,25 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, CreateCollectionBuilder, Distance, QuantizationType, ScalarQuantizationBuilder,
qdrant::{ VectorParamsBuilder,
quantization_config::Quantization, vectors_config::Config, CreateCollection, Distance,
QuantizationConfig, QuantizationType, ScalarQuantization, VectorParams, VectorsConfig,
},
}; };
use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".to_string(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(768, Distance::Cosine))
config: Some(Config::Params(VectorParams { .quantization_config(
size: 768, ScalarQuantizationBuilder::default()
distance: Distance::Cosine.into(), .r#type(QuantizationType::Int8.into())
..Default::default() .quantile(0.99)
})), .always_ram(true),
}), ),
quantization_config: Some(QuantizationConfig { )
quantization: Some(Quantization::Scalar(ScalarQuantization {
r#type: QuantizationType::Int8.into(),
quantile: Some(0.99),
always_ram: Some(true),
})),
}),
..Default::default()
})
.await?; .await?;
``` ```
@@ -368,33 +358,19 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, BinaryQuantizationBuilder, CreateCollectionBuilder, Distance, VectorParamsBuilder,
qdrant::{
quantization_config::Quantization, vectors_config::Config, BinaryQuantization,
CreateCollection, Distance, QuantizationConfig, VectorParams, VectorsConfig,
},
}; };
use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".to_string(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(1536, Distance::Cosine))
config: Some(Config::Params(VectorParams { .quantization_config(BinaryQuantizationBuilder::new(true)),
size: 1536, )
distance: Distance::Cosine.into(),
..Default::default()
})),
}),
quantization_config: Some(QuantizationConfig {
quantization: Some(Quantization::Binary(BinaryQuantization {
always_ram: Some(true),
})),
}),
..Default::default()
})
.await?; .await?;
``` ```
@@ -509,35 +485,22 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, CompressionRatio, CreateCollectionBuilder, Distance, ProductQuantizationBuilder,
qdrant::{ VectorParamsBuilder,
quantization_config::Quantization, vectors_config::Config, CompressionRatio,
CreateCollection, Distance, ProductQuantization, QuantizationConfig, VectorParams,
VectorsConfig,
},
}; };
use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".to_string(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(768, Distance::Cosine))
config: Some(Config::Params(VectorParams { .quantization_config(
size: 768, ProductQuantizationBuilder::new(CompressionRatio::X16.into()).always_ram(true),
distance: Distance::Cosine.into(), ),
..Default::default() )
})),
}),
quantization_config: Some(QuantizationConfig {
quantization: Some(Quantization::Product(ProductQuantization {
compression: CompressionRatio::X16.into(),
always_ram: Some(true),
})),
}),
..Default::default()
})
.await?; .await?;
``` ```
@@ -663,29 +626,22 @@ client.search("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{QuantizationSearchParamsBuilder, SearchParamsBuilder, SearchPointsBuilder};
client::QdrantClient, use qdrant_client::Qdrant;
qdrant::{QuantizationSearchParams, SearchParams, SearchPoints},
};
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.search_points(&SearchPoints { .search_points(
collection_name: "{collection_name}".to_string(), SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 10).params(
vector: vec![0.2, 0.1, 0.9, 0.7], SearchParamsBuilder::default().quantization(
params: Some(SearchParams { QuantizationSearchParamsBuilder::default()
quantization: Some(QuantizationSearchParams { .ignore(false)
ignore: Some(false), .rescore(true)
rescore: Some(true), .oversampling(2.0),
oversampling: Some(2.0), ),
..Default::default() ),
}), )
..Default::default()
}),
limit: 10,
..Default::default()
})
.await?; .await?;
``` ```
@@ -809,27 +765,20 @@ client.search("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, QuantizationSearchParamsBuilder, SearchParamsBuilder, SearchPointsBuilder,
qdrant::{QuantizationSearchParams, SearchParams, SearchPoints},
}; };
use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.search_points(&SearchPoints { .search_points(
collection_name: "{collection_name}".to_string(), SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3).params(
vector: vec![0.2, 0.1, 0.9, 0.7], SearchParamsBuilder::default()
params: Some(SearchParams { .quantization(QuantizationSearchParamsBuilder::default().ignore(true)),
quantization: Some(QuantizationSearchParams { ),
ignore: Some(true), )
..Default::default()
}),
..Default::default()
}),
limit: 3,
..Default::default()
})
.await?; .await?;
``` ```
@@ -952,37 +901,24 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, CreateCollectionBuilder, Distance, QuantizationType, ScalarQuantizationBuilder,
qdrant::{ VectorParamsBuilder,
quantization_config::Quantization, vectors_config::Config, CreateCollection, Distance,
OptimizersConfigDiff, QuantizationConfig, QuantizationType, ScalarQuantization,
VectorParams, VectorsConfig,
},
}; };
use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".to_string(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(768, Distance::Cosine).on_disk(true))
config: Some(Config::Params(VectorParams { .quantization_config(
size: 768, ScalarQuantizationBuilder::default()
distance: Distance::Cosine.into(), .r#type(QuantizationType::Int8.into())
on_disk: Some(true), .always_ram(true),
..Default::default() ),
})), )
}),
quantization_config: Some(QuantizationConfig {
quantization: Some(Quantization::Scalar(ScalarQuantization {
r#type: QuantizationType::Int8.into(),
always_ram: Some(true),
..Default::default()
})),
}),
..Default::default()
})
.await?; .await?;
``` ```
@@ -1090,27 +1026,18 @@ client.search("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{QuantizationSearchParamsBuilder, SearchParamsBuilder, SearchPointsBuilder};
client::QdrantClient, use qdrant_client::Qdrant;
qdrant::{QuantizationSearchParams, SearchParams, SearchPoints},
};
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.search_points(&SearchPoints { .search_points(
collection_name: "{collection_name}".to_string(), SearchPointsBuilder::new("{collection_name}", vec![0.2, 0.1, 0.9, 0.7], 3).params(
vector: vec![0.2, 0.1, 0.9, 0.7], SearchParamsBuilder::default()
params: Some(SearchParams { .quantization(QuantizationSearchParamsBuilder::default().rescore(false)),
quantization: Some(QuantizationSearchParams { ),
rescore: Some(false), )
..Default::default()
}),
..Default::default()
}),
limit: 3,
..Default::default()
})
.await?; .await?;
``` ```
@@ -1219,37 +1146,24 @@ client.createCollection("{collection_name}", {
``` ```
```rust ```rust
use qdrant_client::{ use qdrant_client::qdrant::{
client::QdrantClient, CreateCollectionBuilder, Distance, QuantizationType, ScalarQuantizationBuilder,
qdrant::{ VectorParamsBuilder,
quantization_config::Quantization, vectors_config::Config, CreateCollection, Distance,
OptimizersConfigDiff, QuantizationConfig, QuantizationType, ScalarQuantization,
VectorParams, VectorsConfig,
},
}; };
use qdrant_client::Qdrant;
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "{collection_name}".to_string(), CreateCollectionBuilder::new("{collection_name}")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(768, Distance::Cosine).on_disk(true))
config: Some(Config::Params(VectorParams { .quantization_config(
size: 768, ScalarQuantizationBuilder::default()
distance: Distance::Cosine.into(), .r#type(QuantizationType::Int8.into())
on_disk: Some(true), .always_ram(false),
..Default::default() ),
})), )
}),
quantization_config: Some(QuantizationConfig {
quantization: Some(Quantization::Scalar(ScalarQuantization {
r#type: QuantizationType::Int8.into(),
always_ram: Some(false),
..Default::default()
})),
}),
..Default::default()
})
.await?; .await?;
``` ```
@@ -77,11 +77,11 @@ const client = new QdrantClient({
``` ```
```rust ```rust
use qdrant_client::client::QdrantClient; use qdrant_client::Qdrant;
let client = QdrantClient::from_url("https://xyz-example.eu-central.aws.cloud.qdrant.io:6334") let client = Qdrant::from_url("https://xyz-example.eu-central.aws.cloud.qdrant.io:6334")
.with_api_key("<paste-your-api-key-here>") .api_key("<paste-your-api-key-here>")
.build()?; .build()?;
``` ```
```java ```java
@@ -184,12 +184,11 @@ const client = new QdrantClient({
``` ```
```rust ```rust
use qdrant_client::client::QdrantClient; use qdrant_client::Qdrant;
let client = QdrantClient::from_url("xyz-example.eu-central.aws.cloud.qdrant.io:6334") let client = Qdrant::from_url("https://xyz-example.eu-central.aws.cloud.qdrant.io:6334")
.with_api_key("<JWT>") .api_key("<JWT>")
.build() .build()?;
.unwrap();
``` ```
```java ```java
@@ -475,9 +474,9 @@ const client = new QdrantClient({ url: "https://localhost", port: 6333 });
``` ```
```rust ```rust
use qdrant_client::client::QdrantClient; use qdrant_client::Qdrant;
let client = QdrantClient::from_url("https://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
``` ```
Certificate rotation is enabled with a default refresh time of one hour. This Certificate rotation is enabled with a default refresh time of one hour. This
+108 -309
View File
@@ -51,10 +51,10 @@ const client = new QdrantClient({ host: "localhost", port: 6333 });
``` ```
```rust ```rust
use qdrant_client::client::QdrantClient; use qdrant_client::Qdrant;
// The Rust client uses Qdrant's GRPC interface // The Rust client uses Qdrant's GRPC interface
let client = QdrantClient::from_url("http://localhost:6334").build()?; let client = Qdrant::from_url("http://localhost:6334").build()?;
``` ```
```java ```java
@@ -95,20 +95,13 @@ await client.createCollection("test_collection", {
``` ```
```rust ```rust
use qdrant_client::qdrant::{vectors_config::Config, VectorParams, VectorsConfig}; use qdrant_client::qdrant::{CreateCollectionBuilder, VectorParamsBuilder};
client client
.create_collection(&CreateCollection { .create_collection(
collection_name: "test_collection".to_string(), CreateCollectionBuilder::new("test_collection")
vectors_config: Some(VectorsConfig { .vectors_config(VectorParamsBuilder::new(4, Distance::Dot)),
config: Some(Config::Params(VectorParams { )
size: 4,
distance: Distance::Dot.into(),
..Default::default()
})),
}),
..Default::default()
})
.await?; .await?;
``` ```
@@ -123,10 +116,10 @@ client.createCollectionAsync("test_collection",
```csharp ```csharp
using Qdrant.Client.Grpc; using Qdrant.Client.Grpc;
await client.CreateCollectionAsync( await client.CreateCollectionAsync(collectionName: "test_collection", vectorsConfig: new VectorParams
collectionName: "test_collection", {
vectorsConfig: new VectorParams { Size = 4, Distance = Distance.Dot } Size = 4, Distance = Distance.Dot
); });
``` ```
<aside role="status">TypeScript, Rust examples use async/await syntax, so should be used in an async block.</aside> <aside role="status">TypeScript, Rust examples use async/await syntax, so should be used in an async block.</aside>
@@ -172,35 +165,20 @@ console.debug(operationInfo);
``` ```
```rust ```rust
use qdrant_client::qdrant::PointStruct; use qdrant_client::qdrant::{PointStruct, UpsertPointsBuilder};
use serde_json::json;
let points = vec![ let points = vec![
PointStruct::new( PointStruct::new(1, vec![0.05, 0.61, 0.76, 0.74], [("city", "Berlin".into())]),
1, PointStruct::new(2, vec![0.19, 0.81, 0.75, 0.11], [("city", "London".into())]),
vec![0.05, 0.61, 0.76, 0.74], PointStruct::new(3, vec![0.36, 0.55, 0.47, 0.94], [("city", "Moscow".into())]),
json!(
{"city": "Berlin"}
)
.try_into()
.unwrap(),
),
PointStruct::new(
2,
vec![0.19, 0.81, 0.75, 0.11],
json!(
{"city": "London"}
)
.try_into()
.unwrap(),
),
// ..truncated // ..truncated
]; ];
let operation_info = client
.upsert_points_blocking("test_collection".to_string(), None, points, None) let response = client
.upsert_points(UpsertPointsBuilder::new("test_collection", points).wait(true))
.await?; .await?;
dbg!(operation_info); dbg!(response);
``` ```
```java ```java
@@ -243,31 +221,43 @@ System.out.println(operationInfo);
```csharp ```csharp
using Qdrant.Client.Grpc; using Qdrant.Client.Grpc;
var operationInfo = await client.UpsertAsync( var operationInfo = await client.UpsertAsync(collectionName: "test_collection", points: new List<PointStruct>
collectionName: "test_collection", {
points: new List<PointStruct> new()
{ {
new() Id = 1,
{ Vectors = new float[]
Id = 1, {
Vectors = new float[] { 0.05f, 0.61f, 0.76f, 0.74f }, 0.05f, 0.61f, 0.76f, 0.74f
Payload = { ["city"] = "Berlin" } },
}, Payload = {
new() ["city"] = "Berlin"
{ }
Id = 2, },
Vectors = new float[] { 0.19f, 0.81f, 0.75f, 0.11f }, new()
Payload = { ["city"] = "London" } {
}, Id = 2,
new() Vectors = new float[]
{ {
Id = 3, 0.19f, 0.81f, 0.75f, 0.11f
Vectors = new float[] { 0.36f, 0.55f, 0.47f, 0.94f }, },
Payload = { ["city"] = "Moscow" } Payload = {
}, ["city"] = "London"
// Truncated }
} },
); new()
{
Id = 3,
Vectors = new float[]
{
0.36f, 0.55f, 0.47f, 0.94f
},
Payload = {
["city"] = "Moscow"
}
},
// Truncated
});
Console.WriteLine(operationInfo); Console.WriteLine(operationInfo);
``` ```
@@ -284,11 +274,15 @@ operation_id=0 status=<UpdateStatus.COMPLETED: 'completed'>
```rust ```rust
PointsOperationResponse { PointsOperationResponse {
result: Some(UpdateResult { result: Some(
operation_id: 0, UpdateResult {
status: Completed, operation_id: Some(
}), 0,
time: 0.006347708, ),
status: Completed,
},
),
time: 0.00094027,
} }
``` ```
@@ -323,16 +317,12 @@ console.debug(searchResult);
``` ```
```rust ```rust
use qdrant_client::qdrant::SearchPoints; use qdrant_client::qdrant::SearchPointsBuilder;
let search_result = client let search_result = client
.search_points(&SearchPoints { .search_points(
collection_name: "test_collection".to_string(), SearchPointsBuilder::new("test_collection", [0.2, 0.1, 0.9, 0.7], 3).with_payload(true),
vector: vec![0.2, 0.1, 0.9, 0.7], )
limit: 3,
with_payload: Some(true.into()),
..Default::default()
})
.await?; .await?;
dbg!(search_result); dbg!(search_result);
@@ -361,159 +351,38 @@ System.out.println(searchResult);
``` ```
```csharp ```csharp
var searchResult = await client.SearchAsync( var searchResult = await client.SearchAsync(collectionName: "test_collection", vector: new float[]
collectionName: "test_collection", {
vector: new float[] { 0.2f, 0.1f, 0.9f, 0.7f }, 0.2f, 0.1f, 0.9f, 0.7f
limit: 3, }, limit: 3, payloadSelector: true);
payloadSelector: true
);
Console.WriteLine(searchResult); Console.WriteLine(searchResult);
``` ```
**Response:** **Response:**
```python ```json
ScoredPoint(id=4, version=0, score=1.362, payload={"city": "New York"}, vector=None),
ScoredPoint(id=1, version=0, score=1.273, payload={"city": "Berlin"}, vector=None),
ScoredPoint(id=3, version=0, score=1.208, payload={"city": "Moscow"}, vector=None)
```
```typescript
[ [
{ {
id: 4, "id": 4,
version: 0, "version": 0,
score: 1.362,
payload: null,
vector: null,
},
{
id: 1,
version: 0,
score: 1.273,
payload: null,
vector: null,
},
{
id: 3,
version: 0,
score: 1.208,
payload: null,
vector: null,
},
];
```
```rust
SearchResponse {
result: [
ScoredPoint {
id: Some(PointId {
point_id_options: Some(Num(4)),
}),
payload: {},
score: 1.362,
version: 0,
vectors: None,
},
ScoredPoint {
id: Some(PointId {
point_id_options: Some(Num(1)),
}),
payload: {},
score: 1.273,
version: 0,
vectors: None,
},
ScoredPoint {
id: Some(PointId {
point_id_options: Some(Num(3)),
}),
payload: {},
score: 1.208,
version: 0,
vectors: None,
},
],
time: 0.003635125,
}
```
```java
[id {
num: 4
}
payload {
key: "city"
value {
string_value: "New York"
}
}
score: 1.362
version: 1
, id {
num: 1
}
payload {
key: "city"
value {
string_value: "Berlin"
}
}
score: 1.273
version: 1
, id {
num: 3
}
payload {
key: "city"
value {
string_value: "Moscow"
}
}
score: 1.208
version: 1
]
```
```csharp
[
{
"id": {
"num": "4"
},
"payload": {
"city": {
"stringValue": "New York"
}
},
"score": 1.362, "score": 1.362,
"version": "7" "payload": null,
"vector": null
}, },
{ {
"id": { "id": 1,
"num": "1" "version": 0,
},
"payload": {
"city": {
"stringValue": "Berlin"
}
},
"score": 1.273, "score": 1.273,
"version": "7" "payload": null,
"vector": null
}, },
{ {
"id": { "id": 3,
"num": "3" "version": 0,
},
"payload": {
"city": {
"stringValue": "Moscow"
}
},
"score": 1.208, "score": 1.208,
"version": "7" "payload": null,
"vector": null
} }
] ]
``` ```
@@ -555,19 +424,17 @@ console.debug(searchResult);
``` ```
```rust ```rust
use qdrant_client::qdrant::{Condition, Filter, SearchPoints}; use qdrant_client::qdrant::{Condition, Filter, SearchPointsBuilder};
let search_result = client let search_result = client
.search_points(&SearchPoints { .search_points(
collection_name: "test_collection".to_string(), SearchPointsBuilder::new("test_collection", [0.2, 0.1, 0.9, 0.7], 3)
vector: vec![0.2, 0.1, 0.9, 0.7], .filter(Filter::all([Condition::matches(
filter: Some(Filter::all([Condition::matches( "city",
"city", "London".to_string(),
"London".to_string(), )]))
)])), .with_payload(true),
limit: 2, )
..Default::default()
})
.await?; .await?;
dbg!(search_result); dbg!(search_result);
@@ -594,95 +461,27 @@ System.out.println(searchResult);
```csharp ```csharp
using static Qdrant.Client.Grpc.Conditions; using static Qdrant.Client.Grpc.Conditions;
var searchResult = await client.SearchAsync( var searchResult = await client.SearchAsync(collectionName: "test_collection", vector: new float[]
collectionName: "test_collection", {
vector: new float[] { 0.2f, 0.1f, 0.9f, 0.7f }, 0.2f, 0.1f, 0.9f, 0.7f
filter: MatchKeyword("city", "London"), }, filter: MatchKeyword("city", "London"), limit: 3, payloadSelector: true);
limit: 3,
payloadSelector: true
);
Console.WriteLine(searchResult); Console.WriteLine(searchResult);
``` ```
**Response:** **Response:**
```python ```json
ScoredPoint(id=2, version=0, score=0.871, payload={"city": "London"}, vector=None)
```
```typescript
[ [
{ {
id: 2, "id": 2,
version: 0, "version": 0,
score: 0.871, "score": 0.871,
payload: { city: "London" }, "payload": {
vector: null, "city": "London"
},
];
```
```rust
SearchResponse {
result: [
ScoredPoint {
id: Some(
PointId {
point_id_options: Some(
Num(
2,
),
),
},
),
payload: {
"city": Value {
kind: Some(
StringValue(
"London",
),
),
},
},
score: 0.871,
version: 0,
vectors: None,
}, },
], "vector": null
time: 0.004001083, }
}
```
```java
[id {
num: 2
}
payload {
key: "city"
value {
string_value: "London"
}
}
score: 0.871
version: 1
]
```
```csharp
[
{
"id": {
"num": "2"
},
"payload": {
"city": {
"stringValue": "London"
}
},
"score": 0.871,
"version": "7"
}
] ]
``` ```