meilisearch/arroy
An Approximate Nearest Neighbors library in Rust, based on random projections and LMDB and optimized for memory usage :boom:
解决的问题
Arroy 是一个用于近似最近邻(ANN)搜索的 Rust 库。它允许用户在高维空间中找到与目标向量最接近的向量,特别解决了在处理数百万个高维文档(例如 768 或 1536 维)时内存受限的搜索问题。
工作原理
Arroy 使用随机投影构建一棵树的森林。在每个节点上,一个随机超平面将空间划分为两个子空间。此过程重复多次以创建森林。为了处理点积距离,它将向量从点积空间转换为查询友好的余弦空间。
适用人群
适用于需要高效、低内存向量搜索的开发者,特别是使用 Rust 且需要通过 LMDB 在多个进程间共享索引的开发者。
特性亮点
- 基于 LMDB 的存储:使用内存映射的键值存储,允许多个进程共享相同数据并执行原子修改。
- 低内存占用:针对小内存使用进行优化,可对超出可用 RAM 的大规模数据集进行索引。
- 多种距离度量:支持欧几里得、曼哈顿、余弦和点积(内积)距离。
- 并发访问:支持使用
rayon进行多线程树构建,并允许在另一个索引被修改时进行查找。 - 增强功能:查询时支持过滤,并可在不完全重建的情况下增量更新树。
相关
- 项目
- 项目
- 项目
- 项目