计算嵌入相似度

一旦嵌入存入数据库,您可以使用 Cypher 函数 vector.similarity.cosine() 计算它们之间的相似度。

示例 1:比较两部相关电影的嵌入
查询
MATCH (a:Movie {title: "Despicable Me"})
MATCH (b:Movie {title: "Despicable Me 2"})
RETURN vector.similarity.cosine(a.embedding, b.embedding)
使用 SentenceTransformer 嵌入的结果
vector.similarity.cosine(a.embedding, b.embedding)

0.7020013332366943

示例 2:比较两部不相关电影的嵌入
查询
MATCH (a:Movie {title: "Despicable Me"})
MATCH (b:Movie {title: "Emperor's New Groove, The"})
RETURN vector.similarity.cosine(a.embedding, b.embedding)
使用 SentenceTransformer 嵌入的结果
vector.similarity.cosine(a.embedding, b.embedding)

0.6120055317878723

两个节点的相似度数值在实际用途上并不是非常重要。您通常感兴趣的是根据某些标准检索最相关的节点,因此最关键的是目标节点相对于其他节点得分最高。例如,Despicable MeDespicable Me 2 的相似度分数本身并不重要,重要的是它在所有电影节点中得分最高。

此方法在比较两部电影时可以正常工作,但无法用于查找与 Despicable Me 最相似的节点。若要基于嵌入快速检索节点,请继续在电影嵌入上创建向量索引基于该索引查询数据库