pub struct ObjectStorage { /* private fields */ }Expand description
Object storage backend using OpenDAL
Implementations§
Source§impl ObjectStorage
impl ObjectStorage
Sourcepub fn new(config: ObjectStorageConfig) -> Result<Self>
pub fn new(config: ObjectStorageConfig) -> Result<Self>
Create a new object storage with the given configuration
Sourcepub fn filesystem(root: impl Into<String>) -> Result<Self>
pub fn filesystem(root: impl Into<String>) -> Result<Self>
Create filesystem storage
Sourcepub fn azure(
container: impl Into<String>,
account_name: impl Into<String>,
) -> Result<Self>
pub fn azure( container: impl Into<String>, account_name: impl Into<String>, ) -> Result<Self>
Create Azure Blob storage
pub fn build_operator(config: &ObjectStorageConfig) -> Result<Operator>
Trait Implementations§
Source§impl IndexStorage for ObjectStorage
impl IndexStorage for ObjectStorage
Source§fn save_index<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
index_type: IndexType,
data: Vec<u8>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn save_index<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
index_type: IndexType,
data: Vec<u8>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Save index data for a namespace
Source§fn load_index<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
index_type: IndexType,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn load_index<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
index_type: IndexType,
) -> Pin<Box<dyn Future<Output = Result<Option<Vec<u8>>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Load index data for a namespace
Source§fn delete_index<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
index_type: IndexType,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_index<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
index_type: IndexType,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Delete index data for a namespace
Source§impl VectorStorage for ObjectStorage
impl VectorStorage for ObjectStorage
Source§fn upsert<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
vectors: Vec<Vector>,
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn upsert<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
vectors: Vec<Vector>,
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Store or update vectors in a namespace
Source§fn get<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
ids: &'life2 [VectorId],
) -> Pin<Box<dyn Future<Output = Result<Vec<Vector>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn get<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
ids: &'life2 [VectorId],
) -> Pin<Box<dyn Future<Output = Result<Vec<Vector>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Get vectors by IDs
Source§fn get_all<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<Vec<Vector>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_all<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<Vec<Vector>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get all vectors in a namespace (for brute-force search)
Source§fn delete<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
ids: &'life2 [VectorId],
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn delete<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
ids: &'life2 [VectorId],
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Delete vectors by IDs
Source§fn namespace_exists<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn namespace_exists<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Check if namespace exists
Source§fn ensure_namespace<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn ensure_namespace<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Create namespace if it doesn’t exist
Source§fn dimension<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<Option<usize>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn dimension<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<Option<usize>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get vector dimension for namespace (None if empty)
Source§fn count<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn count<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get vector count in namespace
Source§fn list_namespaces<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<NamespaceId>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_namespaces<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<NamespaceId>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
List all namespaces
Source§fn delete_namespace<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_namespace<'life0, 'life1, 'async_trait>(
&'life0 self,
namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Delete a namespace and all its vectors
Source§fn cleanup_expired<'life0, 'life1, 'async_trait>(
&'life0 self,
_namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn cleanup_expired<'life0, 'life1, 'async_trait>(
&'life0 self,
_namespace: &'life1 NamespaceId,
) -> Pin<Box<dyn Future<Output = Result<usize>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Clean up expired vectors in a namespace
Returns the number of vectors removed
Auto Trait Implementations§
impl Freeze for ObjectStorage
impl !RefUnwindSafe for ObjectStorage
impl Send for ObjectStorage
impl Sync for ObjectStorage
impl Unpin for ObjectStorage
impl UnsafeUnpin for ObjectStorage
impl !UnwindSafe for ObjectStorage
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more