计算嵌入相似度

一旦嵌入在数据库中,您可以使用 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 最相似的节点。要能够根据节点的嵌入快速检索节点,请继续 创建向量索引 在电影嵌入上,并 查询数据库 基于此。