基于内容的视频推荐的向量搜索 - Dailymotion 的 Gladys 和 Samuel
Demetrios Brinkmann
·2024 年 3 月 19 日

“我们选择的向量搜索引擎是 Qdrant,但为什么选择它?实际上,它满足了我们所有的负载约束和技术需求。它支持我们进行快速近邻搜索。它提供了与我们现有的推荐系统栈相匹配的 Python API。”
– Gladys Roch
Gladys Roch 是 Dailymotion 的一名法国机器学习工程师,负责视频内容的推荐系统。
“我们没有完全的控制权,而且他们的解决方案成本非常高,而提供的服务却很少。所以在那之后,我们尝试对其他解决方案进行基准测试,发现 Qdrant 对我们来说更容易实现。”
– Samuel Leonardo Gracio
Samuel Leonardo Gracio 是 Dailymotion 的高级机器学习工程师,主要负责推荐系统和视频分类。
在 Spotify、Apple Podcast、Podcast addicts、Castbox 上收听本期节目。您也可以在 YouTube 上观看本期节目。
主要收获
您是否被那些精心设计的、为您提供下一个值得一看的内容的视频推荐所吸引?我们当然是。
准备好揭开让数百万用户保持参与的秘密吧,Demetrios 将与 Dailymotion 幕后的智囊团进行交流。本期节目汇集了来自 Dailymotion 的机器学习工程师们的真知灼见,他们正在重塑我们在网上发现视频的方式。
从本期节目中,您将了解以下内容:
- 魔法背后的机制:了解强大的视频嵌入过程如何改变游戏规则——从文本元数据到音频信号以及更多。
- 多语言理解的力量:发现有助于向全球受众推荐视频、跨越语言障碍的工具。
- 打破回声室:了解 Dailymotion 正在改变用户发现体验的“视角”功能。
- 挑战与胜利:听听 Qdrant 如何帮助 Dailymotion 处理海量视频目录,并确保最新鲜的内容出现在您的推送中。
- Qdrant 幕后:了解 Dailymotion 将其推荐需求委托给 Qdrant 的强大能力(或者说算法?)的内部原因。
有趣的事实:您知道 Dailymotion 每天处理超过 1300 万次推荐吗?这相当于每天为整个希腊人口提供个性化视频播放列表!
节目笔记
00:00 Vector Space Talks 开场,Gladys 和 Samuel 介绍。
05:07 推荐系统需要向量搜索进行推荐。
09:29 选择向量搜索引擎以实现快速近邻搜索。
13:23 利用视频文字记录实现可扩展的多语言嵌入。
16:35 文字记录的优先级高于视频标题和标签。
17:46 根据元数据筛选视频以保证质量。
20:53 Qdrant 设置概述(面向机器学习工程师)。
25:25 增强的推荐系统提高了用户参与度。
29:36 推荐系统、A/B 测试、集合别名策略。
33:03 Dailymotion 新功能使视频视角多样化。
34:58 探索不同视角并排除特定主题。
Gladys 和 Sam 的更多引述
“基本上,我们计算嵌入,然后将它们馈送到 Qdrant 中,我们通过一个流式管道来完成此操作,这意味着每次有新视频上传或更新时(例如,如果描述发生变化),嵌入都会被计算出来,然后直接馈送到 Qdrant 中。”
– Gladys Roch
“我们基本上会向用户推荐其他观看相同视频的用户也观看过的视频。但问题是,这只适用于我们所说的‘高信号’视频。也就是说,那些至少有数千次观看次数和一些互动的视频,因为对于新鲜视频或小众视频,我们没有足够的互动数据。”
– Samuel Leonardo Gracio
“但是每次我们在 Dailymotion 添加新视频时,它就会增长。因此,它可以为那些互动次数很少、我们不熟悉的视频提供推荐。所以我们非常高兴,因为它极大地提高了我们针对低信号视频的性能。我们将点击率(CTR)提高了三倍,也就是推荐内容的点击次数。因此,通过 Qdrant,我们能够解决我们的冷启动问题。”
– Gladys Roch
“你们团队非常棒,在我们遇到困难时帮助我们实现了部分功能,我认为这绝对是让我们选择 Qdrant 而不是其他解决方案的原因。”
– Samuel Leonardo Gracio
文字记录
Demetrios:我不知道你们是否意识到自己参与了什么,但我们又回来了,进行另一期 Vector Space Talks。我的直播有点卡顿和慢,所以我想我们就直接开始,与来自 Dailymotion 的 Gladys 和 Samuel 聊聊。感谢两位加入我们。很荣幸能请到你们。对于正在观看的各位,请将你们的问题以及任何想评论的内容发到聊天区。我们很乐意与你们交流,如果有需要打断演讲并立即提问的地方,我会出现在屏幕上。但现在,我想你们都有一些屏幕分享要展示给我们看。
Samuel Leonardo Gracio:是的,没错。首先,当然非常感谢邀请。是的,我会分享我的屏幕。我们有一个演示文稿。太棒了。现在应该没问题了。
Demetrios:太好了。
Samuel Leonardo Gracio:那么我们可以开始了吗?
Demetrios:我很乐意。是的,我很兴奋。我想其他人也很兴奋。
Gladys Roch:大家好,欢迎来到我们的向量空间讲座。我是 Gladys Roch,Dailymotion 的机器学习工程师。
Samuel Leonardo Gracio:我是 Samuel,Dailymotion 的高级机器学习工程师。
Gladys Roch:今天我们将讨论在推荐背景下的向量搜索,特别是 Qdrant。这将是一个难点。实际上,我们习惯用法语的方式发音 Qdrant,所以在此演示过程中可能会有点卡顿,提前抱歉,Qdrant 以及我们如何将其用于基于内容的推荐器。所以我们首先会介绍背景以及为什么我们需要一个向量数据库,以及为什么我们选择了 Qdrant,我们如何适应 Qdrant,我们在其中放入了什么,并且我们会相当开放地分享我们建立的管道,然后我们会介绍结果以及 Qdrant 如何帮助我们解决了我们遇到的问题。
Samuel Leonardo Gracio:好的。首先,我将大致介绍一下 Dailymotion 的推荐系统。先快速介绍一下 Dailymotion,因为你们不都是法国人,所以可能不太了解 Dailymotion 是什么。我们是一个视频托管平台,像 YouTube 或 TikTok 一样,我们成立于 2005 年。所以它是一个老牌视频公司,我们每月有 4 亿独立用户。所以用户、视频和观看次数都非常多。这就是我们认为它很有趣的原因。Dailymotion 可以将产品分为三个部分。
Samuel Leonardo Gracio:一部分是原生应用。正如您所见,它与其他应用如 TikTok 或 Instagram reels 非常相似。您可以看到竖屏视频,只需滑动即可。我们还有一个网站,即 Dailymotion.com,这是我们的主要产品,历史产品。在这个网站上,您会有一个观看页面,比如您在 YouTube 上看到的。我们也是一个视频播放器,您可以在大多数法国网站甚至其他国家找到它。因此,我们的推荐系统几乎无处不在,并且针对每种产品都有不同的推荐器。
Gladys Roch:好的,这就是 Dailymotion。但今天我们将重点介绍我们的一个推荐系统。实际上,机器学习工程师团队负责多个推荐系统。但视频到视频的推荐是最古老、使用最广泛的。也就是您在屏幕上看到的,您在观看视频旁边或下方看到的视频推荐队列。为了计算这些建议,我们运行着多个模型。这就是为什么它是一个全局系统。这种推荐对于 Dailymotion 来说非常重要。
Gladys Roch:它实际上是一个关键组成部分。它是吸引受众的主要手段之一。所以对于通过 SEO 或其他方式访问网站的用户来说,这就是我们如何产生更多受众和更多互动的方式。因此,它在平台的收入流中非常重要。所以在这方面的工作绝对是团队的一个主要课题,这就是为什么我们一直在不断发展这方面的工作。
Samuel Leonardo Gracio:好的,那为什么我们需要向量搜索来进行这种推荐呢?我想我们在这里就是为了讨论这个。和许多平台以及推荐系统一样,我认为我们采用了一种非常常见的方法,基于协同过滤模型。所以我们基本上会向用户推荐其他观看相同视频的用户也观看过的视频。但问题是,这只适用于我们所说的“高信号”视频。也就是说,那些至少有数千次观看次数和一些互动的视频,因为对于新鲜视频或小众视频,我们没有足够的互动数据。而且我们面临一个我认为所有推荐系统都可能遇到的问题,那就是冷启动问题。这个冷启动问题实际上是针对新用户和新视频的。所以如果我们没有任何信息或互动数据,就很难基于这种协同过滤方法进行任何推荐。
Samuel Leonardo Gracio:所以解决这个问题的想法是使用基于内容的推荐。这同样是一个经典的解决方案。其思想是,当你有一个非常新的视频时。例如,在这种情况下,当你没有足够的信息时,推荐一个非常相似的视频,并希望用户也会观看它,这是一个好方法。为此,我们当然使用了 Qdrant,稍后我们会解释如何使用。所以,是的,想法是将所有东西都放入向量空间。Dailymotion 的每个视频都将经过嵌入模型处理。所以对于每个视频,我们都会获得一个视频嵌入。
Samuel Leonardo Gracio:稍后我们会描述如何实现,并将其放入向量空间。然后我们就可以使用 Qdrant,抱歉,使用 Qdrant 进行查询,并获取我们将推荐给用户的相似视频。
Gladys Roch:好的,所以如果我们有用于表示视频的嵌入,那么我们就拥有了一个向量空间,但我们需要能够查询这个向量空间,而且不仅要查询,还要大规模地、在线地进行,因为它是一个面向用户的推荐系统。所以我们有一些要求。首先是我们的目录中有大量视频。因此,进行精确的近邻搜索是不合理的、不切实际的。这是一个组合爆炸问题,所以我们无法进行精确的 Knn。此外,每天每小时都有新视频上传到 Dailymotion。所以如果我们可以设法进行 KNN 并进行预计算,它将永远不会是最新的,而且为了包含所有新视频而不断重新计算将非常昂贵。所以我们需要一个能够持续集成新视频的解决方案。
Gladys Roch:而且我们也在大规模运行,每天提供超过 1300 万次推荐。这意味着我们需要一个庞大的设置来全天候检索许多视频的近邻。最后,用户正在等待推荐。所以它不仅仅是预先计算和存储的,也不仅仅是内容知识。我们正在努力尽快提供推荐。所以我们有时间限制,只有几百毫秒的时间来计算我们将要向用户展示的推荐。因此,我们需要能够非常快速地检索我们想要向用户推荐的相似视频。所以我们需要能够相当快速地浏览我们正在构建的这个向量空间。
Gladys Roch:所以我们当然需要向量搜索引擎。这是最简单的方法,能够计算近似近邻搜索并大规模进行。所以显而易见,我们选择的向量搜索引擎是 Qdrant,但为什么我们选择它呢?实际上,它满足了我们所有的负载约束和技术需求。它支持我们进行快速近邻搜索。它提供了与我们现有的推荐系统栈相匹配的 Python API。对我们来说一个非常重要的问题是,不仅能够将向量嵌入放入这个空间,还能够附带元数据,以便获取更多信息,而不仅仅是视频在这个数据库中的数学表示。这样做实际上使其具有过滤功能,这意味着我们可以在给定某些约束条件的情况下检索视频的近邻,这对我们来说非常重要,特别是语言约束。Samuel 稍后会更详细地讲解这一点。
Gladys Roch:但我们拥有一个多语言嵌入模型,我们需要能够根据语言过滤所有视频,以便为用户提供更可靠的推荐。此外,Qdrant 是分布式的,因此具有可扩展性,考虑到我刚刚提到的负载,这是我们所需要的。这些是促使我们选择 Qdrant 的主要原因。
Samuel Leonardo Gracio:而且他们还有一个很棒的团队。
Gladys Roch:所以这是另一个,这是我们的经验分享。Qdrant 的团队非常好。你们实际上帮助我们搭建了集群。
Samuel Leonardo Gracio:好的。那么我们在 Qdrant 集群中放入了什么呢?我们如何构建强大的视频嵌入?我认为这非常有趣。所以对我们来说第一点是要知道视频是关于什么的。实际上,这是一个非常棘手的问题。当然,对于上传到平台上的每个视频,我们都有视频信号,也就是许多帧来表示视频,但我们不将它们用于我们的嵌入。实际上,我们不使用它们的原因是它包含了大量信息。没错,但不是我们想要的。例如,这里有一个关于勒布朗·詹姆斯采访的视频。
Samuel Leonardo Gracio:但是如果你只使用帧,也就是视频信号,你甚至无法知道他在说什么,视频实际上是关于什么的。所以我们仍然尝试使用它。但实际上,表示我们视频最有趣的是文本元数据。文本元数据是每个视频都拥有的。所以对于上传到平台上的每个视频,我们都有视频标题和视频描述,这些是由上传视频的人添加的。但我们也有自动检测的标签。例如,对于这个视频,你可能有勒布朗·詹姆斯,我们也有自动生成的字幕。告诉你一下,我们是使用 Whisper 来做这件事的,它是 OpenAI 提供的一个开源解决方案,我们正在大规模应用。
Samuel Leonardo Gracio:视频上传后,我们直接就能拿到视频文字记录,然后就可以利用这些信息,仅凭文本嵌入来表示我们的视频,这处理起来容易得多,所需的计算量也比处理帧少。对我们来说另一个问题是,我们需要一个可以扩展的嵌入模型,计算时间不能太长,因为我们有很多视频,超过 4 亿个,而且每小时都有大量视频上传,所以它需要能够扩展。我们的平台上也有很多语言,视频中使用了 300 多种语言。尽管我们是法国视频平台,实际上只有三分之一的视频是法语的。大多数视频都是英语或其他语言,比如土耳其语、西班牙语、阿拉伯语等。所以我们需要一个多语言的模型,这并不容易找到。但我们找到了这个嵌入模型,叫做 multilingual universal sentence encoder。它不是最知名的嵌入模型,所以我觉得分享一下很有趣。
Samuel Leonardo Gracio:它是开源的,所以大家都可以使用。它可以在 Tensorflow Hub 上找到,我想现在在 Hugging Face 上也可以找到,所以很容易实现和使用。好处是它是预训练的,所以你甚至不需要在自己的数据上进行微调。你可以,但我觉得这甚至不是必需的。当然它是多语言的,所以它并非适用于所有语言。但它包含了我们平台上使用的主要语言。它侧重于语义相似性。这里有一个例子,当你看到不同的视频标题时。
Samuel Leonardo Gracio:例如,一个关于足球,另一个关于电影。即使您有另一个语言的视频标题,如果它们讨论的是同一个主题,它们也会有很高的余弦相似度。这就是我们想要的。我们希望能够推荐我们目录中的所有视频,而不受语言限制。好处是它非常快。实际上,它在 CPU 上只需要几毫秒,所以非常容易扩展。这对我们来说是一个巨大的需求。
Demetrios:我们可以在这里插话吗?
Demetrios:有几个问题来了,我觉得很有价值。而且实际上可能更适合上一张幻灯片。Sameer 问的是这个问题,实际上再回退一张。抱歉,就是 LeBron 那张。是的,所以这实际上是关于你们如何理解视频的。Sameer 想知道是否可以通过添加一些其他标签来“黑掉”理解。
Samuel Leonardo Gracio:啊,您是说从用户的角度,比如上传视频的人,对吗?
Demetrios:是的,没错。
Samuel Leonardo Gracio:在使用文字记录之前你可以那样做,但既然我们主要使用文字记录并且只使用标题,那么标签是自动生成的。所以这是在我们这边。所以标题和描述,你可以随意填写。但是既然我们有文字记录,我们就知道视频的内容并将其嵌入。所以标题和描述在嵌入中的优先级不高。所以我认为这仍然可能,但我们没有这样的用例。事实上,大多数上传视频的人只是试图起一个正确的标题,但我认为这仍然可能。但是,是的,有了文字记录,我们就没有那样的例子了。
Samuel Leonardo Gracio:是的,希望如此。
Demetrios:考虑一下这个问题也很棒。这有点引出了下一个问题,这个问题来自 Juan Pablo。对于没有文本、也没有有意义音频的视频,比如 TikTok 或短视频,你们会怎么处理?
Samuel Leonardo Gracio:目前,对于这些视频,我们只使用标题标签、描述和其他视频元数据中的信号。我们还有一个审核团队,负责审查这里主要推荐视频中的视频。所以我们知道我们推荐的视频大多是优质视频。对于这些没有音频信号的视频,我们不得不使用标题标签和描述。所以这些视频目前对我们来说风险最大。但我们目前也正在研究使用音频信号和帧(但不是所有帧)的方法。但目前,我们还没有这个解决方案。没错。
Gladys Roch:另外,正如我所说的,它不仅仅是一个模型,我们讨论的是基于内容的模型。但如果我们的相似度得分不够高,或者我们对最相似的视频不够自信,那么我们会默认使用另一个模型。所以它不仅仅是一个,它是一个庞大的系统。
Samuel Leonardo Gracio:是的,还有一点,我们谈论的是互动量少的视频,所以它们并非高风险视频。我的意思是,它们的观看次数不多。当调用这个基于内容的算法时,它们很重要,因为它们是非常新的视频,而新视频在几分钟内就会获得大量观看次数。但是当协同过滤模型重新训练后,它就可以基于内容本身以外的其他信息来推荐视频,而是使用协同信号。所以我不确定这是否对我们来说是一个真正重要的风险。但是,我认为我们仍然可以在这方面做一些改进。
Demetrios:那么我应该在哪里申请,才能整天看视频,加入内容团队呢?好吧,我让你们继续。不好意思打断了。如果其他人有好的问题。
Samuel Leonardo Gracio:而且我认为在演示过程中提问是很好的,这样更容易回答。所以,是的,抱歉,我刚才提到我们有多语言嵌入,现在向大家介绍一下我们的嵌入管道。对于每个上传或编辑的视频,因为你可以随时更改视频标题,我们都会向数据流管道发送一个发布订阅事件。这是一个流处理任务,对于每个视频,我们将检索文本元数据、标题、描述标签或文字记录,进行预处理以删除一些词(例如),然后调用模型来生成嵌入。然后。我们将它放入 BigQuery,当然,但也放入 Qdrant。
Gladys Roch:所以接下来我将稍微介绍一下我们的 Qdrant 设置。实际上,所有这些都是由我们的运维团队部署的,而不是我们机器学习工程师。所以这是一个概述,我不会深入细节,因为我对所有这些不太熟悉,但基本上,正如 Samuel 所说,我们计算嵌入,然后将它们输入到 Qdrant 中,我们通过流式管道来完成这个过程,这意味着每次有新视频上传或更新时,一切都是流式的,例如如果描述发生变化,那么嵌入就会被计算出来,然后直接输入到 Qdrant 中。另一方面,我们的推荐系统通过 GrPC 入口查询 Qdrant 向量空间。实际上,Qdrant 运行在六个使用 ARM 节点的 Pod 上。如果您感兴趣,这里有我们使用的节点类型的具体信息。但基本上设置就是这样。有趣的是,我们目前的推荐栈是在本地部署的,这意味着它运行在 Dailymotion 的服务器上,而不是 Google Kubernetes Engine 上,而 Qdrant 运行在 TKE 上。
Gladys Roch:所以我们是从外部查询它。如果您对此设置有更多问题,我们很乐意将您引导至帮助我们完成设置的运维团队。最后是结果。我们之前提到过我们有冷启动问题。所以在 Qdrant 之前,我们在处理这个挑战时遇到了很多困难。我们有一个协同推荐系统,它在互动量高的视频上训练并表现非常好,也就是说那些互动量大的视频。因此我们可以看到用户喜欢看什么,以及他们喜欢一起看哪些视频。我们还有一个元数据推荐系统。
Gladys Roch:但首先,这个协同推荐系统实际上也被用来计算冷启动推荐,这并不是它被训练用来做的事情,但我们当时使用了一个默认嵌入来计算冷启动的默认推荐,这导致了很多流行度问题。推荐系统的流行度问题是指你总是推荐同一个非常受欢迎的视频,这就像一个反馈循环。很多人会默认选择这个视频,因为它可能是标题党,然后我们就会有很多互动行为。所以这会再次污染协同模型。所以我们显然存在流行度问题。而且我们还有一个元数据推荐系统,它只关注非常小的受信任所有者和受信任视频源范围。所以它是有效的。它是一个自动编码器,效果也不错,但范围太小了。
Gladys Roch:通过这个模型可以推荐的视频太少了。而且这两个模型训练频率非常低,每 4 小时和 5 小时才训练一次,这意味着平台上的任何新视频在长达 4 小时内都无法得到妥善推荐。所以这是主要问题,因为 Dailymotion 依赖大量新视频,我们有很多新闻等等。所以我们需要紧跟时事,而如此大的延迟是无法做到的。因此,我们在低信号视频上的整体表现不佳。通过 Qdrant,我们解决了这个问题。我们仍然保留了协同推荐系统。自那时起,它已经进化了。
Gladys Roch:实际上它的计算频率高了很多,但协同模型现在只关注高信号视频,并且不再像以前那样为它不了解的低信号视频计算默认推荐。我们有一个基于 Muse 嵌入和 Qdrant 的内容推荐系统,它能够在新视频上传到平台后立即为用户推荐。它的范围正在不断扩大,目前有 2000 万个向量。但是每次我们在 Dailymotion 添加新视频时,它就会增长。因此,它可以为那些互动次数很少、我们不熟悉的视频提供推荐。所以我们非常高兴,因为它极大地提高了我们针对低信号视频的性能。我们将点击率(CTR)提高了三倍,也就是推荐内容的点击次数。因此,通过 Qdrant,我们能够解决我们的冷启动问题。
Gladys Roch:我之前提到的新视频、流行度、低性能问题。我们解决了这些问题,并且对这个设置非常满意。它运行得很顺利。是的,我认为这就是本次演示的全部内容,至少是幻灯片的内容。我们欢迎讨论,如果您对推荐系统的细节有任何问题,请尽管提问。
Demetrios:在大家在聊天区输入问题时,我有一些问题要问。我认为我们首先应该讨论的问题是,当你们评估不同的向量数据库和向量搜索引擎时,评估过程是怎样的?
Samuel Leonardo Gracio:这是一个好问题。首先,您需要知道我们使用的是 Google Cloud Platform。所以我们做的第一件事就是使用他们的向量搜索引擎,叫做 Matching Engine。
Gladys Roch:没错。
Samuel Leonardo Gracio:但是 Matching Engine 的问题是,我们实际上无法添加 API,而且不好用。这是第一点。第二点是,我们无法像在 Qdrant 中那样添加元数据,并在查询之前进行过滤,就像我们现在在 Qdrant 中做的那样。第三点是,他们的解决方案是托管的。是的,是托管的。我们没有完全的控制权,最终他们的解决方案成本非常高,而提供的服务却很少。所以在那之后,我们尝试对其他解决方案进行基准测试,发现 Qdrant 对我们来说更容易实现。
Samuel Leonardo Gracio:他们的文档非常棒,所以很容易测试一些东西,而且基本上我们至少在我们用例中没有发现任何缺点。
Gladys Roch:此外,你们团队非常棒,在我们遇到困难时帮助我们实现了部分功能,我认为这绝对是让我们选择 Qdrant 而不是其他解决方案的原因。
Demetrios:太棒了。那使用 Qdrant 有什么最不满意的地方吗?
Gladys Roch:是的,我有一个。我发现它一开始并不是一个需求,但对于推荐系统,我们倾向于进行大量的 A/B 测试。您可能会想,Qdrant 和 A/B 测试有什么关系呢?它们不是直接相关的,但实际上我们能够对我们的集合进行 A/B 测试。那么我们是如何计算嵌入的呢?一开始我们没有文字记录的嵌入,现在我们有了包含文字记录的嵌入。所以我们想进行 A/B 测试。在 Qdrant 中,您可以设置集合别名,这非常有帮助,因为您可以同时在集群上拥有两个集合,然后在代码中您只需调用生产集合,然后将别名设置为正确的那个。所以对于 A/B 测试和发布来说非常有用。
Gladys Roch:我第一次想做 A/B 测试时就发现了这个功能。所以我很喜欢它。它已经存在了,我也喜欢它。我喜欢的第二件事是 API 文档,就像那个自动生成的,包含所有示例以及如何在 Qdrant 上查询任何信息的文档。对于不是 DevOps 出身的人来说,这真的很好。它帮助我们随时调试我们的集合。所以非常容易上手。
Samuel Leonardo Gracio:而且产品发展得非常快,几乎每周都有新功能。你有一个新的数据源。我觉得这真的很酷。有一个社区,而且我认为,是的,这真的很有趣,而且很高兴有这样的人在一个像 Qdrant 这样的开源项目上工作。
Gladys Roch:我们在准备这次演讲时,得到了我们运维团队的反馈。我们向他们请教了我尝试展示的那个简单架构图。他们说 Qdrant 的开源社区非常好。贡献很容易,他们在 Discord 上非常开放。我想我们之前做过一次关于如何搭建集群的经验分享。而且,他们对它用 Rust 编写感到非常兴奋。我不知道你们是否经常听到这个,但对他们来说,用这种新语言贡献更有激励性。
Demetrios:100% 太棒了。那么我最后一个问题是,你们在 Dailymotion 的产品中,是否还将 Qdrant 用于其他方面?是的,实际上我们在用。
Samuel Leonardo Gracio:我有一张幻灯片关于这个。
Gladys Roch:我们有幻灯片是因为几周前我们在另一个讲座中展示了 Qdrant。
Samuel Leonardo Gracio:所以这张幻灯片不是专门为这次演示准备的,它是来自另一个演示文稿,但仍然,这是一个很好的点,因为我们目前正在尝试在其他项目中使用它。正如我们在本次演示中提到的,我们主要将它用于观看页面。也就是 Dailymotion.com,但我们最近也通过一个叫做“视角”的功能将其引入了移动应用。这个功能的目的是打破这种竖屏信息流算法,让用户有一个按钮来发现新视频。所以当你浏览你的信息流时,有时你会看到一个视频谈论,我不知道,一部电影。你会看到这个叫做“视角”的按钮,然后你将能够看到其他谈论同一部电影但提供不同观点的视频。比如喜欢这部电影的人,不喜欢这部电影的人,我们在候选项生成部分使用了 Qdrant,抱歉。所以是为了获取相似视频和讨论同一主题的视频。
Samuel Leonardo Gracio:所以我不会过多谈论这个项目,因为它需要另外一个 20 分钟或更长时间的演示。但我们仍然在其他项目中使用它,是的,看到我们可以用这个工具做什么真的很有趣。
Gladys Roch:一旦我们设置好了向量空间,就可以在任何地方查询它了。在每个推荐项目中都可以。
Samuel Leonardo Gracio:我们还测试了一些搜索功能。我们实际上正在测试很多东西,但还没有实现。目前我们只有这个“视角”信息流和基于内容的推荐系统,但我们还有很多利用这个向量搜索空间的想法。
Demetrios:我很喜欢“获取另一个视角”这个想法。这样一来,就像你之前提到的,你就不会陷入回声室,听到每个人都在说同样的话。你可以看到这件事是否还有其他方面?我能理解这会非常……Juan Pablo 又回来了,在聊天中提问,问你们是否能够使用负面搜索查询来推荐视频,负面的意思是,例如,作为用户,我想看某个主题的视频,但我想从视频中排除某些主题。
Gladys Roch:好的。目前我们还没有这样做,但我们知道使用 Qdrant 可以设置正负查询点。所以实际上,目前我们只检索接近的正向近邻,并在推荐结果上应用一些业务过滤器。仅此而已。
Samuel Leonardo Gracio:那是因为我们还有一个协同模型,它是我们的主要推荐系统。但我认为我们肯定需要研究一下这一点,也许将来会实现。我们看到了许多关于这方面的文档,我很有信心它在我们的用例中会表现得非常好。
Demetrios:太棒了。各位,我想今天就到这里了。非常感谢你们前来与我们交流,并向我们介绍了你们如何使用 Qdrant,以及如此坦诚地分享你们的使用经验。我学到了很多。对于那些从事推荐系统工作并对此感兴趣的朋友,我想他们可以在 LinkedIn 上与你们联系。我已经拿到了你们两位的联系方式,现在就发到聊天区,让大家随意交流。所以不要迷失在向量空间中。我们下次见!
Demetrios:如果有人想下次做演讲,请联系我。我们一直在寻找精彩的演讲,所以这次非常棒。谢谢大家。
Gladys Roch:谢谢。
Samuel Leonardo Gracio:非常感谢邀请,也感谢所有聆听的人。谢谢。
Gladys Roch:再见。拜拜。