Expand description
ManifoldDB Vector
This crate provides vector embedding storage and similarity search
capabilities for ManifoldDB.
§Overview
The vector module provides:
- Embedding storage: Store and retrieve vector embeddings associated with entities
- Embedding spaces: Named spaces with fixed dimensions and distance metrics
- Distance functions: Cosine, Euclidean, and dot product similarity
§Example
ⓘ
use manifoldb_vector::store::VectorStore;
use manifoldb_vector::types::{Embedding, EmbeddingName, EmbeddingSpace};
use manifoldb_vector::distance::DistanceMetric;
use manifoldb_core::EntityId;
use manifoldb_storage::backends::RedbEngine;
// Create a store
let engine = RedbEngine::in_memory()?;
let store = VectorStore::new(engine);
// Create an embedding space
let name = EmbeddingName::new("text_embedding")?;
let space = EmbeddingSpace::new(name.clone(), 384, DistanceMetric::Cosine);
store.create_space(&space)?;
// Store embeddings
let embedding = Embedding::new(vec![0.1; 384])?;
store.put(EntityId::new(1), &name, &embedding)?;
// Retrieve embeddings
let retrieved = store.get(EntityId::new(1), &name)?;§Modules
store- Vector embedding storagetypes- Core types (Embedding,EmbeddingSpace,EmbeddingName)distance- Distance functionsencoding- Key encoding for storageerror- Error typesindex- Vector indexes (HNSW)ops- Vector search operators (AnnScan,ExactKnn,VectorFilter)
§Search Operators
The ops module provides operators for vector similarity search:
AnnScan- Approximate nearest neighbor search using HNSWExactKnn- Brute force k-NN search for small sets or validationVectorFilter- Post-filter results by predicates
§Example
ⓘ
use manifoldb_vector::ops::{AnnScan, VectorOperator, SearchConfig};
// Search for 10 nearest neighbors
let mut scan = AnnScan::k_nearest(&index, &query, 10)?;
while let Some(m) = scan.next()? {
println!("Entity {:?} at distance {}", m.entity_id, m.distance);
}Re-exports§
pub use distance::chebyshev_distance;pub use distance::manhattan_distance;pub use distance::CachedNorm;pub use distance::DistanceMetric;pub use error::VectorError;pub use index::HnswConfig;pub use index::HnswIndex;pub use index::HnswIndexManager;pub use index::RecoveryStatus;pub use index::SearchResult;pub use index::VectorIndex;pub use ops::AnnScan;pub use ops::ExactKnn;pub use ops::SearchConfig;pub use ops::VectorFilter;pub use ops::VectorMatch;pub use ops::VectorOperator;pub use quantization::KMeans;pub use quantization::KMeansConfig;pub use quantization::PQCode;pub use quantization::PQConfig;pub use quantization::ProductQuantizer;pub use store::decode_vector_value;pub use store::encode_vector_value;pub use store::CollectionVectorStore;pub use store::PointStore;pub use store::SparseVectorStore;pub use store::VectorStore;pub use store::TABLE_COLLECTION_VECTORS;pub use types::BinaryEmbedding;pub use types::BinaryEmbeddingSpace;pub use types::Collection;pub use types::CollectionName;pub use types::CollectionSchema;pub use types::Embedding;pub use types::EmbeddingName;pub use types::EmbeddingSpace;pub use types::NamedVector;pub use types::Payload;pub use types::SparseEmbedding;pub use types::SparseEmbeddingSpace;pub use types::VectorConfig;pub use types::VectorData;pub use types::VectorName;pub use types::VectorRef;pub use types::VectorType;
Modules§
- distance
- Distance functions for vector similarity.
- encoding
- Key encoding for vector storage.
- error
- Error types for the vector crate.
- index
- Vector indexes for similarity search.
- ops
- Vector search operators.
- quantization
- Product Quantization for vector compression.
- store
- Vector embedding storage.
- types
- Core types for vector storage.