Neo4j 向量搜索

@VectorSearch注解

Spring Data Neo4j 通过使用 @VectorSearch 注解,在存储库级别支持 Neo4j 的向量搜索功能。为了使该功能正常工作,Neo4j 需要预先建立一个向量索引。如何创建向量索引的详细说明请参见 Neo4j 文档spring-doc.cadn.net.cn

无需在领域实体中定义任何(Spring Data)向量类型属性即可实现此功能,因为搜索仅在索引上进行。

The @VectorSearch 注解需要两个参数:
一是要使用的向量索引名称,二是最近邻的数量。spring-doc.cadn.net.cn

对于整个域的通用向量搜索,可以使用派生的查找方法,而无需任何属性。spring-doc.cadn.net.cn

interface VectorSearchRepository extends Neo4jRepository<EntityWithVector, String> {

    @VectorSearch(indexName = "entityIndex", numberOfNodes = 2)
    List<EntityWithVector> findBy(Vector searchVector);

}

向量索引可以与任何基于属性的查找方法结合使用,以筛选结果。spring-doc.cadn.net.cn

由于技术原因,向量搜索将始终在属性搜索被调用之前执行。例如,如果属性筛选器查找名为“Helge”的人员,但向量搜索仅返回“Hannes”,则不会产生任何结果。
interface VectorSearchRepository extends Neo4jRepository<EntityWithVector, String> {

    @VectorSearch(indexName = "entityIndex", numberOfNodes = 1)
    List<EntityWithVector> findByName(String name, Vector searchVector);

}