mirror of
https://github.com/qdrant/landing_page.git
synced 2026-10-09 21:08:31 +02:00
Include imports in Edge Rust snippets (#2437)
* Allow rust code snippets to start with a comment line * Include imports in Edge Rust snippets * Add import per code block; use fqn when class name is ambiguous
This commit is contained in:
+3
-2
@@ -1,6 +1,7 @@
|
||||
```rust
|
||||
use std::collections::*;
|
||||
|
||||
// This is an in-memory queue.
|
||||
// For production use cases consider persisting changes.
|
||||
let mut upload_queue: std::collections::VecDeque<PointStruct> =
|
||||
std::collections::VecDeque::new();
|
||||
let mut upload_queue: VecDeque<::qdrant_client::qdrant::PointStruct> = VecDeque::new();
|
||||
```
|
||||
|
||||
+3
@@ -1,4 +1,7 @@
|
||||
```rust
|
||||
use std::path::*;
|
||||
use qdrant_edge::*;
|
||||
|
||||
const VECTOR_DIMENSION: usize = 4;
|
||||
const VECTOR_NAME: &str = "my-vector";
|
||||
|
||||
|
||||
+4
@@ -1,4 +1,8 @@
|
||||
```rust
|
||||
use ::qdrant_client::*;
|
||||
use ::qdrant_client::qdrant::*;
|
||||
use ::qdrant_client::qdrant::Distance;
|
||||
|
||||
let server_client = Qdrant::from_url(QDRANT_URL)
|
||||
.api_key(QDRANT_API_KEY)
|
||||
.build()?;
|
||||
|
||||
+3
-1
@@ -1,6 +1,8 @@
|
||||
```rust
|
||||
use ::qdrant_client::qdrant::*;
|
||||
|
||||
const BATCH_SIZE: usize = 10;
|
||||
let points_to_upload: Vec<PointStruct> = upload_queue
|
||||
let points_to_upload: Vec<::qdrant_client::qdrant::PointStruct> = upload_queue
|
||||
.drain(..BATCH_SIZE.min(upload_queue.len()))
|
||||
.collect();
|
||||
|
||||
|
||||
+4
-4
@@ -1,14 +1,14 @@
|
||||
```python
|
||||
COLLECTION_NAME="edge-collection"
|
||||
|
||||
snapshot_url = f"{QDRANT_URL}/collections/{COLLECTION_NAME}/shards/0/snapshot"
|
||||
|
||||
from pathlib import Path
|
||||
from qdrant_edge import EdgeShard
|
||||
import requests
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
COLLECTION_NAME="edge-collection"
|
||||
|
||||
snapshot_url = f"{QDRANT_URL}/collections/{COLLECTION_NAME}/shards/0/snapshot"
|
||||
|
||||
SHARD_DIRECTORY = "./qdrant-edge-directory"
|
||||
data_dir = Path(SHARD_DIRECTORY)
|
||||
|
||||
|
||||
+4
@@ -5,6 +5,10 @@ import requests
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
COLLECTION_NAME="edge-collection"
|
||||
|
||||
snapshot_url = f"{QDRANT_URL}/collections/{COLLECTION_NAME}/shards/0/snapshot"
|
||||
|
||||
SHARD_DIRECTORY = "./qdrant-edge-directory"
|
||||
data_dir = Path(SHARD_DIRECTORY)
|
||||
|
||||
|
||||
+9
@@ -1,5 +1,14 @@
|
||||
```rust
|
||||
const COLLECTION_NAME: &str = "edge-collection";
|
||||
const SHARD_DIRECTORY: &str = "./qdrant-edge-directory";
|
||||
|
||||
use std::path::*;
|
||||
use qdrant_edge::*;
|
||||
|
||||
let snapshot_url = format!(
|
||||
"{QDRANT_URL}/collections/{COLLECTION_NAME}/shards/0/snapshot"
|
||||
);
|
||||
|
||||
let data_dir = Path::new(SHARD_DIRECTORY);
|
||||
|
||||
let restore_dir = tempfile::Builder::new()
|
||||
|
||||
+29
-23
@@ -1,28 +1,14 @@
|
||||
```rust
|
||||
use std::collections::HashMap;
|
||||
use std::path::Path;
|
||||
|
||||
use qdrant_client::qdrant::{
|
||||
CreateCollectionBuilder, Distance, PointStruct, UpsertPointsBuilder,
|
||||
VectorParamsBuilder,
|
||||
};
|
||||
use qdrant_client::Qdrant;
|
||||
use qdrant_edge::EdgeShard;
|
||||
use qdrant_edge::internal::SnapshotManifest;
|
||||
use qdrant_edge::{
|
||||
EdgeConfigBuilder, EdgeVectorParamsBuilder, PointId, PointInsertOperations,
|
||||
PointOperations, PointStruct as EdgePoint, PointStructPersisted,
|
||||
UpdateOperation, Vectors,
|
||||
};
|
||||
use serde_json::json;
|
||||
|
||||
const COLLECTION_NAME: &str = "edge-collection";
|
||||
const SHARD_DIRECTORY: &str = "./qdrant-edge-directory";
|
||||
|
||||
use std::path::*;
|
||||
use qdrant_edge::*;
|
||||
|
||||
let snapshot_url = format!(
|
||||
"{QDRANT_URL}/collections/{COLLECTION_NAME}/shards/0/snapshot"
|
||||
);
|
||||
|
||||
const SHARD_DIRECTORY: &str = "./qdrant-edge-directory";
|
||||
let data_dir = Path::new(SHARD_DIRECTORY);
|
||||
|
||||
let restore_dir = tempfile::Builder::new()
|
||||
@@ -49,6 +35,9 @@ EdgeShard::unpack_snapshot(&snapshot_path, data_dir)?;
|
||||
|
||||
let edge_shard = EdgeShard::load(data_dir, None)?;
|
||||
|
||||
use qdrant_edge::*;
|
||||
use qdrant_edge::internal::*;
|
||||
|
||||
let current_manifest = edge_shard.snapshot_manifest()?;
|
||||
|
||||
let update_url = format!(
|
||||
@@ -84,6 +73,9 @@ let edge_shard = EdgeShard::recover_partial_snapshot(
|
||||
&snapshot_manifest,
|
||||
)?;
|
||||
|
||||
use std::path::*;
|
||||
use qdrant_edge::*;
|
||||
|
||||
const VECTOR_DIMENSION: usize = 4;
|
||||
const VECTOR_NAME: &str = "my-vector";
|
||||
|
||||
@@ -103,6 +95,10 @@ let edge_shard = EdgeShard::new(
|
||||
config,
|
||||
)?;
|
||||
|
||||
use ::qdrant_client::*;
|
||||
use ::qdrant_client::qdrant::*;
|
||||
use ::qdrant_client::qdrant::Distance;
|
||||
|
||||
let server_client = Qdrant::from_url(QDRANT_URL)
|
||||
.api_key(QDRANT_API_KEY)
|
||||
.build()?;
|
||||
@@ -120,17 +116,25 @@ if !server_client.collection_exists(COLLECTION_NAME).await? {
|
||||
.await?;
|
||||
}
|
||||
|
||||
use std::collections::*;
|
||||
|
||||
// This is an in-memory queue.
|
||||
// For production use cases consider persisting changes.
|
||||
let mut upload_queue: std::collections::VecDeque<PointStruct> =
|
||||
std::collections::VecDeque::new();
|
||||
let mut upload_queue: VecDeque<::qdrant_client::qdrant::PointStruct> = VecDeque::new();
|
||||
|
||||
use std::collections::*;
|
||||
use serde_json::json;
|
||||
use qdrant_edge::{
|
||||
PointInsertOperations, PointOperations,
|
||||
PointStructPersisted, PointId, UpdateOperation, Vectors,
|
||||
};
|
||||
|
||||
let id = 1u64;
|
||||
let vector = vec![0.1f32, 0.2, 0.3, 0.4];
|
||||
let payload = json!({"color": "red"});
|
||||
|
||||
let edge_points: Vec<PointStructPersisted> = vec![
|
||||
EdgePoint::new(
|
||||
qdrant_edge::PointStruct::new(
|
||||
PointId::NumId(id),
|
||||
Vectors::new_named([(VECTOR_NAME, vector.clone())]),
|
||||
payload.clone(),
|
||||
@@ -143,15 +147,17 @@ edge_shard.update(UpdateOperation::PointOperation(
|
||||
),
|
||||
))?;
|
||||
|
||||
let server_point = PointStruct::new(
|
||||
let server_point = ::qdrant_client::qdrant::PointStruct::new(
|
||||
id,
|
||||
HashMap::from([(VECTOR_NAME.to_string(), vector)]),
|
||||
payload.as_object().cloned().unwrap_or_default(),
|
||||
);
|
||||
upload_queue.push_back(server_point);
|
||||
|
||||
use ::qdrant_client::qdrant::*;
|
||||
|
||||
const BATCH_SIZE: usize = 10;
|
||||
let points_to_upload: Vec<PointStruct> = upload_queue
|
||||
let points_to_upload: Vec<::qdrant_client::qdrant::PointStruct> = upload_queue
|
||||
.drain(..BATCH_SIZE.min(upload_queue.len()))
|
||||
.collect();
|
||||
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
```python
|
||||
COLLECTION_NAME="edge-collection"
|
||||
|
||||
snapshot_url = f"{QDRANT_URL}/collections/{COLLECTION_NAME}/shards/0/snapshot"
|
||||
```
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
```rust
|
||||
const COLLECTION_NAME: &str = "edge-collection";
|
||||
|
||||
let snapshot_url = format!(
|
||||
"{QDRANT_URL}/collections/{COLLECTION_NAME}/shards/0/snapshot"
|
||||
);
|
||||
```
|
||||
+3
@@ -1,4 +1,7 @@
|
||||
```rust
|
||||
use qdrant_edge::*;
|
||||
use qdrant_edge::internal::*;
|
||||
|
||||
let current_manifest = edge_shard.snapshot_manifest()?;
|
||||
|
||||
let update_url = format!(
|
||||
|
||||
+9
-2
@@ -1,10 +1,17 @@
|
||||
```rust
|
||||
use std::collections::*;
|
||||
use serde_json::json;
|
||||
use qdrant_edge::{
|
||||
PointInsertOperations, PointOperations,
|
||||
PointStructPersisted, PointId, UpdateOperation, Vectors,
|
||||
};
|
||||
|
||||
let id = 1u64;
|
||||
let vector = vec![0.1f32, 0.2, 0.3, 0.4];
|
||||
let payload = json!({"color": "red"});
|
||||
|
||||
let edge_points: Vec<PointStructPersisted> = vec![
|
||||
EdgePoint::new(
|
||||
qdrant_edge::PointStruct::new(
|
||||
PointId::NumId(id),
|
||||
Vectors::new_named([(VECTOR_NAME, vector.clone())]),
|
||||
payload.clone(),
|
||||
@@ -17,7 +24,7 @@ edge_shard.update(UpdateOperation::PointOperation(
|
||||
),
|
||||
))?;
|
||||
|
||||
let server_point = PointStruct::new(
|
||||
let server_point = ::qdrant_client::qdrant::PointStruct::new(
|
||||
id,
|
||||
HashMap::from([(VECTOR_NAME.to_string(), vector)]),
|
||||
payload.as_object().cloned().unwrap_or_default(),
|
||||
|
||||
+4
-6
@@ -4,12 +4,6 @@ QDRANT_URL=""
|
||||
QDRANT_API_KEY=""
|
||||
# @hide-end
|
||||
|
||||
# @block-start snapshot-url
|
||||
COLLECTION_NAME="edge-collection"
|
||||
|
||||
snapshot_url = f"{QDRANT_URL}/collections/{COLLECTION_NAME}/shards/0/snapshot"
|
||||
# @block-end snapshot-url
|
||||
|
||||
# @block-start restore-snapshot
|
||||
from pathlib import Path
|
||||
from qdrant_edge import EdgeShard
|
||||
@@ -17,6 +11,10 @@ import requests
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
COLLECTION_NAME="edge-collection"
|
||||
|
||||
snapshot_url = f"{QDRANT_URL}/collections/{COLLECTION_NAME}/shards/0/snapshot"
|
||||
|
||||
SHARD_DIRECTORY = "./qdrant-edge-directory"
|
||||
data_dir = Path(SHARD_DIRECTORY)
|
||||
|
||||
|
||||
+30
-26
@@ -1,36 +1,20 @@
|
||||
use std::collections::HashMap;
|
||||
use std::path::Path;
|
||||
|
||||
use qdrant_client::qdrant::{
|
||||
CreateCollectionBuilder, Distance, PointStruct, UpsertPointsBuilder,
|
||||
VectorParamsBuilder,
|
||||
};
|
||||
use qdrant_client::Qdrant;
|
||||
use qdrant_edge::EdgeShard;
|
||||
use qdrant_edge::internal::SnapshotManifest;
|
||||
use qdrant_edge::{
|
||||
EdgeConfigBuilder, EdgeVectorParamsBuilder, PointId, PointInsertOperations,
|
||||
PointOperations, PointStruct as EdgePoint, PointStructPersisted,
|
||||
UpdateOperation, Vectors,
|
||||
};
|
||||
use serde_json::json;
|
||||
|
||||
// @block-start restore-snapshot
|
||||
pub async fn main() -> anyhow::Result<()> {
|
||||
// @hide-start
|
||||
const QDRANT_URL: &str = "";
|
||||
const QDRANT_API_KEY: &str = "";
|
||||
// @hide-end
|
||||
|
||||
// @block-start snapshot-url
|
||||
const COLLECTION_NAME: &str = "edge-collection";
|
||||
const SHARD_DIRECTORY: &str = "./qdrant-edge-directory";
|
||||
|
||||
use std::path::*;
|
||||
use qdrant_edge::*;
|
||||
|
||||
let snapshot_url = format!(
|
||||
"{QDRANT_URL}/collections/{COLLECTION_NAME}/shards/0/snapshot"
|
||||
);
|
||||
// @block-end snapshot-url
|
||||
|
||||
// @block-start restore-snapshot
|
||||
const SHARD_DIRECTORY: &str = "./qdrant-edge-directory";
|
||||
let data_dir = Path::new(SHARD_DIRECTORY);
|
||||
|
||||
let restore_dir = tempfile::Builder::new()
|
||||
@@ -59,6 +43,9 @@ pub async fn main() -> anyhow::Result<()> {
|
||||
// @block-end restore-snapshot
|
||||
|
||||
// @block-start update-from-snapshot
|
||||
use qdrant_edge::*;
|
||||
use qdrant_edge::internal::*;
|
||||
|
||||
let current_manifest = edge_shard.snapshot_manifest()?;
|
||||
|
||||
let update_url = format!(
|
||||
@@ -96,6 +83,9 @@ pub async fn main() -> anyhow::Result<()> {
|
||||
// @block-end update-from-snapshot
|
||||
|
||||
// @block-start initialize-edge-shard
|
||||
use std::path::*;
|
||||
use qdrant_edge::*;
|
||||
|
||||
const VECTOR_DIMENSION: usize = 4;
|
||||
const VECTOR_NAME: &str = "my-vector";
|
||||
|
||||
@@ -117,6 +107,10 @@ pub async fn main() -> anyhow::Result<()> {
|
||||
// @block-end initialize-edge-shard
|
||||
|
||||
// @block-start initialize-server-client
|
||||
use ::qdrant_client::*;
|
||||
use ::qdrant_client::qdrant::*;
|
||||
use ::qdrant_client::qdrant::Distance;
|
||||
|
||||
let server_client = Qdrant::from_url(QDRANT_URL)
|
||||
.api_key(QDRANT_API_KEY)
|
||||
.build()?;
|
||||
@@ -136,19 +130,27 @@ pub async fn main() -> anyhow::Result<()> {
|
||||
// @block-end initialize-server-client
|
||||
|
||||
// @block-start create-upload-queue
|
||||
use std::collections::*;
|
||||
|
||||
// This is an in-memory queue.
|
||||
// For production use cases consider persisting changes.
|
||||
let mut upload_queue: std::collections::VecDeque<PointStruct> =
|
||||
std::collections::VecDeque::new();
|
||||
let mut upload_queue: VecDeque<::qdrant_client::qdrant::PointStruct> = VecDeque::new();
|
||||
// @block-end create-upload-queue
|
||||
|
||||
// @block-start upsert-point
|
||||
use std::collections::*;
|
||||
use serde_json::json;
|
||||
use qdrant_edge::{
|
||||
PointInsertOperations, PointOperations,
|
||||
PointStructPersisted, PointId, UpdateOperation, Vectors,
|
||||
};
|
||||
|
||||
let id = 1u64;
|
||||
let vector = vec![0.1f32, 0.2, 0.3, 0.4];
|
||||
let payload = json!({"color": "red"});
|
||||
|
||||
let edge_points: Vec<PointStructPersisted> = vec![
|
||||
EdgePoint::new(
|
||||
qdrant_edge::PointStruct::new(
|
||||
PointId::NumId(id),
|
||||
Vectors::new_named([(VECTOR_NAME, vector.clone())]),
|
||||
payload.clone(),
|
||||
@@ -161,7 +163,7 @@ pub async fn main() -> anyhow::Result<()> {
|
||||
),
|
||||
))?;
|
||||
|
||||
let server_point = PointStruct::new(
|
||||
let server_point = ::qdrant_client::qdrant::PointStruct::new(
|
||||
id,
|
||||
HashMap::from([(VECTOR_NAME.to_string(), vector)]),
|
||||
payload.as_object().cloned().unwrap_or_default(),
|
||||
@@ -170,8 +172,10 @@ pub async fn main() -> anyhow::Result<()> {
|
||||
// @block-end upsert-point
|
||||
|
||||
// @block-start process-upload-queue
|
||||
use ::qdrant_client::qdrant::*;
|
||||
|
||||
const BATCH_SIZE: usize = 10;
|
||||
let points_to_upload: Vec<PointStruct> = upload_queue
|
||||
let points_to_upload: Vec<::qdrant_client::qdrant::PointStruct> = upload_queue
|
||||
.drain(..BATCH_SIZE.min(upload_queue.len()))
|
||||
.collect();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user