跳到主要内容
版本:8.1.1

Neo4j 向量搜索

Doubao 中英对照 Neo4j Vector Search

@VectorSearch 注解​

Spring Data Neo4j 通过使用 @VectorSearch 注解,在仓库级别支持 Neo4j 的向量搜索。要使其正常工作,Neo4j 中需要已建立向量索引。如何创建向量索引请参阅 Neo4j 文档。

备注

该功能无需在领域实体中定义任何(Spring Data)Vector 类型的属性即可工作,因为搜索完全基于索引进行。

@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);

}