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 指标,用于跟踪缓存命中率和存储成本。
相关
- 项目
- 项目
- 项目
- 项目
- 项目