计算嵌入相似度

一旦嵌入数据进入数据库,您就可以使用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)
表 1. 使用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)
表 2. 使用SentenceTransformer嵌入的结果
vector.similarity.cosine(a.embedding, b.embedding)

0.6120055317878723

两个节点的相似度值对于实际用途来说并不是非常重要。您通常更感兴趣的是根据某些条件检索最相关的节点,因此最重要的是所需节点相对于其他节点得分最高。例如,Despicable MeDespicable Me 2 的相似度分数是多少并不重要;重要的是它在所有电影节点中得分最高。

这种方法很适用于比较两部电影,但无法找到与 Despicable Me 最相似的节点。为了能够基于嵌入快速检索节点,请继续在电影嵌入上创建向量索引,并据此查询数据库

© . All rights reserved.