Neo4j 向量搜索

@VectorSearch 注解

Spring Data Neo4j 通过使用 @VectorSearch 注解在存储库级别支持 Neo4j 的向量搜索。为此,Neo4j 需要有一个向量索引。如何在 Neo4j 文档 中解释了如何创建向量索引。

为了使此功能正常工作,域实体中不需要定义任何(Spring Data)向量类型的属性,因为搜索完全在索引上进行。

@VectorSearch 注解需要两个参数:要使用的向量索引的名称和最近邻居的数量。

对于整个域的通用向量搜索,可以使用不带任何属性的派生查找器方法。

interface VectorSearchRepository extends Neo4jRepository<EntityWithVector, String> {

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

}

向量索引可以与任何基于属性的查找器方法结合使用,以过滤结果。

出于技术原因,向量搜索将始终在属性搜索之前执行。例如,如果属性过滤器寻找名为 "Helge" 的人,但向量搜索只返回 "Hannes",则不会有结果。
interface VectorSearchRepository extends Neo4jRepository<EntityWithVector, String> {

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

}
© . This site is unofficial and not affiliated with VMware.