查找与另一部电影相似的电影

要查找与特定电影嵌入相似的电影,请检索该电影并将其嵌入提供给 Cypher® 过程 db.index.vector.queryNodes

MATCH (m:Movie {title: 'Despicable Me'})
CALL db.index.vector.queryNodes('moviePlots', 5, m.embedding)
YIELD node, score
RETURN node.title AS title, node.plot AS plot, score
表1. OpenAI 嵌入结果
标题 剧情 得分

“卑鄙的我”

“当一个犯罪策划者利用三个孤儿女孩作为其宏大计划的棋子时,他发现她们的爱正在深刻地改变他,让他变得更好。”

1.0

“卑鄙的我 2”

“当世界上最邪恶的超级坏蛋格鲁转变为超级奶爸后,他被一个官方团队招募,以阻止致命的肌肉男和一大群格鲁自己的手下,他必须用新的小玩意、汽车和更多的小黄人疯狂来反击。”

0.940204381942749

“小黄人”

“小黄人斯图尔特、凯文和鲍勃被超级恶棍斯嘉丽·杀人狂招募,她和她的发明家丈夫赫布密谋接管世界。”

0.9329936504364014

“阿拉丁”

“当一个街头流浪儿渴望一位美丽公主的爱时,他利用精灵的魔法将自己打扮成王子,以便娶她。”

0.9291699528694153

“超级大坏蛋”

“超级恶棍大坏蛋最终击败了他的宿敌超级英雄大都市侠。但没有了英雄,他失去了所有目标,必须为自己的生活找到新的意义。”

0.9292264580726624

表2. SentenceTransformers 嵌入结果
标题 剧情 得分

“卑鄙的我”

“当一个犯罪策划者利用三个孤儿女孩作为其宏大计划的棋子时,他发现她们的爱正在深刻地改变他,让他变得更好。”

1.0

“以艰难的方式去爱”

“一个小偷遇到一个天真无邪的年轻女子,并将她带入他的犯罪世界,而她则教会他享受生活和被爱的故事。”

0.7806928157806396

“控制的极限”

“一个神秘的独行侠,一个陌生人在完成一项犯罪任务的故事。”

0.7746935486793518

“半熟”

“三个不太聪明的男人想出一系列疯狂计划来帮助朋友出狱的故事。”

0.7708940505981445

“孤胆特工”

“一个拥有暴力过往的安静典当铺老板,为了拯救他唯一的朋友——一个孩子,与一个贩毒和贩卖器官的团伙展开较量。”

0.7698113918304443

检索匹配搜索提示的节点时,OpenAI 和 SentenceTransformers 的结果差异不大。另一方面,在上面的例子中,它们的表现截然不同:OpenAI 能够关联三部《小黄人》电影,而《卑鄙的我 2》和《小黄人》却没有出现在 SentenceTransformers 的结果中。

为什么使用 SentenceTransformers 嵌入时,《卑鄙的我 2》没有出现在与《卑鄙的我》最接近的五部电影中?考虑到嵌入是根据标题和剧情生成的,让我们看看这两部电影的剧情是如何关联的。

《卑鄙的我》剧情

当一个犯罪策划者利用三个孤儿女孩作为其宏大计划的棋子时,他发现她们的爱正在深刻地改变他,让他变得更好。

《卑鄙的我 2》剧情

当世界上最邪恶的超级坏蛋格鲁转变为超级奶爸后,他被一个官方团队招募,以阻止致命的肌肉男和一大群格鲁自己的手下,他必须用新的小玩意、汽车和更多的小黄人疯狂来反击。

这些读起来像是完全不同的电影:曾经是“犯罪策划者”的角色现在变成了“世界上最邪恶的超级坏蛋格鲁”;不再有“三个孤儿女孩”;第一部电影的剧情中没有“小黄人”。

尽管如今每个人都将《卑鄙的我》与“小黄人”联系起来,但这并不是电影刚上映时对其的描述和营销方式。“小黄人”在公众文化中确实非常受欢迎,这使得它们在**之后**成为营销的主要中心。嵌入模型根本没有所有这些上下文——这种上下文来自于在世上生活了十年,日复一日地积累而来。

即使剧情本身看起来不太相似,OpenAI 似乎也能关联三部《小黄人》电影。OpenAI 这样做的原因完全与它的模型训练方式有关。尽管如此,OpenAI 能够正确关联它们比 SentenceTransformers 未能发现它们之间的联系更令人惊讶。

© . All rights reserved.