Skip to main content

Crate fabryk_vector

Crate fabryk_vector 

Source
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 search
  • vector-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.