我们刚刚发布了 Hibernate Search 7.1.0.Alpha1,这是 Hibernate Search 下一个主要版本的第一个 alpha 版本。
这个版本为使用向量搜索在二进制(图像、音频或视频)数据上搜索提供了可能性。
除此之外,它还提高了 Hibernate Search 与其他框架的兼容性。
新功能
| Hibernate Search 7.1 目前仍处于开发的早期阶段:一些功能可能尚未完成或可能以不兼容的方式更改。 | 
Lucene 后端向量搜索
Hibernate Search 现在允许 Lucene 后端进行向量搜索,这是一个孵化特性。向量搜索提供了在二进制(图像、音频或视频)或文本数据上搜索的工具:外部工具将这些数据转换为向量(字节数组或浮点数数组,也称为“嵌入”),然后用于 Hibernate Search 的索引和查询。Hibernate Search 引入了一个新的字段类型 — @VectorField 和一个新谓词 knn,以便向量可以被索引并在其上进行搜索。
矢量场可以与文档中表示为 byte 或 float 数组的矢量数据一起工作。开箱即用的 byte[] 和 float[] 属性类型将与新的字段类型一起工作。对于任何其他实体属性类型,应实现自定义的 值桥 或 值绑定器。请记住,索引矢量 必须 长度相同,并且这个长度应事先指定以创建模式。
@Entity
@Indexed
public class Book {
        @Id
        private Integer id;
        @VectorField(dimension = 512)
        private float[] coverImageEmbeddings;
        // Other properties ...
}通过 knn 谓词执行矢量相似度搜索。
float[] coverImageEmbeddingsVector = /*...*/
List<Book> hits = searchSession.search( Book.class )
.where( f ->
    // provide the number of similar documents to look for:
    f.knn( 5 )
        // the name of the vector field:
        .field( "coverImageEmbeddings" )
         // matched documents will be the ones whose indexed vector
         // is "most similar" to this vector
        .matching( coverImageEmbeddingsVector )
    // additionally an optional filter can be supplied
    // to provide a regular fulltext search predicate
    .filter( f.match().field( "authors.firstName" ).matching( "arthur" ) )
).fetchHits( 20 );其他改进和错误修复
- 
HSEARCH-5024:Hibernate Search 将不再在读取 Spring Boot 3.2+ 中的嵌套 JAR 时失败启动。 
等等。有关上一版本以来所有更改的完整列表,请参阅 发布说明。
如何获取此版本
所有详细信息均可在 hibernate.org 上的专用页面 上找到并更新。