Expand description
Vector search infrastructure for Fabryk.
This crate provides semantic vector search with pluggable embedding providers and vector backends. It includes LanceDB and fastembed backends (feature-gated), plus in-memory fallbacks for testing.
§Features
vector-lancedb: Enable LanceDB-based vector storage and ANN searchvector-fastembed: Enable local embedding generation via fastembed
§Architecture
┌─────────────────────────────────────────────────────────────┐
│ fabryk-vector │
├─────────────────────────────────────────────────────────────┤
│ EmbeddingProvider trait │
│ ├── MockEmbeddingProvider (always available) │
│ └── FastEmbedProvider (feature: vector-fastembed) │
├─────────────────────────────────────────────────────────────┤
│ VectorBackend trait │
│ ├── SimpleVectorBackend (in-memory fallback) │
│ └── LancedbBackend (feature: vector-lancedb) │
├─────────────────────────────────────────────────────────────┤
│ VectorExtractor trait (domain text composition) │
│ VectorIndexBuilder (batch embed + index orchestration) │
├─────────────────────────────────────────────────────────────┤
│ Hybrid search (RRF merge with FTS results) │
│ Persistence (content hash freshness checking) │
└─────────────────────────────────────────────────────────────┘§Example
ⓘ
use fabryk_vector::{
VectorSearchParams, VectorBackend,
MockEmbeddingProvider, SimpleVectorBackend,
};
use std::sync::Arc;
let provider = Arc::new(MockEmbeddingProvider::new(384));
let backend = SimpleVectorBackend::new(provider);
let params = VectorSearchParams::new("semantic query")
.with_limit(10)
.with_category("harmony");
let results = backend.search(params).await?;
for result in results.items {
println!("{}: {:.3}", result.id, result.score);
}Re-exports§
pub use types::BuildError;pub use types::EmbeddedDocument;pub use types::VectorConfig;pub use types::VectorDocument;pub use types::VectorIndexStats;pub use types::VectorSearchParams;pub use types::VectorSearchResult;pub use types::VectorSearchResults;pub use backend::SimpleVectorBackend;pub use backend::VectorBackend;pub use embedding::EmbeddingProvider;pub use embedding::MockEmbeddingProvider;pub use extractor::VectorExtractor;pub use builder::VectorIndexBuilder;pub use hybrid::FtsResult;pub use hybrid::HybridSearchResult;pub use hybrid::reciprocal_rank_fusion;pub use persistence::is_index_fresh;pub use backend::create_vector_backend;
Modules§
- backend
- Vector backend trait and simple fallback implementation.
- builder
- VectorIndexBuilder for constructing vector search indices.
- embedding
- Embedding provider trait and mock implementation.
- extractor
- VectorExtractor trait for domain-specific document extraction.
- hybrid
- Hybrid search combining vector and full-text search results.
- persistence
- Persistence and freshness checking for vector indices.
- types
- Common types for the vector search module.