向量函数
向量函数允许您计算向量对的相似度得分。这些向量相似度函数与 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 |