frankensearch-embed
Embedder implementations for the frankensearch hybrid search library.
Overview
This crate provides three tiers of text embedding, each feature-gated for granular dependency control:
- Hash (
hashfeature, default): FNV-1a hash embedder with zero ML dependencies. Useful for development, testing, and low-latency scenarios. - Model2Vec (
model2vecfeature): potion-128M static embedder (~0.57ms per embed). Serves as the fast tier in two-tier search. - FastEmbed (
fastembedfeature): MiniLM-L6-v2 ONNX embedder (~128ms per embed). Serves as the quality tier in two-tier search.
The EmbedderStack auto-detection system probes for locally available models and configures the best fast+quality embedder pair automatically.
Key Types
EmbedderStack- auto-detected fast+quality embedder pair with optional dimension reductionDimReduceEmbedder- wrapper that truncates embeddings to a target dimensionalityTwoTierAvailability- diagnostic report of which model tiers are availableHashEmbedder- FNV-1a hash-based embedder (feature:hash)Model2VecEmbedder- potion-128M static model embedder (feature:model2vec)FastEmbedEmbedder- MiniLM-L6-v2 ONNX embedder (feature:fastembed)CachedEmbedder- transparent embedding cache wrapper with hit/miss statsBatchCoalescer- batches concurrent embedding requests for throughput optimizationModelCacheLayout- manages the on-disk model cache directory structureModelManifest/ModelManifestCatalog- model metadata, lifecycle, and SHA-256 verificationModelDownloader- downloads models from HuggingFace with progress tracking (feature:download)EmbedderRegistry- registry of known embedder and reranker implementations
Features
| Feature | Description |
|---|---|
hash (default) |
FNV-1a hash embedder, zero dependencies |
model2vec |
potion-128M static embedder via safetensors + tokenizers |
fastembed |
MiniLM-L6-v2 ONNX embedder via fastembed |
download |
Model auto-download from HuggingFace |
bundled-default-models |
Enables model2vec + fastembed together |
Usage
use Arc;
use ;
use Embedder;
// Simple: use the hash embedder for development
let embedder = default_256;
// Production: auto-detect best available models
let stack = auto_detect;
// stack.fast() -> fastest available embedder
// stack.quality() -> highest quality embedder (if available)
Dependency Graph Position
frankensearch-core
^
|
frankensearch-embed
^
|-- frankensearch-fusion
|-- frankensearch-fsfs
|-- frankensearch (root)
License
MIT