spotify/voyager

🛰️ An approximate nearest-neighbor search library for Python and Java with a focus on ease of use, simplicity, and deployability.

🎯 什么是 Voyager

Voyager 是一个开源库,让您可以使用近似最近邻 (ANN) 算法快速搜索大量向量集合(例如嵌入)。它实现了 HNSW (Hierarchical Navigable Small World) 图方法,基于热门的 hnswlib 项目构建,但增加了许多性能与易用性改进。该库适用于 Python、Java 和 Scala,且这两种语言绑定共享相同的索引格式,因此您可以建立一次索引,并从任何这些运行环境中进行查询。


🚀 核心功能 (如 README 所述)

功能 详细信息
快速 ANN 搜索 使用 HNSW,以高召回率和低查询延迟著称。
跨语言绑定 Python、Java 和 Scala 具有相同的索引格式和功能集。
生产级质量 在 Spotify 部署,每天处理数亿次查询。
仅限内存 索引存在于 RAM 中以实现超快速查找(无磁盘持久化)。
广泛的平台支持 macOS、Linux、Windows;Python 支持 x86_64 和 ARM (Apple Silicon),Java 在 Linux/macOS 上支持 ARM。
轻松安装 Python 使用 pip install voyager;Java/Scala 使用 Maven/Gradle 或 SBT 坐标。
Apache 2.0 授权 免费供商业和非商业用途使用。

📦 入门指南

Python

pip install voyager
import voyager as vg
# 示例 (伪代码,请参阅文档以获取确切 API)
index = vg.Index(dim=128)
index.add(vectors, ids)
neighbors = index.search(query_vector, k=10)

Java (Maven)

<dependency>
  <groupId>com.spotify</groupId>
  <artifactId>voyager</artifactId>
  <version>2.1.0</version>
</dependency>
import com.spotify.voyager.Index;
// 建立并查询索引 – 请参阅 Java 文档以获取确切调用

Scala (SBT)

libraryDependencies += "com.spotify" % "voyager" % "2.1.0"

🎯 典型使用案例

  • 语义搜索:针对文本嵌入(例如寻找相似文档、常见问题或产品描述)。
  • 推荐系统:需要在嵌入空间中检索最近项目的系统。
  • 聚类 / 去重:需要快速相似度查找的流水线。
  • 任何 AI/ML 应用:产生高维向量并需要实时最近邻查询的应用。

📚 文档与资源


🛡️ 授权

Voyager 采用 Apache 2.0 License (一种宽松的开源授权) 发布。这允许免费使用、修改和分发,即使在商业产品中也是如此。


🙋‍♀️ 贡献

欢迎贡献。请参阅仓库中的 CONTRIBUTING.md 文件,了解如何报告错误、提出增强功能或提交合并请求的准则。

相关

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