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.