2023年已经结束,对于Apache Lucene的开发来说,又是忙碌的一年。让我们花些时间回顾一下去年的亮点。
社区
2023年,有:
- 5个小版本发布 (9.5, 9.6, 9.7, 9.8 和 9.9),
- 1个补丁版本发布 (9.9.1),
- 1位新的提交者,
- 4位新的PMC成员,
- 来自97位唯一贡献者的620次提交。
向量搜索
真正语义搜索在检索和检索增强生成方面的潜力对大小用户都非常有吸引力。因此,向量搜索成为2023年Apache Lucene的主要主题也就不足为奇了。更具体地说,在多个版本中添加了许多有趣的功能和优化。
- 支持int8向量。(Lucene 9.5)
- 更快的HNSW图合并。(Lucene 9.6)
- 通过支持矢量化 (Lucene 9.7) 和FMA (Lucene 9.9) 来加快索引、合并和查询速度。
- 支持将向量搜索与块连接结合使用。(Lucene 9.8)
- 支持在索引时对向量进行自动int8标量量化。(Lucene 9.9)
到处使用基数排序
索引是将数据组织起来以便在搜索时能够高效访问的一种方式,这在实践中涉及大量的排序。在排序方面,基数排序 是最佳选择(在适用情况下!)。Lucene 已经使用基数排序一段时间了,用于一些对性能要求很高的位置,例如对段的术语字典进行排序。但在2023年,基数排序的使用进一步增加,它开始被用于优化:
更快的查询评估
我们已经介绍了向量搜索的一些性能改进,但关键字搜索在2023年也获得了重大的速度提升。查看这篇博客,其中介绍了9.7、9.8和9.9版本中出现的主要速度提升。这些改进适用于传统的关键字搜索和稀疏向量搜索,例如由学习的稀疏检索模型创建的搜索。
与Java虚拟机的更紧密集成
作为Java库,Lucene很大程度上依赖于Java虚拟机(JVM),偶尔会发布一些对Lucene特别有趣的新功能。特别是以下两个功能已经集成,如果您在足够新的JVM版本上运行,则它们将自动使用。
- Panama向量API用于加速向量比较,例如计算两个向量之间的余弦相似度或平方距离。
- Panama
MemorySegment
API是改进的API,用于将文件mmap到内存中。
很难划清界限,但我将在此停止,因为我很难为我在2023年看到的其他好的更改找到共同的主题。:)敬请期待Apache Lucene在2024年取得的重大进展!