gordonmurray/firnflow
The cost efficiency of S3 with the speed of local RAM. A multi-tenant vector and full-text search engine featuring a tiered RAM -> NVMe -> S3 architecture for microsecond latency on top of object storage
What it solves
Firn is a multi-tenant vector and full-text search engine designed to eliminate the need for always-on, expensive search clusters. It allows teams to run high-performance search directly against cheap object storage (like AWS S3, Google Cloud Storage, or MinIO) while maintaining low latency through a tiered caching system.
How it works
Firn uses a tiered storage architecture to balance cost and speed:
- L1 (RAM) and L2 (NVMe): A hybrid cache (via foyer) stores frequent query results for microsecond-scale retrieval.
- L3 (Object Storage): The source of truth where data is stored in isolated namespaces using LanceDB.
- Optional Object Cache: A local NVMe layer that caches the raw bytes LanceDB reads from object storage, speeding up novel queries that aren't exact repeats.
- Indexing: It utilizes IVF_PQ indexes to make cold searches on object storage practical (reducing latency from ~25s to ~979ms) and BM25 indexes for full-text search.
Who it’s for
It is built for teams managing multi-tenant SaaS workloads, private RAG deployments, or those looking to replace heavy services like OpenSearch, Elasticsearch, or Vespa with a self-hosted, low-idle-cost alternative.
Highlights
- Multi-tenant by Design: Each namespace is physically isolated in its own object-storage prefix.
- Hybrid Search: Supports vector, BM25 full-text, and fused hybrid search.
- Late-Interaction Search: Supports multivector shapes (e.g., ColBERT, ColPali) for complex compositional queries.
- CAS Consistency: Uses conditional-write primitives to ensure data integrity across concurrent writers.
- Operational Visibility: Includes native Prometheus metrics to track cache hits and storage costs.
Related
- Project
- Project
- Project
- Project
- Project