dynamo_async_openai/
vector_stores.rs1use serde::Serialize;
12
13use crate::{
14 Client, VectorStoreFiles,
15 config::Config,
16 error::OpenAIError,
17 types::{
18 CreateVectorStoreRequest, DeleteVectorStoreResponse, ListVectorStoresResponse,
19 UpdateVectorStoreRequest, VectorStoreObject, VectorStoreSearchRequest,
20 VectorStoreSearchResultsPage,
21 },
22 vector_store_file_batches::VectorStoreFileBatches,
23};
24
25pub struct VectorStores<'c, C: Config> {
26 client: &'c Client<C>,
27}
28
29impl<'c, C: Config> VectorStores<'c, C> {
30 pub fn new(client: &'c Client<C>) -> Self {
31 Self { client }
32 }
33
34 pub fn files(&self, vector_store_id: &str) -> VectorStoreFiles<C> {
36 VectorStoreFiles::new(self.client, vector_store_id)
37 }
38
39 pub fn file_batches(&self, vector_store_id: &str) -> VectorStoreFileBatches<C> {
41 VectorStoreFileBatches::new(self.client, vector_store_id)
42 }
43
44 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
46 pub async fn create(
47 &self,
48 request: CreateVectorStoreRequest,
49 ) -> Result<VectorStoreObject, OpenAIError> {
50 self.client.post("/vector_stores", request).await
51 }
52
53 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
55 pub async fn retrieve(&self, vector_store_id: &str) -> Result<VectorStoreObject, OpenAIError> {
56 self.client
57 .get(&format!("/vector_stores/{vector_store_id}"))
58 .await
59 }
60
61 #[crate::byot(T0 = serde::Serialize, R = serde::de::DeserializeOwned)]
63 pub async fn list<Q>(&self, query: &Q) -> Result<ListVectorStoresResponse, OpenAIError>
64 where
65 Q: Serialize + ?Sized,
66 {
67 self.client.get_with_query("/vector_stores", &query).await
68 }
69
70 #[crate::byot(T0 = std::fmt::Display, R = serde::de::DeserializeOwned)]
72 pub async fn delete(
73 &self,
74 vector_store_id: &str,
75 ) -> Result<DeleteVectorStoreResponse, OpenAIError> {
76 self.client
77 .delete(&format!("/vector_stores/{vector_store_id}"))
78 .await
79 }
80
81 #[crate::byot(T0 = std::fmt::Display, T1 = serde::Serialize, R = serde::de::DeserializeOwned)]
83 pub async fn update(
84 &self,
85 vector_store_id: &str,
86 request: UpdateVectorStoreRequest,
87 ) -> Result<VectorStoreObject, OpenAIError> {
88 self.client
89 .post(&format!("/vector_stores/{vector_store_id}"), request)
90 .await
91 }
92
93 #[crate::byot(T0 = std::fmt::Display, T1 = serde::Serialize, R = serde::de::DeserializeOwned)]
95 pub async fn search(
96 &self,
97 vector_store_id: &str,
98 request: VectorStoreSearchRequest,
99 ) -> Result<VectorStoreSearchResultsPage, OpenAIError> {
100 self.client
101 .post(&format!("/vector_stores/{vector_store_id}/search"), request)
102 .await
103 }
104}