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下可用。