pub struct VecDatabase { /* private fields */ }Expand description
Database managing multiple collections
VecDatabase provides a high-level API for managing multiple isolated vector collections. Each collection is backed by a namespace in the underlying NamespaceManager.
§Simple by Default
For simple use cases, just use VecStore::open() directly:
use vecstore::VecStore;
let mut store = VecStore::open("./data")?;§Powerful When Needed
For multi-collection use cases, use VecDatabase:
use vecstore::VecDatabase;
let mut db = VecDatabase::open("./data")?;
let docs = db.create_collection("documents")?;
let users = db.create_collection("users")?;Implementations§
Source§impl VecDatabase
impl VecDatabase
Sourcepub fn open<P: AsRef<Path>>(path: P) -> Result<Self>
pub fn open<P: AsRef<Path>>(path: P) -> Result<Self>
Open or create a database at the specified path
§Example
use vecstore::VecDatabase;
let db = VecDatabase::open("./my_database")?;Sourcepub fn create_collection(&mut self, name: &str) -> Result<Collection>
pub fn create_collection(&mut self, name: &str) -> Result<Collection>
Sourcepub fn create_collection_with_config(
&mut self,
name: &str,
config: CollectionConfig,
) -> Result<Collection>
pub fn create_collection_with_config( &mut self, name: &str, config: CollectionConfig, ) -> Result<Collection>
Create a new collection with custom configuration
§Arguments
name- Collection name (must be unique)config- Collection configuration (quotas, distance metric, etc.)
§Example
use vecstore::{VecDatabase, CollectionConfig, Distance};
let mut db = VecDatabase::open("./db")?;
let config = CollectionConfig::default()
.with_distance(Distance::Manhattan)
.with_max_vectors(100_000);
let collection = db.create_collection_with_config("documents", config)?;Sourcepub fn get_collection(&self, name: &str) -> Result<Option<Collection>>
pub fn get_collection(&self, name: &str) -> Result<Option<Collection>>
Get an existing collection
Returns None if the collection doesn’t exist.
§Example
use vecstore::VecDatabase;
let db = VecDatabase::open("./db")?;
if let Some(collection) = db.get_collection("documents")? {
// Use collection
}Sourcepub fn list_collections(&self) -> Result<Vec<String>>
pub fn list_collections(&self) -> Result<Vec<String>>
List all collections in the database
§Example
use vecstore::VecDatabase;
let db = VecDatabase::open("./db")?;
let collections = db.list_collections()?;
for name in collections {
println!("Collection: {}", name);
}Sourcepub fn delete_collection(&mut self, name: &str) -> Result<()>
pub fn delete_collection(&mut self, name: &str) -> Result<()>
Delete a collection
This permanently deletes the collection and all its data.
§Example
use vecstore::VecDatabase;
let mut db = VecDatabase::open("./db")?;
db.delete_collection("old_documents")?;Sourcepub fn collection_names(&self) -> Result<Vec<String>>
pub fn collection_names(&self) -> Result<Vec<String>>
Get statistics for all collections
§Example
use vecstore::VecDatabase;
let db = VecDatabase::open("./db")?;
let collection_names = db.list_collections()?;
for name in collection_names {
if let Some(coll) = db.get_collection(&name)? {
let stats = coll.stats()?;
println!("{}: {} vectors", name, stats.vector_count);
}
}Auto Trait Implementations§
impl Freeze for VecDatabase
impl RefUnwindSafe for VecDatabase
impl Send for VecDatabase
impl Sync for VecDatabase
impl Unpin for VecDatabase
impl UnsafeUnpin for VecDatabase
impl UnwindSafe for VecDatabase
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