比Lucene快10倍的矢量搜索JVector 1.0发布


JVector 1.0正式发布。 向量搜索的并发、增量、纯Java实现,在大型数据集上比Lucene快10倍。

JVector 是一个纯 Java 嵌入式矢量搜索引擎,为DataStax Astra提供支持,并且正在添加到 Apache Cassandra 中

矢量搜索是当今生成式人工智能应用程序的关键部分,它允许开发人员快速检索最相关的上下文,为大型语言模型提供足够的信息来准确回答而不产生幻觉,但这一领域的创新大多发生在 Java 生态系统之外。JVector 为企业提供了一种简单的方法来利用其对强大 Java 平台的投资,并为 Java 开发人员提供了易于嵌入到其应用程序中的最先进的解决方案。

JVector 的近亲是 Apache Lucene 的矢量搜索。Lucene 实现了HNSW向量搜索算法,该算法速度很快,但占用内存很大。由于 JVector 基于更复杂的DiskANN算法,因此在其他条件相同的情况下,对于大型数据集,JVector 的速度比 Lucene 快 10 倍以上。

JVector 速度快、内存效率高、磁盘感知、并发、易于嵌入和增量。

  • 增量意味着您可以立即开始搜索 JVector 索引。无需等待批次、微批次或“提交”阶段。
  • 并发意味着您可以同时使用多个线程构建和搜索 JVector 索引。

JVector 设计为易于嵌入,同时保持高性能。  

  • 计算向量的乘积量化(一种压缩)
  • 并行地将向量加载到索引中
  • 将索引保存到磁盘
  • 针对内存中和磁盘上的索引并行进行搜索
  • 计算召回率与真实值并报告性能数据

JVector 在 JDK11+ 上运行,并利用JDK 20+ 上的巴拿马 SIMD 加速JVector 在Apache License 2.0下可用。