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 ;
use Arc;
let provider = new;
let backend = new;
let params = new
.with_limit
.with_category;
let results = backend.search.await?;
for result in results.items