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

要查找嵌入向量与特定电影相似的电影,请先检索该电影并将其嵌入向量传递给 Cypher 子句 SEARCH

MATCH (minion:Movie {title: 'Despicable Me'})
MATCH (movie:Movie)
  SEARCH movie IN (
    VECTOR INDEX moviePlots
    FOR minion.embedding
    LIMIT 5
  ) SCORE AS similarityScore
RETURN movie.title AS title, movie.plot AS plot, similarityScore
使用 OpenAI 嵌入的结果
标题 剧情简介 score

"Despicable Me"

"当一个犯罪天才将一组三名孤儿女孩作为大计划的棋子时,他发现她们的爱深刻地改变了他,使他变得更好。"

1.0

"Despicable Me 2"

"当格鲁,这个曾是世界上最超级坏的坏蛋如今成为超级爸爸,被一支官员团队招募去阻止致命的肌肉和格鲁自己的伙伴时,他必须使用新装备、汽车以及更多的小黄人疯狂来反击。"

0.940204381942749

"Minions"

"小黄人斯图亚特、凯文和鲍勃被超级恶棍斯嘉丽·欧弗基尔招募,后者与她的发明家丈夫赫伯共同策划一场夺取世界统治的阴谋。"

0.9329936504364014

"Aladdin"

"当一个街头流浪儿争取美丽公主的爱情时,他利用精灵的魔法力量伪装成王子,以便与她结婚。"

0.9291699528694153

"Megamind"

"超级恶棍梅加迈因终于击败了宿敌超级英雄大都会人。但失去英雄后,他失去了所有目的,必须寻找新的人生意义。"

0.9292264580726624

使用 SentenceTransformers 嵌入的结果
标题 剧情简介 score

"Despicable Me"

"当一个犯罪天才将一组三名孤儿女孩作为大计划的棋子时,他发现她们的爱深刻地改变了他,使他变得更好。"

1.0

"Love the Hard Way"

"一个小偷与一位纯真的年轻女子相遇,并把她带入自己的犯罪世界,同时她教会他享受生活和被爱的重要课题。"

0.7806928157806396

"Limits of Control, The"

"一位神秘的孤独者,在执行犯罪任务的过程中,成为陌生人的故事。"

0.7746935486793518

"Half Baked"

"三个不太聪明的男人想出一连串疯狂的计划,以帮助朋友脱离监狱。"

0.7708940505981445

"The Man from Nowhere"

"一位有暴力过去的沉默当铺老板,为了拯救唯一的朋友——一个孩子,决心对抗毒品和器官贩运集团。"

0.7698113918304443

检索匹配搜索提示的节点时,OpenAI 和 SentenceTransformers 的结果并没有太大差别。另一方面,在上面的例子中它们表现得截然不同:OpenAI 能够关联这三部小黄人电影,而 SentenceTransformers 的结果中没有出现 Despicable Me 2Minions

为什么使用 SentenceTransformers 嵌入时,Despicable Me 2 没有出现在与 Despicable Me 最相近的前五部电影中?既然嵌入是基于标题和剧情生成的,让我们来看一下两部电影的剧情是如何关联的。

Despicable Me 剧情

当一个犯罪天才将一组三名孤儿女孩作为大计划的棋子时,他发现她们的爱深刻地改变了他,使他变得更好。

Despicable Me 2 剧情

当格鲁,这个曾是世界上最超级坏的坏蛋如今成为超级爸爸,被一支官员团队招募去阻止致命的肌肉和格鲁自己的伙伴时,他必须使用新装备、汽车以及更多的小黄人疯狂来反击。

这些看起来像完全不同的电影:原本的犯罪天才现在变成了格鲁,世界上最超级坏的坏蛋;不再有三名孤儿女孩;第一部电影的剧情中根本没有出现小黄人

虽然如今每个人都把Despicable Me小黄人联系在一起,但这并非该电影最初上映时的描述和营销方式。小黄人在公众文化中非常受欢迎,这使得它们在之后成为营销的核心。嵌入模型显然没有这些背景——这些背景来自于十年来每天的生活体验。

OpenAI 能够关联这三部小黄人电影,即使它们的剧情本身并不十分相似。这种表现完全取决于其模型的训练方式。不过,令人更惊讶的是 OpenAI 能正确关联,而 SentenceTransformers 却未能看到它们之间的联系。