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