向量函数
向量函数允许您计算向量对的相似度得分。这些向量相似度函数与 Neo4j 的 向量搜索索引 中使用的函数相同。
vector.similarity.cosine()
语法 |
|
||
描述 |
返回一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示第一个向量的列表。 |
|
|
|
表示第二个向量的列表。 |
|
返回值 |
|
有关更多详细信息,请参见 向量索引文档.
|
|
|
两个向量必须具有相同的维度。 |
两个向量必须相对于余弦相似度是 有效的。 |
该实现与最新的可用向量索引提供程序 ( |
vector.similarity.euclidean()
语法 |
|
||
描述 |
返回一个 |
||
参数 |
名称 |
类型 |
描述 |
|
|
表示第一个向量的列表。 |
|
|
|
表示第二个向量的列表。 |
|
返回值 |
|
有关更多详细信息,请参见 向量索引文档.
|
|
|
两个向量必须具有相同的维度。 |
两个向量必须相对于欧几里得相似度是 有效的。 |
该实现与最新的可用向量索引提供程序 ( |
k 近邻查询返回基于将其关联向量与查询向量进行比较的相似度得分最高的 k 个实体。此类查询可以以近似 k 近邻 (k-ANN) 查询的形式对向量索引运行,其返回的实体有很高的概率属于真正的 k 个近邻中。但是,它们也可以表示为使用向量相似度函数直接进行的详尽搜索。虽然这通常比使用索引慢得多,但它是精确的,而不是近似的,并且不需要现有的索引。这对于对小型数据集进行一次性查询非常有用。
要创建此示例中使用的图,请在空的 Neo4j 数据库中运行以下查询
CREATE
(:Node { id: 1, vector: [1.0, 4.0, 2.0]}),
(:Node { id: 2, vector: [3.0, -2.0, 1.0]}),
(:Node { id: 3, vector: [2.0, 8.0, 3.0]});
给定参数 query
(此处设置为 [4.0, 5.0, 6.0]
),您可以通过欧几里得距离查询该查询向量的两个最近邻。这是通过匹配所有候选向量并根据相似度得分进行排序来实现的
MATCH (node:Node)
WITH node, vector.similarity.euclidean($query, node.vector) AS score
RETURN node, score
ORDER BY score DESCENDING
LIMIT 2;
这将返回两个最近邻。
节点 | 分数 |
---|---|
|
|
|
|
行数:2 |