vectorizer_sdk/client/
vectors.rs1use super::VectorizerClient;
8use crate::error::{Result, VectorizerError};
9use crate::models::*;
10
11impl VectorizerClient {
12 pub async fn get_vector(&self, collection: &str, vector_id: &str) -> Result<Vector> {
14 let response = self
15 .make_request(
16 "GET",
17 &format!("/collections/{collection}/vectors/{vector_id}"),
18 None,
19 )
20 .await?;
21 let vector: Vector = serde_json::from_str(&response).map_err(|e| {
22 VectorizerError::server(format!("Failed to parse get vector response: {e}"))
23 })?;
24 Ok(vector)
25 }
26
27 pub async fn insert_texts(
30 &self,
31 collection: &str,
32 texts: Vec<BatchTextRequest>,
33 ) -> Result<BatchResponse> {
34 let payload = serde_json::json!({ "texts": texts });
35 let response = self
36 .make_request(
37 "POST",
38 &format!("/collections/{collection}/documents"),
39 Some(serde_json::to_value(payload)?),
40 )
41 .await?;
42 let batch_response: BatchResponse = serde_json::from_str(&response).map_err(|e| {
43 VectorizerError::server(format!("Failed to parse insert texts response: {e}"))
44 })?;
45 Ok(batch_response)
46 }
47
48 pub async fn embed_text(&self, text: &str, model: Option<&str>) -> Result<EmbeddingResponse> {
51 let mut payload = serde_json::Map::new();
52 payload.insert(
53 "text".to_string(),
54 serde_json::Value::String(text.to_string()),
55 );
56 if let Some(model) = model {
57 payload.insert(
58 "model".to_string(),
59 serde_json::Value::String(model.to_string()),
60 );
61 }
62 let response = self
63 .make_request("POST", "/embed", Some(serde_json::Value::Object(payload)))
64 .await?;
65 let embedding_response: EmbeddingResponse =
66 serde_json::from_str(&response).map_err(|e| {
67 VectorizerError::server(format!("Failed to parse embedding response: {e}"))
68 })?;
69 Ok(embedding_response)
70 }
71}