Crate manifoldb_vector

Crate manifoldb_vector 

Source
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

§Search Operators

The ops module provides operators for vector similarity search:

  • AnnScan - Approximate nearest neighbor search using HNSW
  • ExactKnn - Brute force k-NN search for small sets or validation
  • VectorFilter - 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.