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

解决的问题

Firn 是一个专为消除始终在线、昂贵的搜索集群需求而设计的多租户向量和全文搜索引擎。它允许团队直接在廉价的对象存储(如 AWS S3、Google Cloud Storage 或 MinIO)上运行高性能搜索,同时通过分层缓存系统保持低延迟。

工作原理

Firn 使用分层存储架构来平衡成本与速度:

  • L1(RAM)和 L2(NVMe): 通过 foyer 实现的混合缓存,将频繁查询结果存储在微秒级可检索的缓存中。
  • L3(对象存储): 数据存储在隔离的命名空间中,使用 LanceDB 作为数据源。
  • 可选的对象缓存: 本地 NVMe 层,用于缓存 LanceDB 从对象存储中读取的原始字节,加速非重复的新查询。
  • 索引: 使用 IVF_PQ 索引使对象存储上的冷查询变得实用(将延迟从约 25 秒降低至约 979 毫秒),并使用 BM25 索引支持全文搜索。

适用人群

适用于管理多租户 SaaS 工作负载、私有 RAG 部署的团队,或希望用自托管、低空闲成本的替代方案取代 OpenSearch、Elasticsearch 或 Vespa 等重型服务的用户。

主要亮点

  • 原生多租户: 每个命名空间在独立的对象存储前缀中物理隔离。
  • 混合搜索: 支持向量搜索、BM25 全文搜索以及融合混合搜索。
  • 晚期交互搜索: 支持多向量结构(如 ColBERT、ColPali),以处理复杂的组合查询。
  • CAS 一致性: 使用条件写入原语,确保并发写入者之间的数据完整性。
  • 运维可见性: 内置 Prometheus 指标,用于跟踪缓存命中率和存储成本。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目